PHP Teilvariabler Variablenname

Jeak

Lt. Junior Grade
Registriert
Sep. 2007
Beiträge
373
Habe mal wieder ein Problem, bei dem ich einfach nicht weiterkomme und auf Hilfe von euch hoffe.

Ich vereinfache mein Problem mal, um es zu erklären:

Über ein Formular wird eine variable Anzahl an Daten abgeschickt.
Die Namen der Formularfelder seien name_1, name_2, name_3 usw.

Nach dem Absenden des Formulars sollen nun in einer Schleife alle diese Felder ausgegeben werden.

Einzeln funktioniert dies z.b. mit
Code:
echo $_POST[name_1];
...

Variabel aber leider noch nicht:
Code:
$i = 1;

while($i < 5){
[INDENT]echo $_POST[${'name_'.$i}];[/INDENT]
[INDENT]$i++;[/INDENT]
}

Kennt jemand eine Lösung für mein Problem?
Würde mich sehr über Antworten freuen :)
 
Zuletzt bearbeitet:
PHP:
for( $i = 0; $i < 5; $i++ )
  echo $_POST['name_'.$i];
Wäre die funktionierende Lösung. Anstatt aber dir gleich etwas schlechtes anzueignen oder fortzuführen, änder lieber das Formular ab:
Code:
<form action="?" method="post">
  Name 1: <input type="text" name="name[]" /><br />
  Name 2: <input type="text" name="name[]" /><br />
  Name 3: <input type="text" name="name[]" /><br />
  Name n: <input type="text" name="name[]" />
  <input type="submit" />
</form>
Dadurch bekommst du z.B. folgendes Array:
Code:
$name = array(
  0 => 'Name 1',
  1 => 'Name 2',
  2 => 'Name 3',
  n => 'Name n'
);
 
Da suche ich ewig danach, dabei hätten mir zu Anfang nur noch die Gänsefüßchen gefehlt :/
Dankeschön.

Und die Methode mit dem Array wäre denke ich für den wirklichen Verwendungszweck ebefalls besser geeignet. Werde sie gleich mal testen :)
Nochmal Dankeschön.
 
Nur eine kleine Änderung, damit man nicht auf register_globals angewiesen ist: $_POST['name'] statt $name.

Code:
$_POST['name'] = array(
  0 => 'Name 1',
  1 => 'Name 2',
  2 => 'Name 3',
  n => 'Name n'
);
 
@ conte.carli: Ja, so wäre es korrekt. Wollte nur damit aufzeigen, was für ein Array entsteht unabhängig der Variablen (hätte sie auch weggelassen oder eine Auflistung wie in print_r gemacht, aber fand es so einfacher).
 
Zurück
Oben