Array in POST

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

  • Array in POST

    Hallo,

    ich moechte in einer Auswahlliste mehrer Argumente uebergeben koennen. Dies mache ich folgendermassen:

    PHP-Code:

    <select name="musearch[]" multiple="yes" size="5">
    <? php
    include ('open.inc.php');

    $sql = "select muname,mu_id from music";
    $result = mysql_query($sql);

    while ($murow = mysql_fetch_array($result))
              {
              echo "<option value=\"$murow[mu_id]\">$murow[muname]</option>";
              }
    ?>
    so weit so gut.

    Wenn ich nun dies mit POST auf dieselbe Seite uebergebe moechte ich den Inhalt des Arrays in einen String umwandeln:

    PHP-Code:
    $mucheck implode (",",$musearch); 
    der POST funktioniert ok denn wenn ich diese funktion rausnehme funktioniert der Rest einwandfrei.

    Die Fehelermeldung die ich kriege ist: Implode() Bad Argument
    Das wuerde m.M. nach daran liegen, dass der "implode" den Array gar nicht als solcher erkennt.

    Ich habe einen interessanten Thread gefunden:

    http://www.php-resource.de/forum/sho...&threadid=8929

    aber da ich den String (und andere) spaeter fuer eine sql abfrage brauche kann ich nicht jedesmal durch eine Schleife gehen.

    Alos brauche ich die Liste in einer variablen verpackt.

    Vielen Dank

  • #2
    1.
    PHP-Code:
    var_dump($musearch); 
    Ist der Datentyp Array ??


    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Ja, ist er

      OffTopic:
      var_dump() ist ein eine deiner Lieblingsfunktionen, gell?
      "...vielleicht stehe ich vor dir und du erkennst mich nicht. Spielt das eine Rolle? Wir sah'n ins gleiche Licht..."

      Kommentar


      • #4
        Hallo,

        ja der Datentype ist Array. Das Select statement

        PHP-Code:
        <select name="var[]" 
        sollte ein Array $var kreieren.

        (Laut: http://de.php.net/manual/en/faq.html...aq.html.arrays)

        Gruss

        Kommentar


        • #5
          Ist es allenfalls ein mehrdimensionales Array ??
          Was ergibt ein var_dump($musearch[0]);
          Gib das einen Wert zurück oder steht nur Array ?
          Wenn array dann probier das:
          PHP-Code:
          $mucheck implode (",",$musearch[0]); 
          Gruss

          tobi

          p.s. ja var_dump() ist eine meiner Lieblingsfkt weil man damit so schön auf Fehlersuche gehen kann...
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Es muesste sich um einen simplen eindimensionale Array handeln. Ich habe var_dump() eingebaut, welches mir NULL zurueckgibt. Unabhaenging wieviele Werte ich in der Option Liste auswaehle.

            Das heisst, dass etwas mit dem

            PHP-Code:
            <select name="musearch[]" multiple
            nicht stimmt oder der Array nicht richtig uebergeben wird.

            Kommentar


            • #7
              ähm wie lautet den nun der Variablenname?

              musearch oder murow?

              weil Du packst das ja alles in murow[mu_id]

              nur bekommt dann musearch damit wenig Einträge

              und ein implode auf ein leeres Array musearch imlodet nix.

              also implode mal murow[] und guck was passiert.

              Viel Muhhhhhhs

              Wendel
              Das Leben ist kein Ponyhof.

              Kommentar


              • #8
                Hallo Wendel,

                die Werte die ich uebergeben will sind in $murow[mu_id] und die sollen in den Array musearch. Also die Mu_id sind numerische Werte, wenn ich also zwei auswaehle(z.B 2 und 6) dann ist die Idee, dass musearch folgendermassen aussieht:

                musearch[0] => 2
                musearch[1] => 6

                Viel Muuuhhhs (und momentan habe ich eher viel Müüüüühe :-)

                Gruss

                Edit: var_dump($murow) gibt auch NULL zurück
                Zuletzt geändert von mrob; 27.10.2005, 20:39.

                Kommentar


                • #9
                  Hy mrob
                  ja, ich verstehe nicht so viel von select und options aber laut Deiner Erklärung handelt es sich
                  dann um ein zweidimensionales array
                  weil murow[mu_id] ist ein array oder?
                  murow[0],murow[1] usw.
                  und das packst Du dann in musearch[], oder habe ich Dich falsch verstanden?
                  d.h musearch[0] => murow[0] =2,murow[1] =6

                  oder wo wird der index von musearch hochgezählt?

                  mach doch mal einfach name="musearch" und guck was passiert bzw. drinnsteht

                  hast Du denn Jahlives Vorschlag mal ausprobiert?
                  Gib einfach mal alles aus mit print_r, dann müsste man zumindest erkennen können, ob es sich um ein
                  zweidimensionales Array handelt.

                  Gruß
                  Wendel
                  Das Leben ist kein Ponyhof.

                  Kommentar


                  • #10
                    Ähm habe gerade Dein edit gelesen

                    Frage:
                    Wenn Du Dir Deinen Quelltext ansiehst von dem Code,
                    steht denn da unter <options value=2 ?
                    sonst stimmt nämlich was mit deinem sql string nicht.

                    Ist nicht bös gemeint aber manchmal übersieht man die naheliegendsten Sachen.
                    Weil print_r($murow) oder $musearch sollte schon was ausgeben!
                    Das Leben ist kein Ponyhof.

                    Kommentar


                    • #11
                      Hallo Wenzel,

                      der Quelltext gibt mir die korrekten option values raus. Also $murow gibt die korrekten values raus.

                      Mein Problem ist, dass musearch die Werte nicht uebernimmt .
                      Wenn ich die Literatur ueber das attribut select name=var[] richt verstanden habe, so muss es ein eindimensionales array sein welches mit den werten die ausgewaehlt werden aufgefuellt wird.

                      Ich habe den Vorschalge von jahlives ausprobierte aber ich krieg einfach nur NULL raus.

                      Gruss

                      Ich hab mir mal die $_REQUEST['musearch'] ausgeben lassen. Hab gelesen, dass das script ueber diese Variable den wert erhaelt.
                      Also $_REQUEST['musearch'] gibt "Array" aus.
                      Zuletzt geändert von mrob; 27.10.2005, 22:01.

                      Kommentar


                      • #12
                        Hy mrob,

                        wenn das ein array ist, dann muss doch aber zu den Werten ein Key existieren.
                        also $search {[0]=>wert1 [1]=>wert2 usw.
                        wo wird denn dieser Schlüssel übergeben bzw. festgelegt?
                        Sprich woher weist Du denn dann welcher Wert wozu gehört?
                        oder gehen die davon aus, dass man bei 5 werten diese über 1-4 ansprechen kann?
                        Hast Du das mal mit $musearch ohne [] probiert?

                        Auf jeden Fall könntest Du ja jetzt murow imploden und den String an Dein Post anhängen.
                        Dann hast Du zumindest die ids auf der nächsten Seite.

                        Wie gesagt mit select und options kenne ich mich nicht aus, aber was ich gesehen habe war ohne [] !

                        Gruß
                        Wendel
                        Das Leben ist kein Ponyhof.

                        Kommentar


                        • #13
                          sorry dein edit erst jetzt gelesen.

                          Probier mal $array=$REQUEST['musearch'];
                          und jetzt kannst Du
                          variable1=$array[0]; machen und da sollte dann Dein erster Wert drinnstehen. and so on.

                          Viele Muhhs noch
                          Wendel
                          Das Leben ist kein Ponyhof.

                          Kommentar


                          • #14
                            Hallo Wendel,

                            geschafft! :-)

                            Ich weiss nicht ob es eine eleganteren Weg gibt, aber hier die Loesung:

                            Bei der Option selected habe ich nicht geaendert (name=musearch[]...)

                            Die Auswertung erfolgt nun mit

                            PHP-Code:
                            $muresult $_REQUEST['musearch'];
                            $mucheck implode (",",$muresult); 
                            Wenn ich nun zwei Wert e(z.b. 2 und 6) auswaehle so sieht mein
                            echo "mucheck" 2,6 aus.

                            Mir ist noch nicht klar wieso ich die $_REQUEST ein einem Schritt in eine Variable lesen muss, ich dacht die steht "automatisch" zur Verfuegung.

                            Nun, wie dem auch sei die name=var[] option funktioniert und der Index faengt bei 0 and und wird dann einfach hochgezaehlt.

                            Vielen Dank an Wendel und Jahlives fuer Eure Hilfe

                            Gruss

                            Kommentar

                            Lädt...
                            X