Mika: $_POST Variablen mit foreach einlesen

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

  1. 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

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
    1. 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

      1. 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

        --
        "Love your nation - respect the others."
        1. 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

          1. 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

            --
            Lieber blau machen, als sich schwarz ärgern.
            1. 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

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          2. 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";

          3. 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

            --
            "Love your nation - respect the others."
  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)