Checkbox-Array beinhaltet nur "Array"

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

  • Checkbox-Array beinhaltet nur "Array"

    Hallo zusammen,

    ich bin kurz vorm Verzweifeln. Ich lasse mir eine Liste von Checkboxen anhand eine Datenbank erstellen.

    PHP-Code:
    while ($field mssql_fetch_row($fieldsql)) {
     
    $print.="  <tr><td><input type='checkbox' name='$table[2][]' value='$field[0]'> $field[0]</td></tr>\n";

    $field = mssql_query("SELECT ...")
    $print wird am Ende z.B. auf Umlaute überprüft und mit print($print) ausgegeben
    $table[2] beinhaltet einen Tabellennamen

    HTML-Code sieht dann so aus:
    PHP-Code:
    ...
    <
    tr><td><input type='checkbox' name='LinkGruppe[]' value='LinkGruppeID'LinkGruppeID</td></tr>
    <
    tr><td><input type='checkbox' name='LinkGruppe[]' value='LG_Name'LG_Name</td></tr>
    ... 
    Die übergebene URL sieht nach Absenden des Formulars so aus:

    .../index.php?LinkGruppe%5B%5D=LinkGruppeID&LinkGruppe%5B%5D=LG_Name&button=Absenden

    Folgendes gibt mit den Text "Array" aus.

    PHP-Code:
    $tmp $_GET['LinkGruppe'];
    $print "$tmp"
    Und das hier gibt mir ein "A" aus.

    PHP-Code:
    $tmp $_GET['LinkGruppe'][0];
    $print "$tmp"
    Wenn ich mit is_array($_GET['LinkGruppe']) prüfe, ob es überhaupt ein Array ist, bekomme ich false zurück.

    Kann mir jemand helfen?

    Vielen Dank schonmal!

    Grüße

    Tobi

  • #2
    Du kannst ein Array nicht einfach mit print oder echo ausgeben
    nimm mal print_r ($array);
    oder aber gleich eine foreach Schleife

    Wenn ich mit is_array($_GET['LinkGruppe']) prüfe, ob es überhaupt ein Array ist, bekomme ich false zurück.
    Das glaub ich nicht...
    PHP Code Schnipsel

    Kommentar


    • #3
      print_r($_GET['LinkGruppe']);

      gibt mir "Array" aus.

      Kommentar


      • #4
        ja dann ist halt in dem einem array element ein "array" enthalten

        Kommentar


        • #5
          so kannst du das ausgeben:

          <?
          foreach($_GET['LinkGruppe'] as $out)
          echo $out;
          ?>
          Zuletzt geändert von thomas1986; 11.04.2005, 11:02.

          Kommentar


          • #6
            Dann bekomme ich das hier:

            Invalid argument supplied for foreach()

            Ich habe schon alles mögliche versucht. Der Beispiel-Code aus dem O'Reilly PHP-Buch funktioniert auch nicht:

            PHP-Code:

            <html>
            <head><title>Persönlichkeits</title></head>
            <body>

            <?php
            // Formularwerte einlesen, falls vorhanden

            $attrs $_GET['attributes'];

            if (! 
            is_array($attrs)) {
                
            $attrs = array();
            }

            // html-Code für identisch benannte Checkboxen verwenden

            function make_checkboxes($name$query$options) {

                foreach (
            $options as $value => $label) {
                
                    
            printf('%s <input type="checkbox" name="%s" value="%s[]" '$label$name$value);
                    
                    if (
            in_array($value$query)) {
                        echo 
            "checked ";
                    }
                    
                    echo 
            "/><br />\n";
                }
            }

            // Die Liste der Werte und der Label für die Checkboxen

            $personality_attributes = array(
                
            'munter' => 'munter',
                
            'mißmutig' => 'mi&szlig;mutig',
                
            'vernünftig' => 'vern&uuml;nftig',
                
            'mitfühlend' => 'mitf&uuml;hlend',
                
            'sparsam' => 'sparsam',
                
            'verschwenderisch' => 'verschwenderisch',
            );

            ?>

            <form action="" method="GET">
            Welche Attribute beschreiben Ihre Perönlichkeit: <br />
            <?php make_checkboxes('attributes'$attrs$personality_attributes); ?>
            <br />
            <input type="submit" name="s" value="Persönlichkeit bestimmen" />
            </form>

            <?php

            if (array_key_exists('s'$_GET)) {
                
            $tmp $_GET['attributes'];
                
            $description join(" "$tmp);
                echo 
            "$tmp Ihre Persönlichkeit ist $description.";
            }

            ?>

            </body>
            </html>

            Kommentar


            • #7
              Original geschrieben von Todx211
              Der Beispiel-Code aus dem O'Reilly PHP-Buch funktioniert auch nicht: [...]
              wenn du für name 'attributes' übergibst, erzeugt der code ja auch nicht die notation mit eckigen klammern, die für die übermittlung eines arrays notwendig wäre.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Genau, es wird im namen der checkbox, oder was auch immer, die Klammern gesetzt: [], somit wird es zu einem Array!

                Wäre ja sonst dumm wenn du in ein Textfeld einen Namen mit [] als endung eingibst und das script würde es als Array behandeln!

                PHP-Code:
                function make_checkboxes($name$query$options) {

                    foreach (
                $options as $value => $label) {
                    
                        
                printf('%s <input type="checkbox" name="%s[]" value="%s" '$label$name$value);
                        
                        if (
                in_array($value$query)) {
                            echo 
                "checked ";
                        }
                        
                        echo 
                "/><br />\n";
                    }

                Kommentar


                • #9
                  Okay, das in dem PHP-Besipiel war wohl ein Tipfehler. Vielen Dnk für den Hinweis, jetzt gehts.

                  Allerdings funktioniert der zuerst erwähnte Code immer noch nicht. Da habe ich aber die eckigen Klammern im checkbox-namen gesetzt.

                  Liegt es da vielleicht an der Ausgabe? Also daran, dass ich es zuerst in eine Variable schreibe und dann mit print ausgebe?

                  Kommentar


                  • #10
                    lass dir doch endlich mal $_GET bzw. $_POST mit print_r komplett ausgeben - dann sollte auch die struktur, in der die daten übermittelt werden, deutlicher werden.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      das ergebnis von print_r($_GET); ist:

                      Array ( [LinkGruppe] => Array [button] => Absenden )

                      soweit waren wir ja schon. die struktur macht mir nicht das problem. ich bin in der lage eine verschachtelte foreach-schleife zu basteln.

                      ich verstehe nur nicht, warum der Array kein Array ist.

                      Kommentar


                      • #12
                        PHP-Code:
                        $tmp $_GET['LinkGruppe'];
                        $print "$tmp"
                        da "LinkGruppe" ja ein array ist, wird $tmp ja auch zu einem Array, und wenn du nur print($tmp); schreibst wird "Array" ausgegeben, weil ja kein Index angegeben ist.


                        PHP-Code:
                        $tmp $_GET['LinkGruppe'][0];
                        $print "$tmp"
                        Kann sein das das "A" von Array ist, und zwar der Buchstabe an 0ter stelle (sprich der Erste) ?!?!
                        mach den Index bei $print = $tmp[0];

                        Phil

                        Kommentar


                        • #13
                          egal was ich tue, es kommt immer wieder "Array" dabei raus. Egal an welcher stelle ich den Index hinzufüge oder weglasse.

                          Das hier gibt mir "A, A" aus.

                          PHP-Code:

                          $tmp 
                          $_GET['LinkGruppe'][0];
                          $tmp2 $tmp[0];
                          print(
                          "$tmp2$tmp2[0]"); 

                          Kommentar


                          • #14
                            was kommt dir so raus:

                            PHP-Code:
                            $tmp $_GET['LinkGruppe'];
                            $tmp2 $tmp[0];
                            print(
                            "$tmp2$tmp2[0]"); 

                            Kommentar


                            • #15
                              Original geschrieben von Todx211
                              egal was ich tue, es kommt immer wieder "Array" dabei raus.
                              laut deiner geposteten print_r-testausgabe ist $_GET['LinkGruppe'] ja nun mal auch ein array.
                              was ist daran so schwer zu akzeptieren/kapieren, dass PHP nun mal arrays nicht mit echo/print ausgeben kann ...?

                              Egal an welcher stelle ich den Index hinzufüge oder weglasse.
                              $_GET ist ein rein assoziatives array.
                              es ist also absolut sinnfrei, mit nummerischen indizes darauf zugreifen zu wollen.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X