Tis: Problem mit mehreren Checkboxen

Hallo allerseits,

ich bin daran ein Suchformular zu gestalten, mittels welchem man eine Bildauswahl treffen kann. Eine Eigenschaft (genannt "bes") sollte man mittels Checkboxen auswählen können, mehrere Auswahlen sollten möglich sein. Die Checkboxen müssen dabei aber immer den selben Namen haben.

Gut. Wenn ich das nun also mache, wird leider jedes ausgewählte "bes" danach einzeln gezählt...
Sprich: "result.php?&bes=1&bes=F&regi..."

Nach intensivem Googeln habe ich die Lösung gefunden, dass man bei den Checkboxen jeweils beim name= noch zwei eckige Klammern anhängen soll. Gesagt, getan, doch das ganze funzt leider nicht. Quellcode sieht jetzt so aus:

<input type="checkbox" name="bes[]"  value="1" ><font size="-1">Airliner</font>
<input type="checkbox" name="bes[]"  value="F"><font size="-1">Frachter</font>
<input type="checkbox" name="bes[]"  value="B"><font size="-1">Business-Jets</font>

Wenn man nun aber die Checkboxen auswählt werden die nicht wie erwartet zu einem Array zusammengefasst, sondern es heisst nachher:

"result.php?&bes%5B%5D=1&bes%5B%5D=F&regi..."

Der Browser/das Skript meint also nun, die eckigen Klammern seien einfach Teil des Namens. Das ist ja aber nicht der Sinn der Sache :)

Weiss jemand, wie man das dem Browser/Skript austreiben könnte, bzw. was ich falsch mache?

Achja, die Seite ist hier abrufbar, jetzt in der Version mit den eckigen Klammern (die nur leider nicht erkannt werden). Es geht dabei um die Auswahlkästchen "Airliner" "Frachter" und "Business-Jets".

http://www.swissaviationpix.org/spotterbrowser/search_de.php

Herzlichen Dank für eure Hilfe!

Grüsse,
Tis

  1. Hallo !

    Herzlichen Dank für eure Hilfe!

    Du plenkst .Bitte nicht plenken !

  2. Hallo

    ich bin daran ein Suchformular zu gestalten, mittels welchem man eine Bildauswahl treffen kann. Eine Eigenschaft (genannt "bes") sollte man mittels Checkboxen auswählen können, mehrere Auswahlen sollten möglich sein. Die Checkboxen müssen dabei aber immer den selben Namen haben.

    Gut. Wenn ich das nun also mache, wird leider jedes ausgewählte "bes" danach einzeln gezählt...
    Sprich: "result.php?&bes=1&bes=F&regi..."

    1. Möglichkeit: Du kannst das, wenn du jeder Checkbox einen eigenen, für dich nachvollziehbaren Namen gibst, im auswertenden Skript zu einem Array zusammenfügen.

    Nach intensivem Googeln habe ich die Lösung gefunden, dass man bei den Checkboxen jeweils beim name= noch zwei eckige Klammern anhängen soll.

    Wenn man nun aber die Checkboxen auswählt werden die nicht wie erwartet zu einem Array zusammengefasst, sondern es heisst nachher:

    "result.php?&bes%5B%5D=1&bes%5B%5D=F&regi..."

    Der Browser/das Skript meint also nun, die eckigen Klammern seien einfach Teil des Namens. Das ist ja aber nicht der Sinn der Sache :)

    2. Möglichkeit: Übergebe die Daten des Formulars nicht mit der Methode GET, sondern mit POST. Damit wäre das ausgeschlossen.
    <form action="..." method="post">

    3. Möglichkeit: Wenn du bei GET bleiben willst, kannst du auch urldecode auf die mit GET übergebenen Daten (auch die Parameternamen) anzuwenden. Siehe das Beispiel für die Funktion.

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
  3. echo $begrüßung;

    <input type="checkbox" name="bes[]"  value="1" ><font size="-1">Airliner</font>
    <input type="checkbox" name="bes[]"  value="F"><font size="-1">Frachter</font>
    <input type="checkbox" name="bes[]"  value="B"><font size="-1">Business-Jets</font>

    Wenn man nun aber die Checkboxen auswählt werden die nicht wie erwartet zu einem Array zusammengefasst, sondern es heisst nachher:

    "result.php?&bes%5B%5D=1&bes%5B%5D=F&regi..."

    Der Browser/das Skript meint also nun, die eckigen Klammern seien einfach Teil des Namens. Das ist ja aber nicht der Sinn der Sache :)

    Dass der Browser das so macht, ist schon in Ordnung. Ich weiß nicht genau, an welcher Stelle dein Problem liegt, denn (mein) PHP nimmt von sich aus eine Dekodierung der vom Browser vorgenommenen URL-Kodierung der Werte vor.

    Weiss jemand, wie man das dem Browser/Skript austreiben könnte, bzw. was ich falsch mache?

    Mein Test-Skript:

    <form action="" method="get">  
      <input type="checkbox" name="name[]" value="value1"/>  
      <input type="checkbox" name="name[]" value="value2"/>  
      <input type="submit" value="Absenden"/>  
    </form>  
    <pre>
    
    <?php  
    print_r($_GET);  
    ?>
    

    und dessen Ausgabe:

    Array
    (
        [name] => Array
            (
                [0] => value1
                [1] => value2
            )
    )

    echo "$verabschiedung $name";