Variablen-Verweise in $_POST

Mike Rofon

Erfahrenes Mitglied
also ich hab ein Formular mit 169 Inputs. Die Namen der Felder kann ich per schleife zusammen setzen.

sieht etwa so aus: $varname = "z".$i."mo";
$i is der Zähler der FOR-Schleife.

Jwtz isses so, daß es bei mir bisher unter PHP4 funktioniert hat, nach einem Abschicken des Formulars mit action $PHP_SELF, auf die Felder wieder mit $z1mo (zb) zuzugreifen. Der SQL-Befehl wurde so zusammengebaut:

PHP:
$sqlsave  = "UPDATE $plan_name
                     SET Montag   = '";   $varx = "z".$i."mo";  $sqlsave .= $$varx;
         $sqlsave .= "', Dienstag = '";   $varx = "z".$i."di";  $sqlsave .= $$varx;
         $sqlsave .= "', Mittwoch = '";   $varx = "z".$i."mi";  $sqlsave .= $$varx;
         $sqlsave .= "', Donnerstag = '"; $varx = "z".$i."do";  $sqlsave .= $$varx;
         $sqlsave .= "', Freitag = '";    $varx = "z".$i."fr";  $sqlsave .= $$varx;
         $sqlsave .= "', Samstag = '";    $varx = "z".$i."sa";  $sqlsave .= $$varx;
         $sqlsave .= "', Sonntag = '";    $varx = "z".$i."so";  $sqlsave .= $$varx;
         $sqlsave .= "' WHERE id='$i'";
Das geht nu mit PHP5 nich mehr... jetzt muß ich die Sachen erst aus $_POST[] rausholen.
Aber ich finde keine Variante wie ich das einigermaßen elegant lösen kann....
soll in etwa SO aussehen:
PHP:
         $sqlsaveneu  = "UPDATE $plan_name
                        SET Montag   = '";   $varx = "z".$i."mo";  $sqlsaveneu .= $_POST['varx']; 
         $sqlsaveneu .= "', Dienstag = '";   $varx = "z".$i."di";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "', Mittwoch = '";   $varx = "z".$i."mi";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "', Donnerstag = '"; $varx = "z".$i."do";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "', Freitag = '";    $varx = "z".$i."fr";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "', Samstag = '";    $varx = "z".$i."sa";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "', Sonntag = '";    $varx = "z".$i."so";  $sqlsaveneu .= $_POST['$$varx'];
         $sqlsaveneu .= "' WHERE id='$i'";
So funktioniert es aber nicht. Leuchtet mir auch ein... Aber wie macht man's richtig? Ich krieg das mit diesen Variablen-Verweisen nich gebacken.
Sicherlich könnte ich vorher 169mal (obige sqlsave-Konstruktion wird 27x durchlaufen) $z1mo = $_POST['z1mo']; mit den entsprechenden Änderungen machen... aber ich wollt ja ne eleganze Lösung :D

Wer hat bitte eine Idee?
 
Meinst du sowas?

PHP:
for($i = 0; $i < 10; $i++) {
   echo $_POST['z'.$i.'mo'];
}

EDIT: Achso, dein Call zum POST-Element ist etwas verkehrt. Versuchs mal so:

PHP:
         $sqlsaveneu  = "UPDATE $plan_name
                        SET Montag   = '";   $varx = "z".$i."mo";  $sqlsaveneu .= $_POST[$varx]; 
         $sqlsaveneu .= "', Dienstag = '";   $varx = "z".$i."di";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "', Mittwoch = '";   $varx = "z".$i."mi";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "', Donnerstag = '"; $varx = "z".$i."do";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "', Freitag = '";    $varx = "z".$i."fr";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "', Samstag = '";    $varx = "z".$i."sa";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "', Sonntag = '";    $varx = "z".$i."so";  $sqlsaveneu .= $_POST[$varx];
         $sqlsaveneu .= "' WHERE id='$i'";
 
Zuletzt bearbeitet:
Ich würde keinen Eid drauf schwören ... aber $_POST[$varx];
hatte ich schon probiert... ich hab getestet mit Hochkomma und ohne , mit einem $ und mit zweien... und auch $_POST['z'.$i.'mo']; ... also ohne das rst in eine Variable zu schreiben... also Fall für Fall abarbeiten... bisher lief nix.
Bin ziemlich ratlos warum $_POST[$varx]; jetzt auf einmal funktioniert.

Danke Dir
 
Zurück