Slayer8 Geschrieben 7. Juli 2004 Teilen Geschrieben 7. Juli 2004 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 7. Juli 2004 Teilen Geschrieben 7. Juli 2004 $value = $$ADescr; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Slayer8 Geschrieben 8. Juli 2004 Autor Teilen Geschrieben 8. Juli 2004 Also: $value=$$ADescr; if (!empty($ADescr)){ echo"<tr><td>".$ADescr."</td><td><input name=\"".$ADescr."\" value=\"".$value."\">"; Klappt net.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 8. Juli 2004 Teilen Geschrieben 8. Juli 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Slayer8 Geschrieben 10. Juli 2004 Autor Teilen Geschrieben 10. Juli 2004 Hi! Ja, das eigentliche Formular ruft eine Funktion "FehlerCheck" auf in der die Inhalte dann abgefragt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 11. Juli 2004 Teilen Geschrieben 11. Juli 2004 Hast du denn dann auch alle Variablen mittels global innerhalb deiner Funktion bekannt gemacht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 11. Juli 2004 Teilen Geschrieben 11. Juli 2004 code posten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Slayer8 Geschrieben 11. Juli 2004 Autor Teilen Geschrieben 11. Juli 2004 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!"; }; }; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 12. Juli 2004 Teilen Geschrieben 12. Juli 2004 Probiere doch mal in Zeile 16: $test=$$ADescr; bzw. $test=${$ADescr}; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.