Der Martin: $_GET vs. $_POST

Beitrag lesen

Moin,

Kontrollelemetne, wie Radio-Elemente, Checkboxen und Select-Elemente werden nur übertragen, wenn sie ausgewählt wurden.

ja, stimmt.

[...] Das gilt natürlich auch für Textfelder.

Nein.

<form action="" method="get">
   <input type="text" name="feld1">
   <input type="text" name="feld2">
   <input type="submit" name="submit" value="Und Ab!">
  </form>

Sendet man dieses Minimal-Formular ab, ohne in die Felder feld1 und feld2 etwas einzutragen, ergibt sich der Query-String

?feld1=&feld2=&submit=Und%20Ab!

Die beiden Textfelder werden also sehr wohl berücksichtigt, nur übermitteln sie halt -korrekterweise- Strings der Länge 0.
Danke übrigens für deinen anderen Beitrag, natürlich kann man das Vorhandensein eines bestimmten Submit-Buttons mit isset() abfragen, egal was draufsteht. Hab ich doch selbst schon oft gemacht. Ich war wohl gestern abend etwas neben der Kapp'.

Du kannst aber im Backend leicht abfragen, ob das Element benutzt wurde:

Was verstehst du hier unter "benutzt"?

if (isset($_POST['element']) and strlen($_POST['element'] > 0)
    {
        ## Feld wurde benutzt
    }

Der Kommentar sollte richtigerweise heißen: Feld enthält mindestens 1 Zeichen.
Die Prüfung auf strlen()>0 ist m.E. überflüssig. Auch mit einem Leerstring als Parameter ist isset() erfüllt, der Zugriff auf den entsprechenden $_POST- $_GET-Eintrag also ohne Fehler/Notice möglich und erlaubt.

Ciao,
 Martin

--
Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.