PHP will nicht in DB schreiben

Schau Dir bitte, bitte, bitte den Syntax von foreach unter www.php.net an.....

Code:
foreach($_POST as $menge => $feld_menge) {
  $sql[]= "`".$bezeichnung."` = \"".$feld_bezeichnung."\""; 
  $sql[]= "`".$funktion."` = \"".$feld_funktion."\"";               
  $sql[]= "`".$e_preis."` = \"".$feld_e_preis."\"";                
}                       
$sql = "INSERT INTO `tabelle` ".implode(", ",$sql);
}

Richtig muss es so sein:
Code:
foreach($_POST as $menge => $feld_menge) {
  $sql[]= "`".$menge."` = \"".$feld_menge."\""; 
}                       
$sql = "INSERT INTO `tabelle` ".implode(", ",$sql);
}

Das setzt allerdings voraus, das die Feldnamen im Formular genau so heissen, wie die Felder in der Datenbank, sonst geht es nicht!

VORSICHT!!!!
Mit diesem Konstrukt schreibst Du ALLE(!!!) Post Inhalte, auch die Hidden-Felder und auch die Werte die im Button "Submit" stehen. Die müssten also gefiltert werden.


Ob das jetzt unten mit dem implode so klappt, weiss ich nicht. Werde wohl dochmal gleich meinen PHP-Compiler anwerfen....

Ps: Nicht verzweifeln! Das wird schon alles...

Wenn ich den Inhalt des Linkes also die foreach Schleife richtig verstanden habe muss ich dann dieses Schleife für jede Variable einzeln haben oder ?!

Muss ich das den so machen ? Ich meine das wird ja immer komlizierter wenn ich jetzt schon wieder irgendwelche WErte aussfiltern muss. Geht das den nicht ganz einfach? es kann doch nicht soo schwer sein ein Paar Werte aus einem Formular in eine DB zu schreiben. Das Beispiel Gästebuch aus meinem Tutorial hatte ja nur ~20 Zeilen und da gings auch Oo
 
Zuletzt bearbeitet:
Nein.

foreach geht ein array durch und gibt dir den Wert, den schlüssel oder die Schlüssel-Werte-Paare zurück.

Bsp:

foreach ($array as $key => $value) {
echo "Schüssel : $key<br>";
echo "Wert : $wert<br>";
}

Wenn $array folgenden Inhalt hat:
$array["en"] = "Hello World"
$array["de"] = "Hallo Welt"
$array["fr"] = "Bonjour le monde"

Dann gibt obige Schleife folgendes aus:

Schlüssel : en
Wert : Hello World
Schlüssel : de
Wert : Hallo Welt
Schlüssel : fr
Wert : Bonjour le monde


Jetzt alles klar?
 
Nein.

foreach geht ein array durch und gibt dir den Wert, den schlüssel oder die Schlüssel-Werte-Paare zurück.

Bsp:

foreach ($array as $key => $value) {
echo "Schüssel : $key<br>";
echo "Wert : $wert<br>";
}

Wenn $array folgenden Inhalt hat:
$array["en"] = "Hello World"
$array["de"] = "Hallo Welt"
$array["fr"] = "Bonjour le monde"

Dann gibt obige Schleife folgendes aus:

Schlüssel : en
Wert : Hello World
Schlüssel : de
Wert : Hallo Welt
Schlüssel : fr
Wert : Bonjour le monde


Jetzt alles klar?

Klar ist es schon aber ich denke das muss doch irgendwie einfach gehen oder ? Bei meinem angesprochenem Tutorial sah das ins DB eintragen so gemeistert :
PHP:
$sql = "INSERT INTO GB (ID,Name,Inhalt) 
VALUES (NULL , '$_POST[Name]', '$_POST[Inhalt]')";
		 
		 mysql_query($sql) OR die(mysql_error());    
		 echo "<br>Vielen Dank für ihren Eintrag<br>";
Allerdings muss ich dazu sagen, dass das umstricken auf mein jetziges Problem nicht funktioniert hat ... weiß Gott warum weil eigentlich sinds ja nur 2 Variablen mehr und sonst nix *noahnung*
 
Jo,
nur PHP ist halt doch nicht einfach loslegen, tippen und es geht. Da hängen (leider) viele Kleinigkeiten heutzutage mit ab:

Welche PHP Version hatte dieses Tutorial als Grundlage?
Welche PHP Version hat Deine Webpage UND wie ist PHP eingestellt? (Globals Off, safe_mode, etc)

EDIT
O Mann, ich bin schon total Betriebsblind....

Habe noch einen Fehler bei Dir entdeckt....

Code:
$var1 = $_POST['$feld_menge'];
$var2 = $_POST['$feld_bezeichnung'];
$var3 = $_POST['$feld_funktion'];
$var4 = $_POST['$feld_epreis'];

Schmeiss mal alle $ vor den Feldnamen weg! PHP will sonst Variablen auflösen!
 
Zuletzt bearbeitet:
Zurück
Oben Unten