checkbox - Problem

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

  • checkbox - Problem

    Hallo,

    ich habe folgende Aufgabe, die ich irgendwie nicht hinbekomme:

    ich möchte mittels einer checkbox die Werte "JA" (wenn checked) oder "NEIN" (wenn unchecked) in einer Tabelle speichern.

    Bevor das Formular angezeigt wird, lese ich die Tabelle aus, um
    im Formular die checkbox als checked zu markieren, wenn in der
    Tabelle bereits "JA" steht und umgekehrt.

    Dazu habe ich folgendes Skript erstellt:

    PHP-Code:
    <h1>Test Checkbox</h1><br>


    <?php

    include ("db.php");

    $id      "1";     // wird als Variable übergeben
    $datum    date("Y.m.d");

    $result mysql_query("select * from daten WHERE id_nr='$id'");
    $reihen mysql_num_rows($result);

      if (
    mysql_num_rows($result)) {
        while(
    $row=mysql_fetch_array($result)) {
              
    $id         $row['id_nr'];
              
    $vorname    $row['vname'];
              
    $name       $row['nname'];
              
    $email      $row['email'];
              
    $infok      $row['infok'];             // Zeile 37 die Fehler produziert !
    }
    }


    if (!
    $infok) { $infok "NEIN";
                   
    $infok_checked =" ";
                   echo 
    "1. infok war nicht definiert und wurde auf \"NEIN\" gesetzt!<br>";
    }
    else {echo 
    "1. infok ist bereits definiert: '$infok<br>";
          
    $infok_checked "checked = \"checked\"";}

     
    if (isset(
    $_POST["submit1"])) {
        
    $vorname    $_POST["vorname"];     // Füllen der Variable mit Formularinhalt
        
    $name       $_POST["name"];        // Füllen der Variable mit Formularinhalt
        
    $email      $_POST["email"];       // Füllen der Variable mit Formularinhalt
        
    $infok      $_POST["infok"];       // Füllen der Variable mit Formularinhalt


    if (!$infok) { $infok "NEIN";
                   
    $infok_checked =" ";
                   echo 
    "2. infok war nicht definiert und wurde auf \"NEIN\" gesetzt!<br>";
    }
    else {echo 
    "2. infok ist bereits definiert: '$infok<br>";
          
    $infok_checked "checked = \"checked\"";}
    echo 
    "INFOK_2: $infok<br>";

        
        
    $SQL "UPDATE daten SET  vname      = '$vorname',
                                  nname      = '
    $name',
                                  email      = '
    $email',
                                  infok      = '
    $infok',
                                  datum      = '
    $datum'
                             WHERE id_nr = '
    $id'";

         
    $update mysql_query($SQL)
             or die (
    "SQL-Befehl nicht ausführbar!");
         echo 
    "<hr><br><strong><font color=\"#0000A0\">Ihre Daten wurden erfolgreich aktualisiert.<br></font></strong>";
    }

    ?>



    <form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="id"    value="<? echo "$id" ?>"    size=""> 
    <hr>
    </center>
    <table width="75%, *" border="1" cellpadding="3">
      <tr>
        <td><center><strong><font color="#FF0000">* </font></strong></center></td>
        <td><strong>Vorame:</strong></td>
        <td><input type="text"   name="vorname"    value="<? echo "$vorname" ?>" size="30"></td>
      </tr>
      <tr>
        <td><center><strong><font color="#FF0000">* </font></strong></center></td>
        <td><strong>Name:</strong></td>
        <td><input type="text"   name="name"    value="<? echo "$name" ?>" size="30"></td>
      </tr>
      <tr>
        <td><center><strong><font color="#FF0000">* </font></strong></center></td>
        <td><strong>eMail:</strong></td>
        <td><input type="text"   name="email"   value="<? echo "$email" ?>" size="45"></td>
      </tr>
      <tr>
        <td><input name="infok" type="checkbox" <? echo "$infok_checked" ?>></td>
        <td colspan="2">Bitte informieren Sie mich.</td>
      </tr>
      <tr>
        <td colspan = "3">
           <br><center>
           <input type="submit" name="submit1"  value="Daten übernehmen  >>> ">
           <br><br></center>
        </td>
      </tr>
    </table>
    </form>
    Beim ersten Aufruf bekomme ich folgende Fehlermeldung:
    Undefined index: infok in ...\test_checkbox.php on line 37
    (da, wo ich die Variable $infok mit dem Formularinhalt füllen will.
    $infok = $_POST["infok"]; // Füllen der Variable mit Formularinhalt)

    Setze ich das Häkchen, wird "on" in die Tabelle geschrieben (ohne Fehlermeldung.
    Nehme ich das Häkchen wieder raus, wird "NEIN" in die Tabelle geschrieben (jedoch mit obiger Fehlermeldung.

    Ich bin schon am Verzweifeln.

    Wo habe ich da meinen Denkfehler ?
    Kann mir da bitte jemand weiterhelfen?
    Danke.

    musikus69

  • #2
    Undefined index: infok in ...\test_checkbox.php on line 37
    die Spalte infok existiert nicht. Kann es sein, dass die Spalte infook heißt?
    Setze ich das Häkchen, wird "on" in die Tabelle geschrieben (ohne Fehlermeldung.
    weil das Attribut value fehlt, dann wird bei checked der Defaultwert vom Browser genommen.
    Nehme ich das Häkchen wieder raus, wird "NEIN" in die Tabelle geschrieben (jedoch mit obiger Fehlermeldung.
    Fehlermeldung: s. oben
    NEIN, wahrscheinlich weil du bei der Tabellendefinition NEIN als Defaultwert für die Spalte gesetzt hast.

    Kommentar


    • #3
      Hallo asp2php

      danke für Deinen response.

      Das Tabellenfeld "infok" existiert tatsächlich so - das war auch nicht das Problem. (Die Funktion, das was sich in der Tabelle abgespielt hat, war ja einwandfrei).

      Ich hab inzwischen die Lösung gefunden.
      Mit einem "@"-Zeichen bei der Variablenübernahme aus dem Formular
      PHP-Code:
      $infok = @$_POST["infok"]; 
      läuft das ganze jetzt ohne Fehlermeldung ab.

      Vielleicht hat ja noch jemand einen Tipp für mich als Anfänger, wie ich das etwas eleganter bzw. kürzer gestalten könnte, da ich noch jede Menge checkboxen einbauen muß.

      Danke

      musikus69

      Kommentar


      • #4
        PHP-Code:
        $infok = @$_POST["infok"]; 
        Damit behebst du den Fehler nicht wirklich, du unterdrückst nur die Ausgabe einer Fehlermeldung.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          mit @ unterdrückst du die Fehlermeldung, wie jahlives schon gesagt hat. Um den Fehler zu beheben, solltest du folgendes machen:

          PHP-Code:
          $infok 'NEIN';
          if (isset(
          $_POST['infok'])) $infok $_POST['infok']; 

          Kommentar

          Lädt...
          X