Inhalte von checkboxen anzeigen

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

  • Inhalte von checkboxen anzeigen

    Hallo

    ich habe ein Formular erstellt, welches man online ändern kann. Ein eingeloggter Benutzer sieht nur seine Daten. Bei gewöhnlichen Textfeldern hab ich kein Problem. Diese werden im Formular angezeigt, können geändert werden, und durch Abschicken werden die neuen Inhalte in die DB geschrieben.

    Was hingegen nicht klappt, sind Checkboxen! Ich kriege das nicht hin, dass die Resultate (ob bereits angewählt oder nicht und die geänderten in die DB schreiben und wieder anzeigen).

    Hier ein Beispiel wie ich das mit gewöhnlichen Textfeldern gemacht habe:



    PHP-Code:
    //hier die Daten, die man aus der DB holt und editierbar macht
    $_REQUEST['data']['vorname'] = $db->f('vorname'); 
    HTML-Code:
    //hier das Formularfeld für Vorname
    <input name="data[vorname]" type="text" id="vorname" value="'.$_REQUEST['data']['vorname'].'" size="50">
    Angenommen, meine Checkboxen gehören zum Array 'Obst' und ich habe die Möglichkeit, Apfel, Birne und Banane anzuwählen. Wie lauten die beiden Codebereiche dazu?

    PHP-Code:
    $_REQUEST['data']['obst_apfel'] = $db->f('obst_apfel');
    $_REQUEST['data']['obst_birne] = $db->f('obst_birne');
    $_REQUEST['
    data']['obst_banane'] = $db->f('obst_banane'); 
    HTML-Code:
    <input type="checkbox" name="data[obst_apfel]" value="<?php if (isset($_REQUEST[data][obst_apfel])) echo "checked"; ?>>">
    
    <input type="checkbox" name="data[obst_birne]" value="<?php if (isset($_REQUEST[data][obst_birne])) echo "checked"; ?>>">
    
    <input type="checkbox" name="data[obst_banane]" value="<?php if (isset($_REQUEST[data][obst_banane])) echo "checked"; ?>>">
    meine Felder oben geben mir so immer alle Felder angewählt aus, egal ob ich sie anklicke oder nicht..

    Kann mir jemand helfen?

    Danke im voraus

  • #2
    dir fehlen einfach die HTML Grundlagen.
    Ich poste jetzt ausnahmsweise nicht den selfhtml-link zu formularen. den kannst du dir selbst raussuchen.

    checked="checked" und selected="selected" (je nach dem ob checkbox oder optonsfeld/dropdown)

    ein value=checked ist natürlich quatsch!

    Kommentar


    • #3
      hallo!

      versuchs mal hiermit:

      PHP-Code:
      <?php

      function db_connect()
      {
      $db mysql_connect("localhost"MYSQLUSERMYSQLPASS);

              
      mysql_select_db(MYSQLDB$db);

              if (!
      $db)
              {
                  echo 
      "Die Datenbank konnte nicht geöffnet werden!";
                  exit;
              }
      }
          function 
      db_disconnect()
          {
              global 
      $db;

              if (
      $db)
              {
                  
      mysql_close($db);
                  
      $db NULL;
              }
          }

          
      db_connect();

                  
      $result mysql_query("select fruit from obst where xx='$xx'");
                  
      $fruit mysql_result($result0);
                  
          
      db_disconnect();
          
      $obst = array("apfel","birne","banane");

      foreach(
      $obst as $value) {
        
      $checked $value == $fruit " checked" "";
        echo 
      "<input type='checkbox' name='$value' value=\"$value\" $checked />";
      }
      ?>
      gruß flo

      Kommentar


      • #4
        Hallo Flo

        danke für die Antwort!

        Geht aber leider auch nicht. Das Formular ist anders gebaut und muss in dieser Form bleiben:



        PHP-Code:

        if ($_REQUEST['formsend'] != 1) {

        $sql "
                        SELECT
                                *
                        FROM
                                "
        $a['tab']['formular'] ."
                        WHERE
                                id_formular ='" 
        .$_REQUEST['data']['id_formular']."'";
                
        $db->query($sql);
                
        $db->next_record(); // in diesem Fall nur einen

                // editierbare Felder

                
        $_REQUEST['data']['obst_apfel'] = $db->f('obst_apfel');
                
        $_REQUEST['data']['obst_birne'] = $db->f('obst_birne');
                
        $_REQUEST['data']['obst_banane'] = $db->f('obst_banane');
            } 
        Code:
        print '
        <form action="...">
        
        <input type="checkbox" name="data[obst_apfel]"  value="'.$_REQUEST['data']['obst_apfel'].'">
        etc.
        </form>
        Was nicht stimmt ist die Abfrage der Checkboxen. Was ich brauche ist folgendes:

        Wenn man (nachdem man sich eingeloggt hat und seine Daten sieht) die Werte der Checkboxen ändert und dann auf 'senden' klickt, bekommt man die neue Ansicht des Formulars zu sehen. Neu hat man jetzt z.B. bei der Checkbox 'Apfel' ein Haken und bei Birne keinen mehr. Der neue Wert wird in der DB eingetragen. Vielleicht merkt man jetzt, dass man bei Banane auch noch einen Haken wünscht und wählt die Checkbox an. Klickt man wieder auf senden, wird diese auch angewählt angezeigt.

        Bei all dem befindet man sich noch immer im Formular. Erst wenn man sich ausloggt, kann man nachher auf einer anderen Seite die Resultate sehen.

        Bei gewöhnlichen Textfeldern hab ich keine Mühe. Aber die Checkboxen machen mir das Leben schwer

        Danke für weitere Tipps

        Kommentar


        • #5
          Warum ignorierst du mich? Ich habe dir klar und deutlich gesagt, dass du mit dem value nicht weiter kommst. und dass du ein weiteres attribute checked benötigst.

          Kommentar

          Lädt...
          X