Unbekannte Anzahl an Variablen über Formular übergeben
oli
- php
0 Moe0 Oli
0 Bademeister0 EKKi
Hallo,
Ich möchte gerne beliebig viele Variablen in einem Post Formular übergeben, also in einer Schleife.
Wie könnte ich das am besten lösen?
-------------
ZB:
echo "<form action='pfad' method='post'>";
$i=0;
while($i<$anzahl){
$i+=1;
echo "<input type='text' name='i".$i"' value='' />";
}
echo "<input type='submit' value='Fertig'/>";
echo "</form>";
-- Auslesen?:
$i1 = htmlspecialchars($_POST['i1']);
$i2 = htmlspecialchars($_POST['i2']);
$i3 = htmlspecialchars($_POST['i3']);
...
$in = htmlspecialchars($_POST['in']);
-------------
So würde ich das machen, aber das ist irgendwie umständlich. Außerdem wären dann die Anzahl an Variablen begrenzt.
Weiß jemand wie ich das besser lösen könnte?
danke + lg
Oli
Hi
Machs doch einfach wie beim Schreiben des Formulares mit einer while-Abfrage:
$n = 1;
while($_POST['i'.$n] != '') {
$i[$n] = $_POST['i'.$n];
$n++
}
Dann hast du die Variablen eben nicht einzeln sondern in einer Array, wobei du Sie dann auch in der POST-Array lassen könntest. Aber so lässt sich das prinzipiell lösen.
Gruß
Moe
Danke.
Wie überaus dumm von mir so was zu fragen.
$i=0;
while($i<$anzahl){
$i+=1;
echo "<input type='text' name='i".$i"' value='' />";
}
Da drängt sich doch ein "for" anstatt eines "while" auf, oder?
Ansonsten: Ja, genau so, warum nicht? (Bis auf das Detail, dass da ein Punkt fehlt und PHP meckern würde.)
Wenn Du als Namen außerdem stattdessen
"... name='i[$i]'"
oder nur
"... name='i[]'"
deklarierst, dann kriegste die Werte auch gleich als Array übergeben.
So würde ich das machen, aber das ist irgendwie umständlich. Außerdem wären dann die Anzahl an Variablen begrenzt.
Warum?
Viele Grüße
der Bademeister
Mahlzeit oli,
$i1 = htmlspecialchars($_POST['i1']);
$i2 = htmlspecialchars($_POST['i2']);
$i3 = htmlspecialchars($_POST['i3']);
...
$in = htmlspecialchars($_POST['in']);
Wie bereits angemerkt, würde sich hier einerseits eine entsprechende Schleife eignen, andererseits wäre es erheblich sinnvoller, die Werte im $_POST-Array zu lassen. Was jedoch absoluter Unsinn ist: die Verwendung von htmlspecialchars() ... diese Funktion dient zur kontextgerechten Behandlung von Inhalten für die AUSGABE von HTML - und nicht zur Überprüfung von per POST übergebenen Parametern.
MfG,
EKKi