Checkboxes: Alle auswählen mit php nicht möglich

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

  • Checkboxes: Alle auswählen mit php nicht möglich

    Hallo,
    ich hab ein formular bei dem es die Möglichkeit gibt alle checkboxes auszuwählen.

    Das ist in etwa die art des Codes aus meinem Form. Dürfte bekannt sein.

    PHP-Code:
    <script type="text/javascript" language="JavaScript">
    <!-- 
    Begin
    var checkflag "false";
    function 
    check(field) {
    if (
    checkflag == "false") {
    for (
    0field.lengthi++) {
    field[i].checked true;}
    checkflag "true";
    return 
    " keine "; }
    else {
    for (
    0field.lengthi++) {
    field[i].checked false; }
    checkflag "false";
    return 
    " alle "; }
    }
    //  End -->
    </script>


    im Body

    <form name="myform" action="" method="post">

    <
    input type="checkbox" name="list" value="1">Java
    <input type="checkbox" name="list" value="2">JavaScript
    <input type="checkbox" name="list" value="3">CSS
    <input type="checkbox" name="list" value="4">HTML
    <input type="checkbox" name="list" value="5">DHTML

    <input type="button" value=" alle "
    onClick="this.value=check(this.form.list)">

    </
    form
    Um Die Checkbox values in ein Array zu lesen müsste man aus list list[] machen. Problem ist, dass ich dann nicht mehr alle auswählen kann. Habs auch schon so probiert:
    PHP-Code:
     onclick="mark(this.form.elements(';print"'list[]'"; print'))" 
    Das funktioniert leider nur beim IE. Hat noch jemand eine optimale lösung?

    Das Array fange ich wie folgt auf:

    PHP-Code:
    $list $_POST['list']; 

  • #2
    Nummeriere die namen durch, also

    list[0]
    list[1]

    und lass value bei jeder box auf 1

    Kommentar


    • #3
      Also,
      meine Checkboxes werden jetzt so durchnummeriert:

      PHP-Code:
      <input type="checkbox" name="list['; print $i; print']" value="1"
      Mein Button sieht so aus:

      PHP-Code:
      <input type=button value="Alle auswählen" onclick="mark(this.form.list[])"
      Leider funktioniert die Auswahl aller Elemente immer noch nicht. Wenn ich alle values der Checkboxen, die ja über eine for-Schleife erstellt werden auf 1 lasse, kann ich nachher doch keine Unterscheidung mehr vornehmen. Im Value stand eine ID, mit dessen hilfe ich die Elemente in einer Datenbank selektieren und bearbeiten konnte. Diese Möglichkeit soll auch weiter bestehen.
      Zuletzt geändert von lokiht; 19.09.2005, 23:06.

      Kommentar


      • #4
        Na und, wenn du die Values stattdessen im Namen hast, gehst du halt nicht nach dem Array-Inhalt, sondern dem Array Schlüssel

        PHP-Code:
        foreach ($_POST['list'] as $key => $elem) {
        // tue mit $key, was immer du willst
        // Das Array enthält nur die Boxen, die auch checked wurden
        // Also bei allen Boxen wären das auch die Elemente 1-5

        Und das mit dem alle markieren per JS musste auch in einer schleife machen:

        Code:
        for(i = 1; i <= 5; i ++) {
            document.getElementsByName("list[" + i + "]")[0].checked = true;
        }

        Kommentar


        • #5
          Ok, dass übersteigt mein verständnis

          Wo genau baue ich die Schleife ein. Gibt es keine andere Möglichkeit?

          Kommentar


          • #6
            PHP-Code:
            <input type="checkbox" name="list[1]" value="1"Java
            <input type="checkbox" name="list[2]" value="1"JavaScript
            <input type="checkbox" name="list[3]" value="1"CSS
            <input type="checkbox" name="list[4]" value="1"HTML
            <input type="checkbox" name="list[5]" value="1"DHTML

            <input type=button value="Alle auswählen" onclick="checkAll();">
            [...]
            <
            script type="text/javascript" language="JavaScript">
            function 
            checkAll() {
                for(
            1<= 5++) {
                    
            document.getElementsByName("list[" "]")[0].checked true;
                }
            }
            </
            script
            Ein Klick auf den Button ruft die funktion "checkAll" auf und die wiederrum hängt überall einen Haken rein. Du muss halt nur die grenzen anpassen. Diese Schleife checked alles von list[1] bis list[5]

            PHP-Code:
            foreach ($_POST['list'] as $key => $elem) {
                print 
            $key "  ->  " $elem "<br />";

            Probier dieses Code-Stückchen mal im PHP-Script, dann wirste sehen, wie sich die Checkboxen aufs Array auswirken
            Zuletzt geändert von EEBKiller; 19.09.2005, 23:28.

            Kommentar


            • #7
              Besten Dank erstmal. Das Problem ist, dass ich erst nach dem Aufruf einiger PHP-Scripte weiss, wie viele checkboxes ich hab. Wie kann ich denn nach einem Klick auf den Button Alle auswählen die Anzahl an checkboxes ($i) mit übergeben?

              Kommentar


              • #8
                brauchst du nicht, ein

                $anzahl = count($_POST['list'])

                in PHP reicht, um festzustellen, wieviele Haken man nun angekreuzt hat.

                Kommentar


                • #9
                  Nein, nein. Erst wenn alle checkboxes erzeugt sind, weis ich wieviel ich bei der schleife im JS angeben muss.

                  Js //Hier muss ich es schon wissen
                  ...

                  PHP-Code // Da weis ich es erst

                  ...

                  Kommentar


                  • #10
                    Im PHP-Code, in dem du die Checkboxen erzeugst, zählst du auch noch, wieviele Checkboxen du ausgibst und lässt dann das JS dementsprechend von PHP umstricken :

                    PHP-Code:
                    <script type="text/javascript" language="JavaScript">
                    function checkAll() {
                        for(i = 1; i <= <?php print $anzahl?>; i ++) {
                            document.getElementsByName("list[" + i + "]")[0].checked = true;
                        }
                    }
                    </script>
                    Warum sollte man PHP nur dafür verwenden, um HTML und Formulare zu erstellen ?!

                    Kommentar

                    Lädt...
                    X