Werte werden nicht übergeben
Christian Gamsjäger
- php
Hy Leute,
hab ein kleines Problem auf das ich einfach nicht komme.
Ich habe ein Anfrageformular, wo nach der Anzahl der Kinder gefragt wird. Wenn man nun auf Abschicken geht, soll wenn Felder fehlen eine "Nachfrageseite" kommen, wo die fehlenden Felder abgefragt werden UND wo nun - je nach Kinderanzahl - zusätzliche Fleder erscheinen.
In diese Felder sollen nun die Altersangaben eingegeben werden.
Das Problem ist, wenn ich nun auf abschicken gehe, gehen die Daten welche ich per POST verschicken möchte verlohren.
switch($_POST['Kinderanzahl']){
case 1: echo'<tr><td><b><font color="green">Alter des Kindes:</b></td>
<td><input name="Alter Kind 1" type="text" id="Alter Kind 1" size="2">
<input type="hidden" value="'.$_POST['Kinderanzahl'].'" name="Kinderanzahl"></td></tr>';
break;
case 2: echo'<tr><td><b><font color="green">Alter der 2 Kinder:</b></td>
<td><input name="Alter Kind 1" type="text" id="Alter Kind 1" size="2" value="'.$_POST['Alter Kind 1'].'">
<input name="Alter Kind 2" type="text" id="Alter Kind 2" size="2" value="'.$_POST['Alter Kind 2'].'">
<input type="hidden" value="'.$_POST['Kinderanzahl'].'" name="Kinderanzahl"></td></tr>';
break;
Vielleicht könnt ihr mir da weiter helfen.
Hallo Christian,
Das Problem ist, wenn ich nun auf abschicken gehe, gehen die Daten welche ich per POST verschicken möchte verlohren.
Du meinst die anderen Angaben? Natürlich, die musst du wie 'Kinderanzahl' in ein hidden-feld einbauen, damit sie der Browser nochmal abschickt. Er weiß ja nicht, dass du die beim ersten Mal gesendeten Daten nicht verarbeitet hast und nochmal geschickt haben willst.
switch($_POST['Kinderanzahl']){
case 1: echo'<tr><td><b><font color="green">Alter des Kindes:</b></td>
<td><input name="Alter Kind 1" type="text" id="Alter Kind 1" size="2">
<input type="hidden" value="'.$_POST['Kinderanzahl'].'" name="Kinderanzahl"></td></tr>';
break;
case 2: echo'<tr><td><b><font color="green">Alter der 2 Kinder:</b></td>
<td><input name="Alter Kind 1" type="text" id="Alter Kind 1" size="2" value="'.$_POST['Alter Kind 1'].'">
<input name="Alter Kind 2" type="text" id="Alter Kind 2" size="2" value="'.$_POST['Alter Kind 2'].'">
<input type="hidden" value="'.$_POST['Kinderanzahl'].'" name="Kinderanzahl"></td></tr>';
break;
"Alter Kind 1" ist kein zulässiger Wert für eine ID, und auch für Formulardatennamen ist es nicht zu empfehlen.
Das Formular oben lässt sich mit einer Schleife weitaus effizienter lösen:
~~~php
for($i=0; $i < $_POST['Kinderanzahl']; $i++)
{
echo '<input name="alter_kind_'. $i. '" ...>';
}
(Beispiel, muss noch verbessert werden, $_POST['Kinderanzahl'] sollte zum Beispiel auf gültige Werte überprüft werden)
Viele Grüße aus Freiburg,
Marian
Hy Marian
Du meinst die anderen Angaben? Natürlich, die musst du wie 'Kinderanzahl' in ein hidden-feld einbauen, damit sie der Browser nochmal abschickt. Er weiß ja nicht, dass du die beim ersten Mal gesendeten Daten nicht verarbeitet hast und nochmal geschickt haben willst.
Die Anderen Angaben werden komischer weise immer wieder übermittelt, es geht nur um die Kinderanzahl.
Bei den anderen Angaben hab ich mit einer If-Schleife gearbeitet.
if(!$_POST['Vorname']){
echo'Geben Sie Ihren Vornamen an: <input type="text" name="Vorname">';
}
else{
echo'Vornamen: <input type="text" name="Vorname" value="'.$_POST['Vorname'].'">';
Das selbe Prinzip wollte ich auch hier anwenden, nur eben das mir hier die Daten verloren gehen.
Das mit der For-Schleife ist mir so nicht eingefallen, besten Dank.
Vielleicht kannst du mir ja noch weiter helfen.
Grüße aus Salzburg
Christian