PHP - Array aus URL auslesen und vergleichen (checkbox)

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

  • PHP - Array aus URL auslesen und vergleichen (checkbox)

    Hallo Leute !

    Da ich schon seit mehr als eine Woche mit einem Problem nicht weiter komme, hoffe ich mal daß
    mir einer von euch einen Tipp bzw. einen Lösungsvorschalg geben kann.

    Die unten aufgeführte Funktion erstellt mir nach Vorgabe Checkboxen mit dem Namen "eintragen[]"
    als Array. Wenn jetzt eine oder mehrer dieser Checkboxen einen Wert bekommen und per GET mittels
    "action="<?php echo $_SERVER['PHP_SELF']; ?>"" übertragen werden, bekomme ich auch diese in
    der URL aufgeführt, jedoch das setzen dieser auf checked funktioniert nicht.

    Ich bin zwar in PHP noch kein Profi, aber ich vermute mal daß es irgendwie mit "%5B%5D", also dem
    ASCII-Zeichensatz für "[]" zu tun hat.

    Eine Teil-Lösung für das Problem habe ich zwar doch ich bin auf das Array "eintragen[]" angewiesen, denn
    damit wird im weiteren Verlauf gearbeitet.

    Vielen Dank für eure Hilfe !

    PHP-Code:
    /*   Teil-Lösung ohne Array    */
    function rl_t1 ($datum)
    {
    $sql = "select * from hp_eintrittskarten where (tischsitz between 11 and 14) and
    (datum='$datum') order by tischsitz";

    $erg = mysql_query($sql);
    while ($row = mysql_fetch_object($erg))
    {    
       if ($row->janein == 1)
       {
          print "<font color=\"red\"><b>x</b></font><br>";
       }
       else
       {?>
         <input type="checkbox" name="<?php echo $row->tischsitz?>
          value="<?php echo $row->tischsitz?>"
          <?php if ($_GET[$row->tischsitz]==$row->tischsitz) { echo "checked=\"checked\"";}?>>
          <?php echo "<br>";
        }
    }
    mysql_free_result;
    }
    PHP-Code:
    /*  Problemkind mit Array */
    function rl_t1 ($datum)
    {
    $sql = "select * from hp_eintrittskarten where (tischsitz between 11 and 14) and
    (datum='$datum') order by tischsitz";
    $erg = mysql_query($sql);
    while ($row = mysql_fetch_object($erg))
    {    
       if ($row->janein == 1)
      {
          echo"<font color=\"red\"><b>x</b></font><br>";
      }
      else
      {?>
          <input type="checkbox" name="eintragen[]" value="<?php echo $row->tischsitz?>"
           <?php if ($_GET['tischsitz']==$row->tischsitz){echo "checked=\"checked\"";}?>>
           <?php echo"<br>";
       }
    }
    mysql_free_result;
    }
    ..... onlinereservierung.php?datum=11.11.2005&eintragen%5B%5D=33&eintragen%5B%5D=37&
    eintragen%5B%5D=38&anzahlkartenerwachsene=2&anzahlkartenkinder=4 ......
    Zuletzt geändert von sule1979; 23.11.2005, 01:15.

  • #2
    Re: Array aus URL auslesen und vergleichen (Checkbox)

    Warum nutzt du GET als Übertragungsmethode?
    Gerade wenn es mehr Werte werden können, ist POST meistens vorzuziehen.


    Und dann schau dir mal die übertragenen Inhalte in $_GET bzw. $_POST mittels print_r() an, dann solltest du die Struktur verstehen können.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Das mit der Übertragungsmethode GET und POST ist mir schon klar.
      Warum ich es im Augenblick benutze? Damit ich sehe was und wie übergragen wird.
      Wenn das Skript fertig ist wird es natürlich in POST gesendet.

      zu print_r():
      bei GET print_r($eintragen) ---> Array ( [0] => 26 [1] => 27 [2] => 28 )
      bei POST print_r($eintragen) ---> Array ( [0] => 26 [1] => 27 [2] => 28 )

      Alles schön und gut, doch wie kann ich mein problem lösen?
      Ist es überhaupt möglich aus der URL die Array-Einträge zu lösen?

      Es ist nicht meine Absicht, daß jemand alles für mich erledigt da ich dabei nix
      lerne aber ich komme einfach nicht weiter.

      Kommentar


      • #4
        Re: Array aus URL auslesen und vergleichen (Checkbox)

        Gib deinen Kindern Namen, ...
        PHP-Code:
        <?php
        function rl_t1 ($datum) {
        // ...
        $i 0;
        while (
        $row mysql_fetch_object($erg)) {    
           if (
        $row->janein == 1) {
              
        // ...
           
        } else { ?>
              <input type="checkbox" 
                     name="eintragen[<?php echo $i++; ?>]"
                     value="<?php echo $row->tischsitz?>"
              <?php if ($_GET['tischsitz']==$row->tischsitz) echo "checked=\"checked\"";?>>
              <br>
              <?php
           
        }
        }
        // ...
        }

        Kommentar


        • #5
          Hmm, ist schon ein sehr guter Ansatz doch der bringt mich leider nicht
          zu dem gewünschten Ergebniss.

          z. B. wenn name="eintragen[]" und value="<?php echo
          $row->tischsitz; ?>" ist, wird bei checked (gesetzem Häckchen) der
          wert von $row->tischsitz im Array "eintragen[]" gespeichert.

          Angenommen ich habe 4 x Checkbox die mit Häckchen versehen sind
          und die Werte 15, 16, 17, 18 sind.

          Jetzt soll ein Vergleich aus dem Array in der URL "eintragen" zwischen
          "$row->tischsitz" gemacht werden. Ist z.B. der Array-Wert vom
          "eintragen" 15 und "$row->tischsitz" auch 15, dann wird checked
          auf checked gesetzt.

          eintragen%5B0%5D=15&eintragen%5B1%5D=16&eintragen%5B2%5D=17&eintragen%5B3%5D=18


          Sorry, wenn ich mich vielleicht nicht richtig ausgedrückt habe bzw.
          so blöd bin es zu verstehen.

          Kommentar


          • #6
            Re: Re: Array aus URL auslesen und vergleichen (Checkbox)

            PHP-Code:
            <?php
            function rl_t1 ($datum) {
            // ...
            $i 0;
            while (
            $row mysql_fetch_object($erg)) {    
               if (
            $row->janein == 1) {
                  
            // ...
               
            } else {
                  echo 
            '<input type="checkbox"'
                      
            .' name="eintragen[' $i ']"'
                      
            .' value="' $row->tischsitz '"';
                  echo (
            $_GET['tischsitz'][$i] == $row->tischsitz) ? ' checked="checked">' '>';
                  echo 
            '<br>';
                  
            $i++;
               }
            }
            // ...
            }
            http://php.net/types.array

            Kommentar


            • #7
              Re: Re: Re: Array aus URL auslesen und vergleichen (Checkbox)

              Original geschrieben von onemorenerd
              PHP-Code:
              <?php
              function rl_t1 ($datum) {
              // ...
              $i 0;
              while (
              $row mysql_fetch_object($erg)) {    
                 if (
              $row->janein == 1) {
                    
              // ...
                 
              } else {
                    echo 
              '<input type="checkbox"'
                        
              .' name="eintragen[' $i ']"'
                        
              .' value="' $row->tischsitz '"';
                    echo (
              $_GET['[B]eintragen[/B]'][$i] == $row->tischsitz) ? ' checked="checked">' '>';
                    echo 
              '<br>';
                    
              $i++;
                 }
              }
              // ...
              }
              http://php.net/types.array

              In deinem Lösungsvorschlag war ein kleiner Fehler aber jetzt funktioniert es wirklich.
              Anstatt "($_GET['tischsitz'][$i].." muß es "($_GET['eintragen'][$i]..." heißen.

              Ich werde mich in Sachen Arrays viel besser reinlesen müssen.

              Vielen vielen Dank

              Alternative ohne Zähler. (Gut bei komplexeren Aufgagaben)
              PHP-Code:
              <?php
              function rl_t1 ($datum) {
              // ...
              while ($row mysql_fetch_object($erg)) {    
                 if (
              $row->janein == 1) {
                    
              // ...
                 
              } else {
                      
              ?>
                      <input type="checkbox" name="eintragen[<?php echo $row->tischsitz;?>]"
                      value="<?php echo $row->tischsitz?>"
                      <?php if ($_GET['eintragen'][$row->tischsitz] == $row->tischsitz)
                      {echo 
              "checked=\"checked\"";}?>
                      ><br>
                      <?php
                 
              }
              }
              // ...
              }
              Zuletzt geändert von sule1979; 24.11.2005, 00:47.

              Kommentar

              Lädt...
              X