$_POST['Array'] - Richtig formatieren

Genesyst

Mitglied
Hallo zusammen,

ich habe folgendes Tutorial gerade mal durch getestet, und am Ende steht man solle bei register_globals "off" $Array durch $_POST['Array'] ersetzen. Ich könnte zwar register_globals auf On stellen, aber eigentlich wird ja an jeder Ecke davor gewarnt.

Mein Problem nun ist die richtige Formatierung, da ich bei etwaigen Änderungen gleich eine FM bekomme:

Code:
parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in .../work.php on line 17
Das hier ist der Originalpart:

PHP:
$dbanfrage = "INSERT into $tabelle values ('0', '$Array[header]', '$Array[artikel]')";
Ich habs versucht so zu ändern:

PHP:
$dbanfrage = "INSERT into $tabelle values ('0', '$_POST['header']', '$_POST['artikel']')";
Und auch so:

PHP:
$dbanfrage = "INSERT into $tabelle values ('0', $_POST['header'], $_POST['artikel'])";
Leider funktioniert keine Variante. Ich sollte vllt dabei schreiben das ich PHP-Anfänger bin, sonst hält man mich vllt für blöd. Wäre nett wenn mir jemand helfen könnte, und mir auch den Fehler kurz erklären würde, damit ich aus den Fehlern lerne. :)

Vielen Dank,

Genesyst
 
Zuletzt bearbeitet:
Wenn mit register globals = on deine Variable $array heisst, wäre sie über Post $_POST['array'], also musst du, wenn du $array['header'] haben willst, über $_POST['array']['header'] zugreifen! MfG
 
Hallo Drucko,

erstmal vielen Dank das du dich meinem Problem angenommen hast. Auf jeden Fall schonmal was gelernt. :)

Allerdings ist der Fehler immer noch da. Sobald ich das Formular absende schreit er sofort:

Code:
Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in .../work.php on line 17

Line 17 ist die entsprechene "array"-Zeile. Geändert habe ich es nun so:

Code:
$dbanfrage = "INSERT into $tabelle values ('0', '$_POST['array']['header']', '$_POST['array'][artikel]')";

Vielen Dank erneut,

Genesyst
 
Zuletzt bearbeitet:
PHP:
// Entweder
$dbanfrage = "INSERT into {$tabelle} values ('0', '{$_POST['array']['header']}', '{$_POST['array']['artikel']}')";
// oder (obwohl das eventuell Komplikationen gibt, da das einfache Parsing nur eine Ebene berücksichtigt, nicht aber zwei)
$dbanfrage = "INSERT into $tabelle values ('0', '$_POST[array][header]', '$_POST[array][artikel]')";

Eventuell sind der Unterschied und Funktionsweise so nachvollziehbarer.
 
Okay, ich denke das ich den Fehler soweit verstanden habe. Nur zum Verständnis dadurch das du es in {} packst berücksichtigst du die Möglichkeit mehrerer Zeilen, da theoretisch alles in einer stehen müsst, oder?

Ist nur ne Interessenfrage, da ich wie gesagt Anfänger bin, musst aber nicht antworten wenns nervt. :)

Das Problem, weswegen ich das Ganze hier übrigens geändert hatte besteht immer noch. Er trägt die versendeten "Einträge" aus dem Formular nicht in die DB ein, er legt lediglich leere Felder an... :| *kopfschmerz bekomm*

Vllt sollte ich mal ein anderes Tutorial dieser Art versuchen. :)

Vielen Dank erneut,

Genesyst
 
PHP:
<?php
$_POST['array'] = array(
    'header'  => "der Titel",
    'artikel' => "der Text\n ein Zeilenumbruch...\n noch einer"
    );

$dbanfrage = "INSERT into {$tabelle} values ('0', '{$_POST['array']['header']}', '{$_POST['array']['artikel']}')";

// ergibt:
// INSERT INTO tabellenname VALUES ('0', 'der Titel', 'der Text\n ein Zeilenumbruch...\n noch einer')

$dbanfrage = "INSERT into $tabelle values ('0', '$_POST[array][header]', '$_POST[array][artikel]')";  
// ergibt:
// INSERT INTO tabellenname VALUES ('0', 'Array[header]', 'Array[artikel]')

Das mal als Testcase - Kannst auch gerne mal [phpf]var_dump[/phpf] verwenden, um den Querystring ausgeben zu lassen. Des Weiteren empfehle ich dir, var_dump($_POST) mal ausgeben zu lassen, damit du siehst, wie das POST-Array aufgebaut ist.
 
Hi
ich habe das selbe problem wie mein Vorgänger hier,
bin auch erst am lernen was php betrifft und ich bastel schon seit 2 stunden an dem Insert - Befehl rum und ich bekomme einfach nur leer felder in meine tabelle wäre net wenn mir kurz jemand drüberschauen kann.
PHP:
$dbverbindung = mysql_connect ($host, $user, $password);

// Mein erster Versuch   
$dbanfrage = "INSERT into $tabelle values ('0', $_POST['Array[header]'], $_POST['Array[artikel]'])";

// Mein zweiter Versuch
$dbanfrage = "INSERT into {$tabelle} values ('0', '{$_POST['array']['header']}', '{$_POST['array']['artikel']}')"; 

// Mein dritter Versuch :/  
$dbanfrage = "INSERT into $tabelle values ('0', '$_POST[array][header]', '$_POST[array][artikel]')";   


if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
mysql_close ($dbverbindung);


Vielen Dank im Vorraus
Flo
 
PHP:
$dbanfrage = "INSERT INTO `".$tabelle."` values ('0', '".$_POST['Array']['header']."', '".$_POST['Array']['artikel']."')";
Im HTML-Formular ist das A in <input name="Array[header]"...> großgeschrieben!
(Was beachtet werden muss, ist case-sensitive!)
MfG
 
Zurück