dersvennie: checkboxwert

Hallo,

steh gerade voll vorm Berg obwohl die Lösung mit Sicherheit total simpel ist.

Hab ne checkbox die vom Benutzer ausgewählt werden kann.
Selbige hier:

<strong>Möchten Sie die Seite besuchen :</strong><input type="checkbox" name="work">

Nachdem der User selbige nun angewählt hat wird das Formular abgesendet und folgendes SQL Statement ausgeführt:

$sqlInsert = "INSERT INTO tbl_messages "
    . "Set user = '".$_REQUEST['username']."', "
    . "date ='".time()."' , "
    . "url = '".$_REQUEST['url']."' , "
    . "category = '".$_REQUEST['category']."', "
    . "work = '".$_REQUEST['work']."',"
    . "text = '".$_REQUEST['text']."' ";
     mysql_query($sqlInsert);

Wenn die checkbox gesetzt ist is das auch kein Problem aber wenn sie nicht ausgewählt wurde dann gibts den SQL Fehler:

Notice: Undefined index: work in /srv/www//test/Web_Frontend_Webfilter/insert_message.php on line 22.

Mir ist schon klar was PHP mir damit asgen will, aber ich kriegs einfahc nicht in meine Birne rein wie es funzen soll.

Irgendwie müsste es so wie ich das verstehen würde so klappen das ich vor dem INSERT noch irgendwie ne Abfrage einbaue die prüft ob der wert "work" gefüllt ist, wenn nicht dann soll dies gemacht werden.

In die Datenbank eingetragen werden soll lediglich "1" wenn die Box markiert war und "0" wenn die Box nicht markiert war.

Kann mir da mal einer schnell weiterhelfen?

  1. hi,

    Wenn die checkbox gesetzt ist is das auch kein Problem aber wenn sie nicht ausgewählt wurde dann gibts den SQL Fehler:

    Notice: Undefined index: work in /srv/www//test/Web_Frontend_Webfilter/insert_message.php on line 22.

    Mir ist schon klar was PHP mir damit asgen will, aber ich kriegs einfahc nicht in meine Birne rein wie es funzen soll.

    So, wie es immer "funzt": Man greift nicht einfach auf Variablen/Elemente zu, von deren Existenz man nicht zweifelsfrei weiss.

    Sondern man prüft die Existenz erst mal, Stichworte: isset/empty.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo!

    if ($_REQUEST['work']) {
       $work = 1;
    } else {
       $work = 0;
    }

    Wäre etwas was ich so verwenden würde.

    Du solltest sowieso keine unvalidierten Daten direkt in die Query schreiben!

    Schönen Gruß

    Afra

    1. Wahsaga hat es gerade auch geschrieben, wollte natürlich isset() mitverwenden.

      if (isset($_REQUEST['work'])) {
         $work = 1;
      } else {
         $work = 0;
      }

      Schönen Gruß

  3. Servus,

    mit print_r($_REQUEST) siehst du sofort, was da nicht stimmt.
    Die von dir ja bereits erwaehnte Ueberpruefung kann dann mit isset() erfolgen.

    Aber vor allem solltest du dich _dringend_ ueber das Stichwort SQL Injection informieren.

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  4. So erst einmal einen ganz herzlichen Dank !

    Wie schon vermutet war das Problem nicht größerer Natur... mit dem isset funktioniert es jetzt einwandfrei.

    Thx a lot für die Hilfe

    Hallo,

    steh gerade voll vorm Berg obwohl die Lösung mit Sicherheit total simpel ist.

    Hab ne checkbox die vom Benutzer ausgewählt werden kann.
    Selbige hier:

    <strong>Möchten Sie die Seite besuchen :</strong><input type="checkbox" name="work">

    Nachdem der User selbige nun angewählt hat wird das Formular abgesendet und folgendes SQL Statement ausgeführt:

    $sqlInsert = "INSERT INTO tbl_messages "
        . "Set user = '".$_REQUEST['username']."', "
        . "date ='".time()."' , "
        . "url = '".$_REQUEST['url']."' , "
        . "category = '".$_REQUEST['category']."', "
        . "work = '".$_REQUEST['work']."',"
        . "text = '".$_REQUEST['text']."' ";
         mysql_query($sqlInsert);

    Wenn die checkbox gesetzt ist is das auch kein Problem aber wenn sie nicht ausgewählt wurde dann gibts den SQL Fehler:

    Notice: Undefined index: work in /srv/www//test/Web_Frontend_Webfilter/insert_message.php on line 22.

    Mir ist schon klar was PHP mir damit asgen will, aber ich kriegs einfahc nicht in meine Birne rein wie es funzen soll.

    Irgendwie müsste es so wie ich das verstehen würde so klappen das ich vor dem INSERT noch irgendwie ne Abfrage einbaue die prüft ob der wert "work" gefüllt ist, wenn nicht dann soll dies gemacht werden.

    In die Datenbank eingetragen werden soll lediglich "1" wenn die Box markiert war und "0" wenn die Box nicht markiert war.

    Kann mir da mal einer schnell weiterhelfen?