100 Antworten und Fragen in einer Datenbank

Suppi

Aktives Mitglied
Hallo

Ich habe ein Formular mit 100 vorgegebenen Fragen. Angemeldete Besucher können die Fragen beantworten. Einzelne Fragen unterscheiden sich ja nach Geschlecht des Besuchers. Deshalb hab ich eine Tabelle mit den jeweiligen Fragen:

tabelle question
Feldname: geschlecht, question_1, question_2, question_3, ... , question_100
Datensatz: w, Frage 1, Frage 2, ... Frage 100
Datensatz: m, Frage 1, Frage 2, ... Frage 100

und dann in einer neuen Tabelle die Antworten

tabelle answer
Feldname: user_id, answer_1, answer_2, answer_3, ... , answer_100
Daten: 1, antwort 1, antwort 2, ... antwort100


Wird das Formular abgesendet, werden die Antworten gespeichert

CODE

$AnzahlFragen = 100;
if($_POST['speichern'])
{
for($count = 1; $count <= $AnzahlFragen; $count++)
{
$eintrag = "UPDATE answer SET answer_" .$count. " = '".$_POST['vip_'.$count.'']."' WHERE uid = '$ID'");
$eintragen = mysql_query($eintrag) or die(mysql_error());
}
}



Irgendwie gefällt mir das ganze nicht, hab aber keine andere Möglichkeit gefunden, die Antworten/Fragen in der Datenbank abzulegen. Ausserdem wird ja das Update-Statement 100 Mal ausgeführt.

Vielleicht hat ja jemand eine Idee, wie man das etwas eleganter / einfacher lösen könnte?
 
??
also wenn der User die fragen erneut ausfüllt und wenn er dabei alle 100 Fragen beantwortet, dann sollen die Daten neu gespeichert werden?

und dem Fall würde ich kein Update machen,
sondern,
lösche einfach den Datensatz mit der entsprechenden USerid
und schreib danach die neuen Daten !
das sind dann auch nur zwei SQL Anfragen.

 
Wahrscheinlich ist die UserID aber auto_increment. Wenn man dann den Datensatz löscht und anschließend einen neuen einfügt, ändert sich also die ID...

So wird nur ein Update ausgeführt.

CODE

$AnzahlFragen = 100;
if($_POST['speichern'])
{

for($count = 1; $count <= $AnzahlFragen; $count++)
{

if ('1' == $count) {
$Query = "Update answer SET answer_1 = $_POST['vip_'.$count.'']";
} else {
$Query .= ", answer_1 = $_POST['vip_'.$count.'']";
}
}
$Query .= " WHERE uid = '$UID'";
$eintragen = mysql_query($Query) or die(mysql_error());
}


 
QUOTE also wenn der User die fragen erneut ausfüllt und wenn er dabei alle 100 Fragen beantwortet, dann sollen die Daten neu gespeichert werden?


Nicht ganz, alle 100 Antworten müssen beim Absenden des Formulars gespeichert werden. Denn es kann ja sein, dass jemand erstmal nur einige Fragen beantwortet und beim nächsten Besuch den Rest ausfüllt.

UserID ist nicht auto_increment. Der Code von Moritz gefällt mir :)
Aber findet Ihr das Datenbankdesing ist i.O. so?


 
Zurück
Oben