Checkbox mit array prüfen

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

  • Checkbox mit array prüfen

    Moin

    Wo ist könnte hier mein denkfehler liegen?

    PHP-Code:
          $rechte = array("0" => array("NewsSchreiben""NS"), "1" => array("NewsAntworten""NA"),
     
    "2" => array("FavoritenListe""FL"),
                          
    "3" => array("Search""SH"),
     
    "4" => array("SPPunkte""SPP"), "5" => array("MyKoordDelete""ML"),
                          
    "6" => array("KompletteListe""KL"), "7" => array("KeySend""KS"),
     
    "8" => array("AktivKey""AK"),
                          
    "9" => array("OnUser""OU"),
     
    "10" => array("Ssystem""SS"), "11" => array("SPBericht""SB"),
                          
    "12" => array("NewsAutoDel""NAD"));

             for ( 
    $i 0$i count($rechte); $i++)
             {

                
    $key1 '$_POST[\''.$rechte["$i"][0].'\']';
                
    $key2 '$'.$rechte["$i"][1];
                if ( 
    $key1 == "on" ){ $key2 1; }else{ $key2 2; }
             } 
    Das ganze soll auf diese art feststellen ob eine Checkbox on o. off ist aber das klappt nicht ganz

  • #2
    So ganz kann ich es auf die schnelle nicht nachvollziehen, wie deine Prüfung da funktionieren soll - aber auf den ersten Blick scheint das etwas zu kompliziert aufgezogen zu sein.

    Zeig mal den Ausschnitt deines Forms, wo sich die Checkboxen befinden - wenn du für die Checkbox-Namen schon Arrays verwendest dann sollte das ganze evtl. einfacher gehen.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      so das sind nur zwei denke mal dass das reichen sollte, denn die anderen sehen nicht anders aus.
      Ja und wenn das mit dem array funzt dann schreibe ich das auch so in einen array denn das spart mir viel quelltext

      PHP-Code:
        $text .= '<tr>';
            if (
      $_POST['newsSchreiben'] == "1"){$checked 'checked';}else{$checked '';}
            
      $text .= '<td align="right">
      <input class="input" type="checkbox" name="NewsSchreiben" '
      .$checked.'></td>
      <td class="input-w"><pre>Nachrichten Schreiben</pre></td>'
      ;

            if (
      $_POST['MyKoordDelete'] == "1"){$checked 'checked';}else{$checked '';}
            
      $text .= '<td align="right">
      <input class="input" type="checkbox" name="MyKoordDelete" '
      .$checked.'></td>
      <td class="input-w"><pre>Eigene Koord\'s Löschen</pre></td>'
      ;
         
      $text .= '</tr>'

      Kommentar


      • #4
        ich mach Checkboxen lieber so in der Art:

        PHP-Code:
        <input type="checkbox" name="box[]" value="NewsSchreiben">
        <
        input type="checkbox" name="box[]" value="MyKoordDelete"
        Bau dir mal ein Form mit diesen Checkboxen und lass dir im aufgerufenen PHP das Array $box mal mit var_dump($_POST["box"]) anzeigen - dann solltest eigentlich ganz leicht selber draufkommen wie du eine entsprechende Prüfung aufbauen kannst
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Wenn du schon Quelltext sparen willst..

          PHP-Code:
          if ($_POST['newsSchreiben'] == "1"){$checked 'checked';}else{$checked '';} 
          wird zu

          PHP-Code:
          $checked = ($_POST['newsSchreiben'] == "1") ? "CHECKED" ""
          Weiter wäre die Frage nach dem WAS klappt nicht so ganz?
          Dein 2ter Post sieht ganz ordendlich aus. Mit dem ersten komm ich ohne das mal auszutesten auch nicht wirklich weiter..

          Was Quetschi geschrieben hat hört sich wesentlich besser an also den Namen der Checkbox direkt als Array zu nehmen.
          Spart nochmehr Quelltext :P
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            @Quetschi:
            also gut der vorschlag ist echt nicht schlecht, aber wenn ich nur einzelne boxen auswähle dann kommen unterschiedliche werte und da weiss ich gerade nicht wie ich die variablen zuweisen soll damit zum schluss dann auch das häckchen drinne bleibt, kann ja sein das ich da was übersehe, aber vieleicht noch eine kleine hilfestellung eurer seitz wäre sehr nett

            z.B.: Newsschreiben bei einzel auswahl ist das array 0
            o. Newsantworten bei einzel auswahl ist dann auch das array 0

            wie muss ich das machen, denn das wird ja in ein DB abgespeichert, und bei jeden neu aufruf sollen die häckchen da sein wo ich diese auch gesetzt habe.

            Kommentar


            • #7
              PHP-Code:
              if(in_array("NewsSchreiben",$_POST["box"]){
              //Checkbox aktiv setzen

              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                So würde ich das auch sehen.
                Teste den Code hier einfach mal.

                PHP-Code:
                <? 
                $box = (is_array($_POST["box"])) ? $_POST["box"] : array();
                ?>
                <form method="POST">
                <INPUT type="checkbox" name="box[]" value="box1" <? if(in_array("box1",$box)) echo "checked"; ?>>Box1
                <INPUT type="checkbox" name="box[]" value="box2" <? if(in_array("box2",$box)) echo "checked"; ?>>Box2
                <INPUT type="checkbox" name="box[]" value="box3" <? if(in_array("box3",$box)) echo "checked"; ?>>Box3
                <INPUT type="checkbox" name="box[]" value="box4" <? if(in_array("box4",$box)) echo "checked"; ?>>Box4
                <INPUT type="checkbox" name="box[]" value="box5" <? if(in_array("box5",$box)) echo "checked"; ?>>Box5
                <br \>
                <INPUT type="submit">
                </form>
                <pre>
                <?
                print_r($_POST);
                ?>
                Für das Eintragen in die DB könntest du serialize() bzw unserialize() benutzen.. Guckst du PHP.NET
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar


                • #9
                  ok diese möglichkeiten sind nicht schlecht nur hatte ich das ja so in dieser art, wenn auch nicht mit dem in_array siehe oben, darum wollte ich das etwas kompakter versuchen zugestalten ich werd mal sehen was ich da machen kann und euch dieses dann mitteilen ob ich da noch fortschritte mache aber diese in_array function ist nicht schlecht muss mal sehen wie ich das angehe

                  aber erstmal danke für eure mühen

                  Kommentar


                  • #10
                    Ein Ansatz für dich wäre, die Checkboxen anhand deines Arrays (das evtl. aber einfacher aufgebaut sein sollte) bereits 'dynamisch' zu erstellen und zu prüfen. Mit ein paar Codezeilen solltest so beliebig viele Checkboxen bereitstellen können und auch gleichzeitig ne Prüfung dafür bekommen. Die gewünschten Checkboxen müssen dann nur noch im Array definiert werden
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar


                    • #11
                      Weils Wetter heut so schön ist bin ich mal so frei:
                      PHP-Code:
                      <?php

                          $boxes
                      [] = "Wert1";
                          
                      $boxes[] = "Wert2";
                          
                      $boxes[] = "Wert3";
                          
                          foreach(
                      $boxes as $box)
                          {
                      ?>
                      <input type="checkbox" name="box[]" value="<?php echo $box?><?php

                          
                      if(is_array($_POST["box"]) && in_array($box,$_POST["box"]))
                          {
                              echo 
                      "checked=\"checked\"";
                          }
                      ?> />
                      <?php

                          
                      echo $box."<br />";

                          }

                      ?>
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Das Wetter scheint etwas zu schön

                        PHP-Code:
                        echo "checked=\"checked\""
                        Sicher?
                        gruss Chris

                        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                        Kommentar


                        • #13
                          Für XHTML zumindest ja

                          http://de.selfhtml.org/html/formular...htm#checkboxen
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar

                          Lädt...
                          X