Dickes Problem mit dynamisch erzeugtem Variablennamen

Moritz123

Erfahrenes Mitglied
Hallo!

wie aus dem Betreff schon zu entnehmen ist, habe ich ein dickes Problem mit automatisch erzeigten Variablennamen. Klingt wie Schall und Rauch, daher eine kurze Erklärung:
Ich gebe dem User in einer selbstgeschriebenen Datenbankoberfläche die Möglichkeit, anzugeben, wie viele Datensätze er in die Datenbank einfügen will. Dazu frage ich eine Zahl ab, nach der sich dann die Anzahl der angezeigten Formfelder richtet. Diese Formularfelder werden mit einer for-Schleife generiert; damit es nicht zu Dopplungen in den <input>-Bezeichnungen kommt, füge ich dem Namen den aktuellen Wert von $i aus der for - Schleife hinzu. Das sähe dann so aus:
PHP:
for($i; $i <= $AnzahlneueDatensaetze; $i++){
   echo "<input type=text name=textfeld_".$i.">";
}
Auf der Zielseite des Formulars lasse ich dann die Datenbank durch die gleiche for-Schleife füllen. Allerdings habe ich keine Ahnung, wie ich nun an die dynamisch erzeugten Variablen-Namen komme. Ein Zugriff ala $_POST['textfeld'] oder $_POST['textfeld_1'] geht ja nicht, da ich nicht weiß, wieviele Datensätze der User eingeben möchte.

Ich hoffe mein Problem ist verständlich....
 
Moritz123 hat gesagt.:
...
PHP:
for($i; $i <= $AnzahlneueDatensaetze; $i++){
   echo "<input type=text name=textfeld_".$i.">";
}
....


irgendwie übrgibst du ja "$AnzahlneueDatensaetze". Ich nehme an, dass diese Variable durch eine Anhängung an die Url vornimmst. Demenstrpechend liest du sie durch $_GET.

Warum übernimmst du diesen Wert nicht und hängst es einfach ans Formular dran:
<form action="post" action"ziel.php?AnzahlneueDatensätze=$AnzahlneueDatensaetze">

Ich hoffe, dass ich dir helfen konnte ;)
 
Hallo!

vielen Dank für deine Antwort - leider hat sie mir nur in sofern geholfen, als dass ich nun weiß, dass meine Frage nicht verstanden wurde.
Ich übergebe die Anzahl der Datensätze in nem hidden-Feld. Das ist auch nicht das Problem, sondern wie ich auf der Ergebnisseite die Variablen die übergeben wurden, wieder bekomme. Ich weiß sie ja faktisch nicht, da sie dynamisch(abhänig von der vom User angegeben Anzahl) erzeugt werden.
Ich müsste also auf der Ergebnisseite die Variablennamen neu generieren lassen, um die Variablen von der Vorseite ansprechen zu können. Alles klar ;)
 
Ok - es hat sich erledigt. Ich erzeuge die Variablen-Namen auf der Ergebnisseite neu, indem sie einfach über
PHP:
$textfeldVar = "textfeld_".$i;
echo $_POST[$textfeldVar];
anspreche.
 
Also wieso weisst du nicht wieviel er eingegeben hat er gibt das doch an vorher du erzeugst dann auch die dementsprechende Anzahl an Textfelder.
und dann wer er das ding abschickt kannst du einfach per $_POST['textfeld_'.$i] den Inhalt abfragen. Das ganze in einer Zählschleife oder einer while Schleife.

z.B.

PHP:
$i = 0;
while($_POST['textfeld_'.$i]) 
{
deine Anweisung ... ;
$i++;
}

oder halt Zählerschleife weil du die zahl z.B. in einer Sessionvariablen speichern kannst um dann später die Zählerschleife genau so oft durchgehen kannst wie bei deiner Schleife zur erstellung der Textfelder.
 
machs doch lieber so:
PHP:
foreach($_POST AS $var => $val)
{
    if(strpos($var, "textfeld_") !== FALSE)
    {
        //Bla...
    }
}
 
Zurück