Tom: Frage zu $_REQUEST[RG]

Beitrag lesen

Hello,

ich suche seit einiger Zeit nach einer Lösung und bitte euch um einen Rat.

Es ist so, das sich in einem Formular chechboxes habe:

<input type="checkbox" value="val1" name="RG[]"/>
<input type="checkbox" value="val2" name="RG[]"/>
<input type="checkbox" value="val3" name="RG[]"/>
...

Du kannst den Checkboxen auch gleich im HTML spezifizierte Namen geben:

<input type="checkbox" value="val1" name="RG[1]"/>
 <input type="checkbox" value="val2" name="RG[2]"/>
 <input type="checkbox" value="val3" name="RG[3]"/>

In meinem Skript wollte ich an einer Stelle überprüfen ob irgendeine dieser Boxes angekreuzt ist.

if ( (!isset($_REQUEST[RG])){
machirgendwas
}

Die Verwendung von $_REQUEST ist meistens nicht zu empfehlen. Du weiß dadurch nicht, ob die Parameter per POST- oder GET-Request oder in einem Cookie angekommen sind, oder durch eine Mischung daraus. Das will man aber meistens doch genauer wissen heutzutage.

Ist es möglich bei machirgendwas dem $_REQUEST[RG]einen Wert zuzuordnen.

Die fixen Elementbezeichner eines Arrays sind Strings, müssen daher auch als solche notiert werden. Du hast eine Konstante RG angegegeben, die PHP nur durch seine automatischen Umwandlungsmechanismen als nächstes als String behandelt, wenn sie nicht vorhanden ist. Das kann aber auch gefährlich ins Auge gehen, wenn später eine Konstante mit demselben Namen eingeführt wird.

Also frage besser $_POST['RG'] ab:

if (isset($_POST['RG']) and is_array($_POST['RG']))
    {
        foreach ($_POST['RG'] as $key => $val)
        {
            echo htmlspecialchars("RG[$key] => $val") . "</br>\r\n");
        }
    }

Also so als hätte der User doch eine checkbox angekreuzt?

Also vermutlich eher so, als hätte der Benutzer eben die Checkbox nicht markiert; sie soll dann eben mit "FALSE" oder ähnlich behandelt werden?

Bau Dir ein Kontrollarray auf, welche Checkboxen überhaupt erwartet werden. Das iterierst Du dann mit foreach() und schaust, welche davon in $_POST ebenfalls enthalten sind.

Die Werte übernimmst Du dann. Lege Dich auf ein neutrales Element fest, z.B. den Leerstring oder 0 oder was auch immer, wenn kein Wert gepostet wurde.

So lassen sich die Usereingaben dann gezielt überwachen und auswerten.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de