martin_h: Frage zu $_REQUEST[RG]

Hallo Forum,

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[]"/>
...

In meinem Skript wollte ich an einer Stelle überprüfen ob irgendeine dieser Boxes angekreuzt ist.
if ( (!isset($_REQUEST[RG])){
machirgendwas
}

Ist es möglich bei machirgendwas dem $_REQUEST[RG]einen Wert zuzuordnen.
Also so als hätte der User doch eine checkbox angekreuzt?
$_REQUEST[RG][0]="keineZuordnungDurchNutzer";

Das würde mir einiges erleichtern da das Skript ziemlich lang ist und mit einer solchen Zuweisung keine Änderungen im Rest des Skipts erforderlich wären.
Vielen Dank für euer Hilfe / vielen Dank für jeden Tip

lg
Martin

  1. Hi,

    Ist es möglich bei machirgendwas dem $_REQUEST[RG]einen Wert zuzuordnen.
    Also so als hätte der User doch eine checkbox angekreuzt?
    $_REQUEST[RG][0]="keineZuordnungDurchNutzer";

    siehe https://forum.selfhtml.org/?t=204316&m=1383526

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. 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
    1. Hallo
      vielen Dank für eure Hife.
      Sorry ich habe noch mal eine Rückfrage...

      Also ich kann das Problem dank euerer Hilfe schon etwas eingrenzen.
      Und zwar klappt diese Zuordnung nicht:
      $_POST['RG[0]'] => "test";

      Habe auch
      $_POST['RG[0]'] = "test";
      probiert (verzweifel.. aber es findet keine Überschreibung des Werts statt?

      1. Mahlzeit martin_h,

        Und zwar klappt diese Zuordnung nicht:
        $_POST['RG[0]'] => "test";

        Welche Syntax soll das sein? PHP ist das nicht.

        Habe auch
        $_POST['RG[0]'] = "test";
        probiert (verzweifel.. aber es findet keine Überschreibung des Werts statt?

        Vermutlich weil kein Array-Element mit dem Schlüssel 'RG[0]' existiert. Vermutlich existiert eher ein Array-Element mit dem Schlüssel 'RG', das wiederum ein Array enthält:

        Versuch's also einfach mal mit $_POST['RG'][0] ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|