Checkbox aus DB abfragen

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

  • Checkbox aus DB abfragen

    Hallo zusammen.
    Ich suche verzweifelt die Funktion, bei der das checked der Checkbox aus der Datenbank abgefragt wird.
    In der DB ist eine 1 oder eine 0 eingetragen im Feld 'fee'.
    Nun möchte ich, dass bei 1 die Checkbox angeklickt ist und bei 0 ist sie nicht angeklickt. Danach schicke ich das Formular und update die DB.
    Das ganze ist in einer While-Schleife drin, wo alle Daten der DB abgefragt werden.
    Wie muss der Code korrekt aussehen:
    PHP-Code:
    <input type="checkbox" name="fee[]" value="<? echo $row_master['fee']; ?>" checked="<? $row_master['fee'] == '1'; ?>" />
    Vielen Dank für die Hilfe!

  • #2
    PHP-Code:
    <input type="checkbox" name="fee[]" value="1" <?php if ($row_master['fee'] == 1) echo 'checked="checked"';?> />
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Herzlichen Dank! Das funktioniert einwandfrei. Nun bleibe ich aber schon wieder hängen, weil ich diese veränderten Checkboxen gleichzeitig in die Datenbank eintragen muss.

      Ich habe das in einem Formular:
      PHP-Code:
      <table width="1000" border="0" valign="left">   
         <tr>    <td width="30">ID</td>
              <td width="50">bez</td> </tr>
      <form action="<?php echo $editFormAction?>" method="post" name="form1" id="form1">
       <?php do { ?>
          <tr><td><?php echo $row_master['ID']; ?>&nbsp; </td>
                         <td>                  
                         <input type="checkbox" name="fee[]" value='1' <?php if ($row_master['fee'] == 1) echo 'checked="checked"';?> />  
      <?php } while ($row_master mysql_fetch_assoc($master)); ?><input type="submit" value="aktualisieren" />
             </td>
                <input type="hidden" name="update" value="form1" />
      Wie muss nun der dazugehörige DB Eintrag sein? Ich habe folgendes, aber das funktioniert noch nicht:

      PHP-Code:
       <?php
      $fee 
      $_POST['fee'];
      $ID$_POST['ID'];

      foreach( 
      $fee as $key => $v ) {
      $insertSQL "UPDATE table (fee, ID) VALUES ('$v', '$fee[$key]')";
                             
      mysql_select_db($database_tool$tool);
       
      $Result1 mysql_query($insertSQL$tool) or die(mysql_error());
      }
      ?>

      Kommentar


      • #4
        Hi asterix6,
        die Syntax der Update-Anweisung ist . . .
        PHP-Code:
        update tabellenname set Feldname=wert
        //oder
        update tabelle set Feldname=wert where id=
        Siehe --> MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.10 UPDATE
        Wenn du Formularelemente als Array deklarierst und in einer foreach-Schleife das gesendete Array
        nach Index und Wert zerlegst (foreach( $fee as $key => $v ) . . . ) um mit dem Index zu arbeiten,
        so musst du bei der Deklaration im Formular einen Index angeben.
        PHP-Code:
        <input type="checkbox" name="fee[1]" value="1">
        <
        input type="checkbox" name="fee[2]" value="1">
        <
        input type="checkbox" name="fee[3]" value="1">
        //usw. . . 
        Ansonsten fängt der Index im gesendeten Array immer bei 0 an, auch wenn z.B. die vierte und sechste
        Checkbox angeklickt ist. Und dann stimmt die Zuordnung nicht mehr. Dann musst du auch prüfen, ob überhaupt
        ein Array gesendet wurde (mind. eine Checkbox angeklickt). Ansonsten wirft die foreach-Anweisung einen Fehler,
        weil nicht angeklickte Checkboxen nicht gesendet werden. Schlußfolgerung daraus ist, dass du die Checkbox-Felder
        in der Tabelle nicht einfach manipulieren kannst, in dem Checkboxen an-/abgewählt werden. Wenn du die entspr.
        Tabellenfelder mittels Update von 1 wieder auf 0 setzen willst, so musst du prüfen, welche Checkboxen
        gesendet oder nicht gesendet wurden und dann das Tabellenfeld aktualisieren. Einfacher wäre es, vor der Update-Anweisung
        alle Tabellenfelder auf 0 zu setzen und dann das Update ausführen.

        Gruß
        Günni

        Kommentar

        Lädt...
        X