Veröffentlicht 7. Juli 200421 j Hallo! Habe ein Problem mit 'ner CMS-Eigenkreation, bz. dynamischen Variablen. Dioe Zeile des Quelltextes, um die es geht: echo"<tr><td>".$ADescr."</td><td><input name=\"".$ADescr."\" value=\"".$test."\">"; Es geht um folgendes, das Formular erzeugt dynamisch ein anderes Formular. Letzteres wird in einer Datenbank gespeichert, von dem CMS ausgelesen und als "normales" Formular ausgegeben. Die Namen der Felder stehen in der Variablen "$ADescr", diese (die Felder) sind auch zugleich die Variablen in denen der Endwert gespeichert wird. Beispiel: Formularfeld: Name, dann würde das Inputfeld "Name" heißen und das Ergebnis der Eingabe auch in Name gespeichert werden. Die Variable "Name" würde als Feld aus der DB ausgelesen und in "$ADescr" gespeichert. Wenn ich nun Fehlerhafte Eingaben habe, wird das Formular wieder aufgerufen, der Fehler angezeigt und die einzelnen Felder sollen mit den alten Angaben vorbesetzt sein. Wenn ich den Value setzen will, was für eine Besetzung des Inputfields nötig ist, benötige ich die Variable (also Name), die übergeben wird. Nun ist das Problem das folgende: Die Variable, in der der Eintrag gespeichert wird hat einen Variablen Namen. Z.B. könnte das Name sein, in $ADescr steht als als Variablenname "Name". Sobald aber wieder auf das Formular zugegriffen wird benötige ich direkt den Variablennamen (den ich aber nicht kenne), ich kann den Value also nicht mit "$ADescr" vorbesetzen, sondern benötige den Wert von "Name" der in diesem Beispiel in "$ADescr" drin stehen würde. Wie komme ich an den dran?
8. Juli 200421 j Also: $value=$$ADescr; if (!empty($ADescr)){ echo"<tr><td>".$ADescr."</td><td><input name=\"".$ADescr."\" value=\"".$value."\">"; Klappt net....
8. Juli 200421 j Was kommt denn bei dir raus? Stehen denn die Variablen zur Verfügung? Rufst du den Teil in einer Funktion auf? Dann stehen eventuell die Variablen nicht zur Verfügung.
10. Juli 200421 j Hi! Ja, das eigentliche Formular ruft eine Funktion "FehlerCheck" auf in der die Inhalte dann abgefragt werden.
11. Juli 200421 j Hast du denn dann auch alle Variablen mittels global innerhalb deiner Funktion bekannt gemacht?
11. Juli 200421 j Die Variablen habe ich nicht als global deklariert.... Hier die beiden Funktionen: function Form_aus_DB() { include 'inc/globvar.inc'; include 'inc/dbconnect.inc'; echo"<form action=\"".$PHP_SELF."\" method=\"post\">\n <input type=\"hidden\" name=\"op\" value=\"FehlerCheck\">\n <table border=\"0\">\n"; $sql = "SELECT Formular FROM ".$GV_DBTABLE_FORMS; $result = mysql_query($sql,$db); while($data = mysql_fetch_array($result)) { $namePLUSinhalt = explode("|", $data["Formular"]); foreach($namePLUSinhalt as $value) { $OBJECT = explode(";", $value); $ADescr = $OBJECT[0]; $Acb = $OBJECT[1]; if (!empty($ADescr)){ $test=$ADescr; echo"<tr><td>".$ADescr."</td><td><input name=\"".$ADescr."\" value=\"".$test."\">"; if ($Acb>0) echo"<input type=\"hidden\" name=\"Pflicht".$Acb."\" value=\"1\"><font color=\"red\">*</font>"; echo"</td></tr>"; }; }; echo"</table><font color=\"red\">*</font> = Pflichtfeld<br><br> <input type=\"submit\" name=\"abschicken\" value=\"Abschicken\"> </form>"; }; }; // endgültiges Formular wird auf Fehler überprüft und verschickt // function FehlerCheck(){ include 'inc/globvar.inc'; include 'inc/dbconnect.inc'; $sql = "SELECT Formular FROM ".$GV_DBTABLE_FORMS; $result = mysql_query($sql,$db); while($data = mysql_fetch_array($result)) { $namePLUSinhalt = explode("|", $data["Formular"]); foreach($namePLUSinhalt as $value) { $OBJECT = explode(";", $value); $ADescr = $OBJECT[0]; $Acb = $OBJECT[1]; // Pflichtfelder werden der Reiche nach auf Existenz abgefragt if($_POST["Pflicht$Acb"]=="1"){ if(empty($_POST[$ADescr])){ $error ="Fehler: Bitte geben Sie das Pflichtfeld \"".$ADescr."\" an.<br>"; }; }; }; }; // Wenn Fehler auftreten werden alle Fehlermeldungen ausgegeben! if($error){ echo $error; echo"<br>"; Form_aus_DB(); }; // dieses wird ausgefuehrt, wenn keine Fehler in Form von Pflichtfeldern aufgetreten sind. else{ echo "klappt!"; }; };
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.