Ankündigung

Einklappen
Keine Ankündigung bisher.

Checkboxen auswerten und weiterverarbeiten

Einklappen

Neue Werbung 2019

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

  • Checkboxen auswerten und weiterverarbeiten

    Hallo zusammen,

    ich bin neu hier und habe heute das Forum ein wenig durchsucht nach einer passenden Lösung für mein Problemchen. Wahrscheinlich steh ich einfach auf dem Schlauch....

    Ich habe ein Formular mit 5 Checkboxen. Natürlich ist das ganze in ein Formular eingepackt und wird per POST übergeben:

    PHP-Code:
    <input value="alle" name="lieferant[]" type="Checkbox" checked>Alle Produkte<br/>
    <
    input value="lieferant1" name="lieferant[]" type="Checkbox">Lieferant 1<br/>
    <
    input value="lieferant2" name="lieferant[]" type="Checkbox">Lieferant 2<br/>
    <
    input value="lieferant3" name="lieferant[]" type="Checkbox">Lieferant 3<br/>
    <
    input value="lieferant4" name="lieferant[]" type="Checkbox">Lieferant 4<br/> 
    Wenn ich jetzt 1, 2 oder 3 Checkboxen anklicke, sende ich das Formular und kann die Daten in meiner nächsten PHP-Datei mit folgendem Code auslesen und setze sie einfach nacheinander lieferant1, lieferant2, lieferant4....etc....:

    PHP-Code:
    foreach($_POST['lieferant'] as $string) {
            
    $where .= $string.",";
    }
    $lieferant substr($where,0,-1); 
    Das Problem ist, wie bekomme ich die Werte wieder aus dem Array heraus z.B. für eine IF-Abfrage?

    Oder: Ich kann die Daten auch als $lieferant[0] oder $lieferant[1] auslesen. Nur die Nummer in der Klammer ändert sich mit der Auswahl der Checkboxen.

    Wenn ich Checkbox 1 und 2 anklicke, dann passt das mit $lieferant[0] und $lieferant[1].
    Wenn ich aber Checkbox 2 und 3 anklicke, dann stehen die Daten auch in den Variablen $lieferant[0] und $lieferant[1].

    Vielleicht blicke ich es heute auch einfach nicht.

    Irgendwer ne Idee oder einen Hieb auf den Hinterkopf? Danke vorab.

    Gruss magicwin

  • #2
    Schau mal hier:

    Formularverarbeitung, Auswahlfelder - PHP.de Wiki

    Ansonsten musst Du beschreiben, was Du tun willst (mit dem if z.B.). Im Normalfall wird man isset/empty oder eben foreach verwenden.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Danke erstmal für den Link.

      Ich möchte danach aus einer MySQL-DB alle angekreuzten Lieferanten ausgeben lassen. Das ist eigentlich schon alles...

      Kommentar


      • #4
        Zitat von magicwin Beitrag anzeigen
        Oder: Ich kann die Daten auch als $lieferant[0] oder $lieferant[1] auslesen. Nur die Nummer in der Klammer ändert sich mit der Auswahl der Checkboxen.
        Nicht, wenn du sie selber vorgibst: name="lieferant[0]"
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Okay das ist richtig. Aber dann kann ich auch verschiedene Variablennamen nehmen, oder? Was hat das dann für einen Vorteil?

          Kommentar


          • #6
            Dass die trotzdem PHP-seitig ein Array formen. Steht auch im Wikiartikel.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Zitat von magicwin Beitrag anzeigen
              Was hat das dann für einen Vorteil?
              Den, dass du es immer noch wie ein Array durchlaufen kannst, bspw. per foreach.

              Aber dann kann ich auch verschiedene Variablennamen nehmen, oder?
              Du solltest dir angewöhnen, immer Arrays zu benutzen, wenn es sich von der Struktur und Bedeutung der Daten her anbietet - damit strukturierst du dir nämlich auch gleich die Behandlung der Daten innerhalb deines Scriptes vernünftiger.

              Hier hast du mehrere Werte gleicher Struktur und Bedeutung, also zwingt sich ein Array geradezu auf.
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                Jetzt bin ich glaub komplett verwirrt. Jetzt habe ich name="lieferant[0]", name="lieferant[1]" usw. vorgegeben und beim auslesen fängt er immer wieder bei lieferant[0] an. Auch wenn ich erst die 3.te Checkbox angeklickt habe. Versteht Ihr was ich meine?

                Siehe wiki-php: Zu beachten ist die 0-basierte Numerierung der Werte - obwohl „blau“ die zweite Auswahl der Elemente im Browser ist, wird nur die Menge der übertragenen Werte betrachtet und ab 0 indexiert.

                Kommentar


                • #9
                  Zitat von magicwin Beitrag anzeigen
                  Jetzt habe ich name="lieferant[0]", name="lieferant[1]" usw. vorgegeben und beim auslesen fängt er immer wieder bei lieferant[0] an.
                  Dann machst du wohl was falsch.

                  Kontrollausgabe von $_POST oder $_POST['lieferant'] per print_r machen bitte - die sollte dir deutlich machen, wie die Daten vorliegen.

                  Ansonsten, aktuelles Formular und zugehörige Auswertung durch PHP zeigen, bitte.
                  [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                  Kommentar


                  • #10
                    Bitte mal Dein Form posten. Hier ist mir zu viel Vermutung im Raum.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Wenn es sich um eine "simple" if-Abfrage handelt reicht eine Prüfung mit in_array() oder array_search() ob sich ein bestimmter Wert im Array $lieferant befindet.
                      "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                      Kommentar


                      • #12
                        Irgendwas war falsch. Hier nochmal der Code für das Formular. So sollte es funktionieren.

                        Code:
                        <form action="auswertung1.php" method="post" target="ziel" onSubmit="window.open('about:blank','ziel','srollbars=1.width=800,height=1000'); return true;">
                          <table border="1" width="40%">
                            <tr>
                              <td height="40">Lieferant:</td>
                              <td>
                                <input value="alle" name="lieferant[0]" type="Checkbox" checked>Alle Produkte<br/>
                        	<input value="lieferant1" name="lieferant[1]" type="Checkbox">Lieferant 1<br/>
                        	<input value="lieferant2" name="lieferant[2]" type="Checkbox">Lieferant 2<br/>
                        	<input value="lieferant3" name="lieferant[3]" type="Checkbox">Lieferant 3<br/>
                        	<input value="lieferant4" name="lieferant[4]" type="Checkbox">Lieferant 4<br/> 
                              </td>
                            </tr>
                            <tr>
                              <td height="40"><input type="submit" value="Liste erstellen"><input type="reset" value="Löschen"></td>
                            </tr>
                          </table>	
                        </form>
                        Wie könnte ich jetzt mit "in_array()" die Variablen auslesen?

                        Kommentar


                        • #13
                          Noch mal: Eine foreach-Schleife bietet sich für das Durchlaufen und Verarbeiten von Arrays, deren Schlüssel man nicht kennt, ziemlich stark an.
                          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                          Kommentar


                          • #14
                            Habe es jetzt mit dem folgenden Code probiert:

                            PHP-Code:
                            <?php

                            echo '
                            '
                            ;
                            print_r($_POST);
                            echo 
                            '

                            '
                            ;

                            foreach(
                            $_POST['lieferant'] as $string) {
                                    
                            $where .= $string.",";

                            }
                            $var_array substr($where,0,-1);
                            echo 
                            $var_array;

                            if ( 
                            in_array 'Lieferant 1'$var_array ) )
                                {
                                        echo 
                            'String "Lieferant 1" gefunden!' "\n";
                                }

                            if ( ! 
                            in_array 'Lieferant'$var_array ) )
                                {
                                        echo 
                            'String "Lieferant" nicht gefunden!';
                                }

                            ?>
                            Hier bringt er mir die Fehlermeldung: Wrong datatype for second argument

                            Kommentar


                            • #15
                              Zitat von magicwin Beitrag anzeigen
                              PHP-Code:
                              echo '
                              '
                              ;
                              print_r($_POST);
                              echo 
                              '

                              '
                              ;

                              foreach(
                              $_POST['lieferant'] as $string) {
                                      
                              $where .= $string.",";
                              }
                              $var_array substr($where,0,-1);
                              echo 
                              $var_array;
                              ?> 
                              Hier bringt er mir die Fehlermeldung: Wrong datatype for second argument
                              1. Was sollen die echos vor und nach dem print_r bewirken?
                              2. $var_array ist ein String, kein Array... warum sollte substr(ing) ein array zurückgeben?
                              3. Ist das doppelt-gemoppelt. Entweder du prüfst auf jeden Lieferanten das Array welches du via Post bekommst oder du durchläufst das Array mit einer foreach und prüfst innerhalb dieser mit if den Wert von $string um welchen es sich handelt. Beides zusammen ergibt grad so gar keinen Sinn.
                              "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                              Kommentar

                              Lädt...
                              X