$_POST Variablen mit foreach einlesen
Mika
- php
0 Rouven0 Mika0 Sven Rautenberg0 Mika0 Der Martin0 Tom
1 dedlfix0 Sven Rautenberg
0 Tom
Hallo Zusammen,
ich habe eine PHP-Seite auf der ich mir alle mit POST übergebenen Variablen mit foreach in ein Array einlesen lasse:
foreach($_POST as $key => $value)
So erhalte ich den Schlüssel(Name des HTML-Feldes) + den Wert
Dann möchte ich in einer If-Verzweigung den entsprechenden Wert eines
bestimmten Schlüssels abfragen um je nach dem die gewünschten Datenbankzugriffe zu realisieren...
if($key[DelFlag]->$value == ""){
MySQL-Code....
}
Doch leider funktioniert so nicht
Ich habe auch schon viel gegoogelt und hier im Forum gelesen aber ich habe nichts gefunden, wo erklärt wird, wie man auf den Wert des
gewünschten Schlüssels $key[...] zugreifen kann.
Kann mir jemand helfen oder einen Hinweis geben?
Vielen Dank!
Gruß
Mika
Hello,
ich habe eine PHP-Seite auf der ich mir alle mit POST übergebenen Variablen mit foreach in ein Array einlesen lasse:
warum würdest du das tun wollen? $_POST ist bereits ein assoziatives Array!
foreach($_POST as $key => $value)
_Pro_ Schleifendurchlauf erhälst du _einen_ Key und _einen_ Value.
if($key[DelFlag]->$value == ""){
MySQL-Code....
}
Doch leider funktioniert so nicht
stimmt, weil $key kein Array ist, der Wert ist schlicht und einfach $key.
MfG
Rouven
Hallo Rouven,
stimmt, weil $key kein Array ist, der Wert ist schlicht und einfach $key.
nein der Wert ist nicht $key, in $key steckt der Name des Feldes, ich will aber nicht den namen sondern den Wert, also $value
Moin!
nein der Wert ist nicht $key, in $key steckt der Name des Feldes, ich will aber nicht den namen sondern den Wert, also $value
Dann nimm $value. Wenn $key der gewünschte Arrayindex ist, steht in $value der zugehörige Wert drin.
- Sven Rautenberg
Hallo Sevn,
Dann nimm $value. Wenn $key der gewünschte Arrayindex ist, steht in $value der zugehörige Wert drin.
ja das ist mir schon klar das in $value der dazugehörige Wert steht,
aber da mehrere Postvariablen übergeben werden, handelt es sich bei $key auch um ein Array.
meine Frage ist wie ich jetzt z.B. aus dem 2. $key-array den dazugehörigen wert auslesen kann
bzw. wie die Syntax dazu aussieht
versucht habe ich folgendes:
$key[2]->$value
Hallo,
ja das ist mir schon klar das in $value der dazugehörige Wert steht,
aber da mehrere Postvariablen übergeben werden, handelt es sich bei $key auch um ein Array.
nein, da irrst du dich.
Du setzt eine Schleife auf mit
foreach ($_POST as $key => $value)
{ ... }
Innerhalb dieser Schleife sind $key und $value ganz gewöhnliche Variablen, genauso wie die Laufvariable in der einfachen for-Schleife. In jedem Schleifendurchlauf enthält $key einen(!) Schlüssel aus $_POST[], und $value den dazu gehörenden Wert.
$key[2]->$value
Und das ist genau deswegen Unsinn.
Warum du die Parameter alle nochmal umkopieren willst, anstatt direkt auf die Werte in $_POST[] zuzugreifen, verstehe ich allerdings immer noch nicht.
So long,
Martin
Hello,
$key[2]->$value
ich grübel außerdem die ganze Zeit schon darüber, was er hier gebastelt hat.
Ein Blick in die Definition für Objkete gibt einen Hinweis... :-)
http://de.php.net/manual/en/language.types.object.php
----------------------------
ludvig dot ericson at gmail dot com
19-Aug-2006 12:35
In reply to the usort thing, you can access a property of an object dynamically by:
<?php
$obj = (object)array("Test" => "bar")
$var = "Test";
echo $obj->$var;
?>
This will output "bar", and do notice I call on ->$var and not just ->var.
----------------------------
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
ja das ist mir schon klar das in $value der dazugehörige Wert steht,
aber da mehrere Postvariablen übergeben werden, handelt es sich bei $key auch um ein Array.
Solche Missverständnisse kann man recht einfach mit einer der grundlegendsten Debugging-Methoden aus dem Weg räumen: Kontrollausgaben.
Verwende dazu echo, var_dump() und print_r(). echo ist für einfache Werte geeignet, var_dump() gibt die genauesten Informationen über Typ und Inhalt einer Variablen, und print_r() eignet sich gut für Arrays und Objekte, ist nicht ganz so genau wie var_dump() dafür jedoch etwas übersichtlicher. Und wenn du die Ausgabe in einen HTML-Kontext bringst, der die zur Formatierung der Ausgabe verwendeten Whitespace-Zeichen ignoriert, empfiehlt es sich ein <pre> vor die Ausgabe von var_dump() und print_r() zu setzen.
echo "$verabschiedung $name";
Moin!
ja das ist mir schon klar das in $value der dazugehörige Wert steht,
aber da mehrere Postvariablen übergeben werden, handelt es sich bei $key auch um ein Array.
Nein. $key enthält den Arrayschlüssel. Das ist entweder ein String oder ein Integer. Niemals ein Array.
Wenn du darin ein Array vermutest, dann machst du irgendeinen Denkfehler, der sich vermutlich in deinem restlichen Code befindet, den wir aber nicht klären können, weil du ihn bislang nicht gezeigt hast.
meine Frage ist wie ich jetzt z.B. aus dem 2. $key-array den dazugehörigen wert auslesen kann
Es gibt kein $key-Array, also auch kein "zweites" $key-Array.
versucht habe ich folgendes:
$key[2]->$value
$key ist kein Array, also gibts auch kein $key[2]. Und da $key auch kein Objekt ist, ist ebenso der Objektzugriff $key->$value falsch.
Wie gesagt: Irgendwo machst du einen Denkfehler, aber wir wissen leider nicht, wo genau.
- Sven Rautenberg
Hello Mika,
die Werte stehen doch schon alle in einem Array, nämlich dem $_POST-Array. Du musst sie also dort gar nicht erst rausholen.
Was aber sinnvoll ist, ist ein Vergleichsarray mit den erwarteten Werten und der Zuordnung zum MySQL-Statement im Script bereitzuhalten, damit Dir niemand etwas unterschieben kann.
Dann läufst Du das Vergleichsarray mit foreach ab und schaust immer, ob im $_POST-Array ein Wert für den Schlüssel existiert. Wenn ja, vorgesehene Aktion, wenn nein, entweder Abbruch wegen Fehler oder Fake, oder eben einfach ignorieren. das hängt von Deinem Design ab.
Es kann auch nützlich sein, die an Daten gebundenen Werte von den Steuergrößen (Buttons, Checkboxen, Radios, Hidden-Vars) zu trennen, indem man ihnen einen eigenen Namens-(Sub)raum zuordnet.
Das geht z.B., indem man im Formular nicht schreibt
<input type="text" name="vorname" ...>
sondern bereits hier ein Array vorbereitet:
<input type="text" name="data[vorname]" ...>
Dann erscheinen die Datenwerte nachher im Array $_POST['data']['vorname'] usw., d.h., dass alle Datenwerte gebunden sind. Das ist immer dann praktisch, wenn man sie zwischenspeichern will in der Session oder sie per Hidden-Field über ein Nachfolgeformular an den nächsten request weitergibt.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom