Probleme mit Checkbox

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Checkbox

    hallo!

    Wir wollen unsere Homepage mittels PHP-Formularen aktualisieren. In diesem Formular befinden sich Checkboxen. Wenn man das Formular absendet, bekommen wir eine Fehlermeldung, wenn Felder in der Checkbox nicht angeklickt sind. Die Fehlermeldung sieht so aus:

    Notice: Undefined index: DI in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 17

    Notice: Undefined index: DO in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 19

    Wir haben die "POST"-Methode verwendet.

    So lautet der PHP-Befehl für das Speichern in die DB:

    <?php
    //Datenbankverbindung herstellen:
    require_once ("dbconnect.php");
    $name = $_REQUEST["name"];
    $ort = $_REQUEST["ort"];
    $beginndatum = $_REQUEST["beginndatum"];
    $endedatum = $_REQUEST["endedatum"];
    $MO = $_REQUEST["MO"];
    $DI = $_REQUEST["DI"];
    $MI = $_REQUEST["MI"];
    $DO = $_REQUEST["DO"];
    $FR = $_REQUEST["FR"];
    $SA = $_REQUEST["SA"];
    $taeglich = $_REQUEST["taeglich"];
    if ($taeglich <> "")
    {
    $wochentag = "$taeglich";
    }
    else
    {
    $wochentag = "$MO $DI $MI $DO $FR $SA";
    }
    $beginnzeit = $_REQUEST["beginnzeit"];
    //Bedingung Alle Felder ausfüllen:
    if ($name == "" or $ort == "" or $beginndatum == "" or $endedatum == "" or $wochentag == "" or $beginnzeit == "")
    {
    echo "Bitte füllen Sie alle Felder aus! <br>\n <a href='kurstermine_eintragen.php'>Zurück</a>";
    }
    else
    {
    //Formulardaten in die Datenbank importieren:
    $eintrag = "INSERT INTO kurstermine (name, ort, beginndatum, endedatum, wochentag, beginnzeit)
    VALUES ('$name','$ort','$beginndatum','$endedatum','$wochentag','$beginnzeit')";
    $eintragen = mysql_query($eintrag);

    echo "<a href='kurstermine_eintragen.php'><b>Neuer Eintrag</b></a><br><br>";
    }

    ?>

    Die Daten werden zwar gespeichert, es kommt jedoch immer die Fehlermeldung, wie könnten wir diese wegbekommen?

    Bitte helft uns, wir wären euch sehr dankbar.

    Danke im Voraus!

  • #2
    Es wird versucht auf eine Variable zuzugreifen, die es niocht gibt.
    Beim Seitenerstaufruf gibt es keine Variable $_REQUETS['name'], also müssen hier Standardstartwerte eingetragen werden:

    PHP-Code:
    $name = (isset($_REQUEST["name"])) ? $_REQUEST["name"]:''
    Das muss mit allen Variablen passieren.

    Kommentar


    • #3
      Wir haben nun unseren Code verändert:
      PHP-Code:
       $MO = (isset($_REQUEST["MO"])) ? $_REQUEST["MO"]:'MO';
      $DI = (isset($_REQUEST["DI"])) ? $_REQUEST["DI"]:'DI';
      $MI = (isset($_REQUEST["MI"])) ? $_REQUEST["MI"]:'MI';
      $DO = (isset($_REQUEST["DO"])) ? $_REQUEST["DO"]:'DO';
      $FR = (isset($_REQUEST["FR"])) ? $_REQUEST["FR"]:'FR';
      $SA = (isset($_REQUEST["SA"])) ? $_REQUEST["SA"]:'SA';
      $taeglich = (isset($_REQUEST["taeglich"])) ? $_REQUEST["taeglich"]:'täglich';
      if (
      $taeglich != "")
          {
          
      $wochentag "$taeglich";
          }
          else
          {
          
      $wochentag "$MO $DI $MI $DO $FR $SA";
          } 
      Jetzt haben wir das Problem, dass wenn man in der Checkbox beispielsweise "MO" anklickt, trotzdem in die Datenbank "täglich" geschrieben wird.
      Was müssen wir im Code verändern?

      Danke!

      Kommentar


      • #4
        Einfach OnClick disable'n.
        Zuletzt geändert von onemorenerd; 14.12.2005, 14:19.

        Kommentar


        • #5
          Original geschrieben von moritzteam
          Jetzt haben wir das Problem, dass wenn man in der Checkbox beispielsweise "MO" anklickt, trotzdem in die Datenbank "täglich" geschrieben wird.
          Und auf was für einem Formularfeldtyp basiert der Wert von $_REQUEST["taeglich"] ...?

          Wenn dafür ein Wert, wenn auch ein leerer, übergeben wird, ergibt die Überprüfung mit isset() natürlich immer true - dann brauchst du eine sinnvollere Alternative. (Welche das bspw. sein könnte, verrät dir das Manual.)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Danke für die Hilfe!

            Wir sind eine Schülerprojektgruppe deshalb kennen wir uns nicht so gut aus, aber wir hoffen, dass wir deine Frage richtig verstanden haben.

            Wir haben in einer HTML-Site eine Checkbox eingefügt, die von PHP-Formularen abgefragt wird.
            "taeglich" ist auch eine Checkbox.

            Kommentar


            • #7
              Original geschrieben von moritzteam
              PHP-Code:
              $taeglich = (isset($_REQUEST["taeglich"])) ? $_REQUEST["taeglich"]:'täglich'
              Hier bekommt $taeglich von dir doch auf jeden Fall einen Wert zugewiesen - entweder den, der vom Formular übergeben wurde, oder den String 'täglich'.

              Danach ergibt die Abfrage
              PHP-Code:
              if ($taeglich != ""
              nur noch sehr begrenzt Sinn - nur dann, wenn als Wert der Checkbox ein Leerstring übergeben worden wäre, könnte diese Bedingung erfüllt sein.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ich komme einfach mit den Checkboxen nicht weiter!
                Das Problem ist, dass wenn eine Checkbox nicht angeklickt wird eine Fehlermeldung erscheint.
                Uns wurde geraten den isset-Befehl anzuwenden:

                PHP-Code:
                $MO = (isset($_REQUEST["MO"])) ? $_REQUEST["MO"]:'MO';
                $DI = (isset($_REQUEST["DI"])) ? $_REQUEST["DI"]:'DI';
                $MI = (isset($_REQUEST["MI"])) ? $_REQUEST["MI"]:'MI';
                $DO = (isset($_REQUEST["DO"])) ? $_REQUEST["DO"]:'DO';
                $FR = (isset($_REQUEST["FR"])) ? $_REQUEST["FR"]:'FR';
                $SA = (isset($_REQUEST["SA"])) ? $_REQUEST["SA"]:'SA';
                $taeglich = (isset($_REQUEST["taeglich"])) ? $_REQUEST["taeglich"]:'täglich'
                Wenn ich diesen Befehl verwende, wird in die Datenbank immer nur "taeglich" geschrieben, egal welche Checkbox ich anklicke!

                Davor habe ich das gemacht:
                PHP-Code:
                $MO $_REQUEST["MO"];
                $DI $_REQUEST["DI"];
                $MI $_REQUEST["MI"];
                $DO $_REQUEST["DO"];
                $FR $_REQUEST["FR"];
                $SA $_REQUEST["SA"];
                $taeglich $_REQUEST["taeglich"]; 
                Dabei wurde in die Datenbank alles richtig eingetragen, jedoch erscheint diese Fehlermeldung:
                Notice: Undefined index: MI in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 18

                Notice: Undefined index: DO in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 19

                Notice: Undefined index: FR in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 20

                Notice: Undefined index: SA in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 21

                Notice: Undefined index: taeglich in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 22

                Kommentar


                • #9
                  mach mal ne Testausgabe von $_POST. dann wollen wir erstmal sehen, welche daten vorhanden sind.

                  ansonsten muss ich feststellen, dass teile eurer beschreibung einfach nicht der wahrheit entsprechen (können).

                  wie sieht euer code jetzt aus?
                  Zuletzt geändert von TobiaZ; 10.01.2006, 08:27.

                  Kommentar


                  • #10
                    Danke für den Rat, wir sind jedoch eine Schülerprojektgruppe und wissen nicht was du damit meinst!
                    Kannst du uns das vielleicht genauer erklären, bitte?!

                    Kommentar


                    • #11
                      Moin,
                      also wenn doch "taeglich" gesetzt/gecheckt wurde, spielen die restlichen Tage ja überhaupt keine Rolle mehr. (Widersprich mir wenn ich da unrecht habe)
                      Vorraussetzung für folgenden Code ist, dass das Formular also Methode die POST-Methode zum verschicken der Daten verwendet.
                      PHP-Code:

                      if ( isset($_POST) )
                      {
                        if ( isset(
                      $_POST['taeglich']) && !empty($_POST['taeglich']) )
                        {
                          
                      // taeglich wurde gesetzt.. hier könnte dein db insert geschehen
                          
                      $taeglich $_POST["taeglich"];
                        }
                        else
                        {
                          
                      // taeglich wurde nicht gesetzt, jetzt musst du prüfen welche checkboxen gewählt wurden
                          
                      $MO = (isset($_POST['MO']) && !empty($_POST['MO'])) ? $_POST['MO']:'';
                          
                      $DI = (isset($_POST['DI']) && !empty($_POST['DI'])) ? $_POST['DI']:'';
                          
                      $MI = (isset($_POST['MI']) && !empty($_POST['MI'])) ? $_POST['MI']:'';
                          
                      $DO = (isset($_POST['DO']) && !empty($_POST['DO'])) ? $_POST['DO']:'';
                          
                      $FR = (isset($_POST['FR']) && !empty($_POST['FR'])) ? $_POST['FR']:'';
                          
                      $SA = (isset($_POST['SA']) && !empty($_POST['SA'])) ? $_POST['SA']:'';
                          
                      // hier könnte dein db insert geschehen
                        
                      }

                      Kommentar


                      • #12
                        sorry, hab mein posting nochmal editiert,

                        Kommentar


                        • #13
                          Hab den Rat von "reallife" befolgt und es geht! Danke schön!

                          Der Code sieht nun so aus:
                          PHP-Code:
                          if ( isset($_POST) )
                          {
                            if ( isset(
                          $_POST['taeglich']) && !empty($_POST['taeglich']) )
                            {
                              
                          // taeglich wurde gesetzt.. hier könnte dein db insert geschehen
                              
                          $taeglich $_POST["taeglich"];
                            }
                            else
                            {
                              
                          // taeglich wurde nicht gesetzt, jetzt musst du prüfen welche checkboxen gewählt wurden
                              
                          $MO = (isset($_POST['MO']) && !empty($_POST['MO'])) ? $_POST['MO']:'';
                              
                          $DI = (isset($_POST['DI']) && !empty($_POST['DI'])) ? $_POST['DI']:'';
                              
                          $MI = (isset($_POST['MI']) && !empty($_POST['MI'])) ? $_POST['MI']:'';
                              
                          $DO = (isset($_POST['DO']) && !empty($_POST['DO'])) ? $_POST['DO']:'';
                              
                          $FR = (isset($_POST['FR']) && !empty($_POST['FR'])) ? $_POST['FR']:'';
                              
                          $SA = (isset($_POST['SA']) && !empty($_POST['SA'])) ? $_POST['SA']:'';
                              
                          // hier könnte dein db insert geschehen
                            
                          }
                          }
                          if (
                          $taeglich <> "")
                              {
                              
                          $wochentag "$taeglich";
                              }
                              else
                              {
                              
                          $wochentag "$MO $DI $MI $DO $FR $SA";
                              } 
                          Das if ($taeglich <> "") usw. hab ich deshalb gemacht, dass wenn jemand täglich anklickt, nicht mehr die Möglichkeit hat auch einen anderen Tag zu aktivieren.
                          Nun erscheint folgende Fehlermeldung:
                          Notice: Undefined variable: taeglich in c:\inetpub\wwwroot\fahrschule\admin\Form_Anbindung\kurstermine.php on line 35
                          Wenn ich jedoch die Checkbox "täglich" anklicke, erscheint die Meldung nicht, nur bei den anderen Tagen!
                          Was könnte da noch der Fehler sein?

                          Kommentar


                          • #14
                            Wenn ich jedoch die Checkbox "täglich" anklicke, erscheint die Meldung nicht, nur bei den anderen Tagen!
                            Was könnte da noch der Fehler sein?
                            Na ist doch klar wieso. Schau dir mal die Bedingungen an. Wenn du "taeglich" nicht ausgewählt hast, wird der ELSE-Zweig ausgeführt und da gibt es kein '$taeglich'.

                            Füg in den ELSE-Zweig noch diese Zeile ein:
                            PHP-Code:
                            $taeglich NULL
                            Sollte dann so aussehen:
                            PHP-Code:
                            if ( isset($_POST) )
                            {
                              if ( isset(
                            $_POST['taeglich']) && !empty($_POST['taeglich']) )
                              {
                                
                            // taeglich wurde gesetzt.. hier könnte dein db insert geschehen
                                
                            $taeglich $_POST["taeglich"];
                              }
                              else
                              {
                                
                            // taeglich wurde nicht gesetzt, jetzt musst du prüfen welche checkboxen gewählt wurden
                                
                            $taeglich NULL;
                                
                            $MO = (isset($_POST['MO']) && !empty($_POST['MO'])) ? $_POST['MO']:'';
                                
                            $DI = (isset($_POST['DI']) && !empty($_POST['DI'])) ? $_POST['DI']:'';
                                
                            $MI = (isset($_POST['MI']) && !empty($_POST['MI'])) ? $_POST['MI']:'';
                                
                            $DO = (isset($_POST['DO']) && !empty($_POST['DO'])) ? $_POST['DO']:'';
                                
                            $FR = (isset($_POST['FR']) && !empty($_POST['FR'])) ? $_POST['FR']:'';
                                
                            $SA = (isset($_POST['SA']) && !empty($_POST['SA'])) ? $_POST['SA']:'';
                                
                            // hier könnte dein db insert geschehen
                              
                            }

                            Prüfe im nächsten Schritt auf !is_null($taeglich) anstatt $taeglich <> '', also:
                            PHP-Code:
                             if ( !is_null($taeglich) )
                            {
                              
                            $wochentag "$taeglich";
                            }
                            else
                            {
                              
                            $wochentag "$MO $DI $MI $DO $FR $SA";

                            Kommentar


                            • #15
                              Wir sind dir sooooooooo dankbar! Du hast uns wirklich sehr weitergeholfen. Da wir eine Schülerprojektgruppe sind und uns nicht gut auskennen, haben wir uns wirklich sehr mit dieser Thematik gequält und sind nun froh, dass alles wirklich klappt!!!

                              DANKE!!!

                              Kommentar

                              Lädt...
                              X