mehrere daten aus einem Formaular auslesen

Sacool

Grünschnabel
hallo
ich habe ein einzeiliges text-Formular gemacht mit einer dynamischen namens vergebung. das formular schicke ich dann an eine andere Datei.
Wie kann ich sowohl den Inhalt des Text-Formulars als auch den namen auslesen


Zur Erklärung:
Ich versuche gerade ein Vokabelabfrage script zu erstellen. es werden 15 vokabeln(Fragen) mit rand() aus einer Datenbank (hat die Spalten "Frage", "Antwort", "ID") ausgelesen. Neben jeder Vokabel ist ein Textfeld, wo der User die Antwort reinschreiben soll. Die Textfelder haben jeweils als namen die dazugehörige ID.
Nun werden die eingetragen Antworten des User an ein anderes Script übergeben, wo sie ausgewerten werden sollen. Aber ich muss, um die Antwort des Users mit der Antwort in der Datenbak vergleichen zu können, zusätzlich auch noch die ID kennen, die ja auch gleichzeitig der name der Userantwort ist.
Wie kann ich also sowohl die ID als auch die Antwort des Users aus dem Formular auslesen
 
Du kannst doch die ID per Hidden-Feld übergeben und den Text per Text-Feld. Wo ist also genau dein Problem?

Mit freundlichem Gruß
der_maiki
 
ich lese 15 von sagen wir mal 40 vokabeln aus einer datenbank per zufallsprinzip (rand()) aus. das mache ich in einer while schleife.
wie soll der PHP dann das richtige Hidden-Feld dem richtigen Textfeld zuordnen

also der code für die schleife lautet:
PHP:
echo "<form action=\"index.php?TopicID=".$_GET['TopicID']."&action=correction\" method=\"post\">\n";
while ($row = mysql_fetch_assoc($result)) {
         echo $row['question']." &nbsp; &nbsp; <input  type= \"text\" name=\"".$row['vokID']."\" length=\"200\"><br>\n";
}
echo "<input type=\"submit\" value=\"Vokabeln senden\">\n";
echo "</form><br>\n";
 
Achso,
du kannst doch einfach das assoziative Array $_POST[] beispielsweise mit foreach() auslesen und dann mit den Ergebnissen vergleichen. Denn da kannst du sowohl den Key als auch den Wert auswerten.

Mit freundlichem Gruß
der_maiki
 
Bei folgendem Code wird das Hiddenfeld immer hinter das Textfeld gesetzt, es heisst dann vokabel1, vokabel2 ... dann kannst du die ID einfach auslesen...

Code:
echo "<form action=\"index.php?TopicID=".$_GET['TopicID']."&action=correction\" method=\"post\">\n";
$i = 0; 
while ($row = mysql_fetch_assoc($result)) { 
		 $i++;
         echo $row['question']." &nbsp; &nbsp; <input  type= \"text\" name=\"".$row['vokID']."\" length=\"200\"><br>\n";
		 echo "<input type=\"hidden\" name=\"vokabel".$i."\" value=\"".$row['vokID']."\">";
} 
echo "<input type=\"submit\" value=\"Vokabeln senden\">\n"; 
echo "</form><br>\n";

Hoffe dies hilft,
Sven

P.S.: Ist natürlich nur für begrenzte Daten möglich, wenn du mehr als 20 vokablen abfragst wird dein skript so vielleicht zuviel Zeit nehmen...
 
ich habe es jetzt mal mit foreach() probiert.
nun kommt diese Fehlermeldung
Code:
Warning: Invalid argument supplied for foreach() in /srv/www/web2/html/php/vokabeln/index.php on line 21
in zeile 21-23 steht
PHP:
     foreach($_POST[] as $key => $wert){
   echo "Die Frage: \"".$wert."\" hat die ID=".$key.".<br />\n";
}
 
Zurück