Code aus MySQL Datenbank holen!

hallo!

wie ihr vielleich ja schon wisst bastle ich an einer online-umfrage.

mit der umfrage selbst bin ich jetzt fast fertig. jetzt habe ich nur noch eine frage zum versenden des links an die umfrage-teilnehmer.

dieser wird ungefähr so aussehen: http://abcd.abcd.abcd.at/umfrage.php?key=G9nEB

den key habe ich in meiner mysql datenbank gespeichert. wie mache ich es jetzt datenbankmäßig am einfachsten, dass wenn ich an einen kunden den link von oben verschicke, dieser füllt den fragebogen aus und klickt auf absenden.

meine 1. frage: wie kann ich feststellen ob dieser link mit dem key hinten dran überhaupt funktioniert? kann man den link so per mail verschicken bzw. kann der kunde dann so den fragebogen einfach öffnen?

  1. frage: wie kann ich dann über die datenbank feststellen, dass jede umfrage (jeder key) nur ein mal ausgefüllt werden darf?

lg Manuel

Hallo Manuel,

zu 1) ja (wenn man es die Mail richtig erstellt)
zu 2) warum speicherst Du den Abschluß der Umfrage nicht in der Datenbank ab und fragst beim Start der Umfrage nach diesen Status ab und verweigerst entsprechend den Start?

MfG Georg V.

P.S.: „richtig“: Achte besonders darauf, dass in der Mail kein Umbruch im Link erscheint (also möglich kurze Länge des Links)

zu 2. wie meinst du mit speichern des Abschlusses und danach Statusabfrage? Das wollte ich ja genau wissen wie das mit so einem Link funktioniert?

lg Manuel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi

Also wenn ich mir das Problem so angucke brauchst du 3 Tabellen in deiner Umfrage (wenn diese alle mit einem Textfeld beantwortet werden. Wenn du sie per Checkbox beantworten lassen wollen würdest oder Radiobuttons dann würde noch eine 4. Tabelle quest_answers hinzugkommen):

  1. Tabelle quest

  2. Tabelle answer

  3. Tabelle user

  4. Tabelle quest
    Hier kommen alle Fragen rein die du an deine Teilnehmer stellen willst.
    Aufbau:
    Frage varchar(255)
    id tinyint (tinyint nur wenn es weniger als 255 Fragen sind) primärschlüssel

  5. Tabelle answer
    userID int(11)
    questID int (11)
    answer varchar (255)

hallo

die tabellen habe ich alles ziemlich genau so angelegt, wie du es geschrieben hast, das einzige was eben noch fehlt ist das:

userUmfrageComplete enum (‚yes‘, ‚no‘), standard (‚no‘)

welche abfrage muss ich dazu in meinen php code einbauen um zu überprüfen ob der key schon verwendet wurde?

lg Manuel

Hi …

auf der ersten seite bekommst du ja den key per Get

Also kannst du hingehen und abfragen
‚SELECT userUmfrageComplete FROM user WHERE userKey = "‘ . mysql_real_escape_string($_GET[‚key‘]) . ‚"‘;

dort kommt dann Yes oder no raus … bei no hat er die Fragen noch nicht beantwortet bei yes schon also geht es weiter mit:

switch ( $row['userUmfrageComplete']) {
 case 'no': 
 break;
 case 'yes': 

default: die('Du hast die Umfrage schon gemacht');
}

schon hast du ihn abgebrochen wenn er versucht es noch mal auszufüllen.

natürlich darfst du nicht vergessen, wenn er die Umfrage beantwortet hat seinen ‚userUmfrageComplete‘ wert auf ‚yes‘ zu setzen. Bedeutet ein query wie folgt:
‚UPDATE user SET userUmfrageComplete=„yes“ WHERE userKey="‘ . mysql_real_escape_string($_GET[‚key‘]) . ‚"‘;

Wenn du natürlich auf einer weiteren seite bist hast du den Get wert von key nicht mehr. Den würd ich in eine Session schreiben um ihn immer zur hand zu haben oder ihn im formular immer mit geben. Wobei es dann sicherheitsrelevant sein kann, da den der User jederzeit ändern kann und dann kommt dein script durcheinander. Da aber eh einige Sicherheitsprobleme auftreten dürften bei deinem Script geh ich mal nicht davon aus das dies so wichtig ist.

Gruß Lamer

1 Like