Checkboxes dynamisch auswerten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Checkboxes dynamisch auswerten

    ....genau das ist mein Problem, was mich schon seit einiger Zeit beschäftigt:

    Szenario ist folgendes:
    Ich habe eine HTML-Seite, welche aus ca. 30 Checkboxen besteht. Diese Checkboxen können alle angeklickt werden, oder auch nur einige oder auch nur eine oder keine.

    Das Ganze schicke ich an eine .php-Datei und werte das Ganze dann aus. Klingt eigentlich einfach, ist aber für mich irgendwie komplett undurchschaubar.
    Zudem soll eine Variable geschrieben werden, in der bei jeder nicht angeklickten Checkbox eine "0" geschrieben und bei jeder aktivierten Checkbox eine "1" geschrieben werden soll, so dass ich dann diese Nummer in die DB speichern kann.

    Ich hätte dann also als Beispiel eine Variable $var mit dem Wert 011000000000000000000000000000.

    Anhand dieser Ziffer kann ich dann mittels switch...case herausfinden, welche Kategorie sich dahinter verbirgt.
    Bisher habe ich:

    Code:
    <html> 
    <head>
    <title>Unbenanntes Dokument</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <body> 
    <form name="form1" method="post" action="auswert.php"> <p> 
    <input type="checkbox" name="checkbox[0]" value="1"> Test1 <br> 
    <input type="checkbox" name="checkbox[1]" value="1"> Test2<br> 
    <input type="checkbox" name="checkbox[2]" value="1"> Test3<br> 
    <input type="checkbox" name="checkbox[3]" value="1"> Test4<br> 
    <input type="checkbox" name="checkbox[4]" value="1"> Test5 </p> 
    <p> <input type="submit" name="Submit" value="Senden"> </p> 
    </form> 
    </body> 
    </html>
    Die dazugehörige PHP-Datei:
    PHP Code:
    <?php
      
    for ($i 0$i<=5$i++) {
        if (isset(
    $_POST['checkbox'][$i])) {
            echo 
    "Checkbox ".($_POST['checkbox'][$i])." ist angeklickt.";
        } else 
            echo 
    "Checkbox ".($_POST['checkbox'][$i])." ist NICHT angeklickt.";
    }
    ?>
    Das habe ich bisher geschafft....ist nicht viel, bisher wollte ich mir ausgeben lassen, welche Checkbox angeklickt und welche es nicht ist, aber das klappt nicht.
    Wieso nicht, könnt ihr mir helfen?? Wäre supernett......ich verzweifel langsam
    Geht nich, gibts nich!
    God is real...unless declared as integer!

  • #2
    was heißt "klappt nicht"?
    zeig mal print_r($_POST).

    Comment


    • #3
      hast du dir das ganze schonmal mit einem print_r($_POST) angesehen? dann siehst du auch was gesetzt ist und was nicht...
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Comment


      • #4
        Versuch's mal damit:
        PHP Code:
        <?php
          
        for ($i 0$i<5$i++) {
            if (isset(
        $_POST['checkbox'][$i])) {
                echo 
        "Checkbox ".$i." ist angeklickt.<br>";
            } else
                echo 
        "Checkbox ".$i." ist NICHT angeklickt.<br>";
        }
        ?>
        Gruß Marian
        Online-Kurse die jeder versteht: HTML, PHP, MySQL, Word, Excel
        http://www.lernpilot.de/wbt/

        Comment


        • #5
          Hier ist die Ausgabe. Was mich verwundert ist, dass es jetzt komischerweise klappt.....

          Array ( [checkbox] => Array ( [0] => 1 [1] => 1 ) [Submit] => Senden )

          Und ich hatte Checkbox 1 und 2 angeklickt.
          Hm, danke - wofür auch immer *lach*

          Aber jetzt hätte ich immer noch das Problem, dass ich ja die Zahl (sozusagen) als Ganzes haben möchte, also wenn ich 1 und 2 anklicke und 3-5 nicht, dann sollte 11000 herauskommen - in einer Variable gespeichert...oder hätte ich das dann schon?
          Geht nich, gibts nich!
          God is real...unless declared as integer!

          Comment


          • #6
            Erstelle dir einen String, der aus so vielen Nullenbesteht, wie du checkboxen im Formular angezeigt hast.

            Dann arbeitest du $_POST['checkbox'] ab, ist $_POST['checkbox'][$i] gesetzt, schreibst du in $string{$i} eine 1
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7


              Yo, supi!!!! Hat geklappt, dankeschön!!!!!!!!!!!!
              Geht nich, gibts nich!
              God is real...unless declared as integer!

              Comment


              • #8
                Hallo zusammen ich habe ein ähnliches problem. nur werden die Checkboxen bei mir auch dynamisch generiert.

                Folgender Code generiert die Checkboxen:


                $usertest= odbc_result($sql_logcheck,"user_id");
                $sql_query = "select * from user_reports where user_idref = '$usertest'";
                $sql_result = odbc_exec($con, $sql_query);
                echo "<form action='report.php?mode=6' method='post'>";

                while(odbc_fetch_row($sql_result))
                {

                echo '<input type="checkbox" value='.odbc_result($sql_result,"report_id").' name="report[]" />';

                }

                echo '<input type="submit" name="create" value="'.$TEXT['report-create'].'"/><input type="submit" name="delete" value="'.$TEXT['report-delete'].'"/>';
                echo '</form>';



                Folgender Code soll die Checkboxen auswerten:
                for ($i = 0; $i<10; $i++) {
                if (isset($_POST['report'][$i])) {
                echo "Checkbox ".$i." ist angeklickt.<br>";
                } else
                echo "Checkbox ".$i." ist NICHT angeklickt.<br>";
                }


                Könnt ihr mir helfen? Es werden maximal 10 Checkboxen angezeigt

                Comment


                • #9
                  Es werden maximal 10 Checkboxen angezeigt
                  for ($i = 0; $i<10; $i++)
                  hm... mal scharf überlegen...

                  Comment

                  Working...
                  X