Johannes Völlinger: Abfrage-Result in mehrere Drop-Down Menüs laden

Hi!

Ich wollte gerne das Result auf meine Datenbankabfrage in mehrere Drop Down Menüs füllen, allerdings mußte ich feststellen, das nach einmaligen füllen der Drop Down Menüs mit den Werten, das Array mit den Ergebnissen gelöscht wurde (die nächsten Drop Down Menüs waren leer).

<select name="Auswahl">
while($ergebnis=mysql_fetch_array($result)){
echo "\n<option>$ergebnis[Artikel]</option>";
}
</select>

Habe auch schonmal überlegt sie in ein neues Array zu laden, aber das klappt, wegen der Schleife, ja auch nicht so super. :-(
Meine Frage deshalb: Gibt es eine Möglichkeit mit nur einer Datenbank-Abfrage das Result-Set in mehrere Datenbankobjekte zu füllen? Bin für jeden Vorschlag dankbar :-)

cya
Johannes

  1. Holladdiri

    $i = -1;
    $temparray = Array();
    while($row=mysql_fetch_array($result))
    {  $temparray[++$i] = Array();
       for($j=0; $j<count($row); $j++)
        $temparray[$i][$j] = $row[$j]; }

    for($i=0; $i<count($temparray); $i++)
     echo "\n<option>$ergebnis[Artikel]</option>";

    echo "</select>";

    Hier weitere Schleifen ...

    Ciao,

    Harry

    1. Holladdiri

      Hejho ;-)

      $i = -1;
      $temparray = Array();
      while($row=mysql_fetch_array($result))
      {  $temparray[++$i] = Array();
         for($j=0; $j<count($row); $j++)
          $temparray[$i][$j] = $row[$j]; }

      for($i=0; $i<count($temparray); $i++)
      echo "\n<option>$ergebnis[Artikel]</option>";

      echo "</select>";

      Hier weitere Schleifen ...

      Jo, das sie doch schonmal nicht schlecht aus, aber klappen tut es in meinem Fall nicht, denn die Drop Down Menüs bleiben jetzt alle leer. :-(
      Ob du vielleicht ne kurze Erklärung zu deinem Quellcode abgeben könntest, dann finde ich vielleicht meinen Fehler selber und ich würde auch gerne wissen wie das genau funktioniert. :-)

      Danke dir vielmals!
      Johannes

      1. Holladidldumdidldei

        Hejho ;-)

        $i = -1;
        $temparray = Array();
        while($row=mysql_fetch_array($result))
        {  $temparray[++$i] = Array();
           for($j=0; $j<count($row); $j++)
            $temparray[$i][$j] = $row[$j]; }

        for($i=0; $i<count($temparray); $i++)
        echo "\n<option>$ergebnis[Artikel]</option>";

        $temparray[$i][$artikel]

        echo "</select>";

        Hier weitere Schleifen ...

        Jo, das sie doch schonmal nicht schlecht aus, aber klappen tut es in meinem Fall nicht, denn die Drop Down Menüs bleiben jetzt alle leer. :-(

        Kleiner Fehler meinerseits, hehe :-)

        Ob du vielleicht ne kurze Erklärung zu deinem Quellcode abgeben könntest, dann finde ich vielleicht meinen Fehler selber und ich würde auch gerne wissen wie das genau funktioniert. :-)

        Der Code macht nichts anderes als alle ausgewählten Sätze aus der DB mit allen Werten in das Array $temparray zu schreiben. Das wird dann wieder ausgelesen (mehrfach) und der Quellcode generiert.

        Ciao,

        Harry

        1. Hello again... ! ;-)

          Ob du vielleicht ne kurze Erklärung zu deinem Quellcode abgeben könntest, dann finde ich vielleicht meinen Fehler selber und ich würde auch gerne wissen wie das genau funktioniert. :-)

          Der Code macht nichts anderes als alle ausgewählten Sätze aus der DB mit allen Werten in das Array $temparray zu schreiben. Das wird dann wieder ausgelesen (mehrfach) und der Quellcode generiert.

          Das war mir auch schon klar, aber ist egal, glaube ich habe das Prinzip so schon verstanden.;-)
          Leider hat die Theorie noch nen kleinen Haken, nämlich das sie in der Praxis nicht funktioniert. :-(

          $abfrage3="select ZIMMER_TYP from Hotel_Zimmer where MNG_NAME='$Mng_Name' AND NAME_UNTK='$Name_Unterkunft'";
          $result3=MYSQL_QUERY($abfrage3);

          if(isset($auswahl_zimmer)) {
          $i = -1;
          $temparray = Array();
          while($ergebnis2=mysql_fetch_array($result3)){
           $temparray[++$i] = Array();
             for($j=0; $j<count($ergebnis2); $j++)
              $temparray[$i][$j] = $ergebnis2[$j];
          }
          for($i=0; $i<count($temparray); $i++) {
          echo "\n<option>$temparray[$i][$ZIMMER_TYP]</option>";
          }

          Das einzige was er mir in die Felder schreibt ist:
          <option>Array[]</option>

          Woran liegts? O_o

          cya
          Johannes

          1. Didldumdidldei

            Leider hat die Theorie noch nen kleinen Haken, nämlich das sie in der Praxis nicht funktioniert. :-(

            Jep, das liegt an einem kleinen Mißverständnis: Du verwendest assoziative Arrays ... ich nicht.

            $abfrage3="select ZIMMER_TYP from Hotel_Zimmer where MNG_NAME='$Mng_Name' AND NAME_UNTK='$Name_Unterkunft'";
            $result3=MYSQL_QUERY($abfrage3);

            if(isset($auswahl_zimmer)) {
            $i = -1;
            $temparray = Array();
            while($ergebnis2=mysql_fetch_array($result3)){
            $temparray[++$i] = Array();

            <löschen>

            for($j=0; $j<count($ergebnis2); $j++)
                $temparray[$i][$j] = $ergebnis2[$j];

            </löschen>

            <rein>
                $temparray[$i] = $ergebnis2["ZIMMER_TYP"];
            </rein>

            }
            for($i=0; $i<count($temparray); $i++) {
            echo "\n<option>$temparray[$i][$ZIMMER_TYP]</option>";

            $temparray[$i]</option>

            }

            Das einzige was er mir in die Felder schreibt ist:
            <option>Array[]</option>

            Ist auch richtig so ;-)

            Woran liegts? O_o

            s.o. Naja, jetzt sollte es auch mit dem assoziativen Array klappen ;-)

            Ciao,

            Harry

            1. Hi!

              if(isset($auswahl_zimmer)) {
              $i = -1;
              $temparray = Array();
              while($ergebnis2=mysql_fetch_array($result3)){
              $temparray[++$i] = Array();

              <löschen>

              for($j=0; $j<count($ergebnis2); $j++)
                  $temparray[$i][$j] = $ergebnis2[$j];
              </löschen>

              <rein>
                  $temparray[$i] = $ergebnis2["ZIMMER_TYP"];
              </rein>

              }
              for($i=0; $i<count($temparray); $i++) {
              echo "\n<option>$temparray[$i][$ZIMMER_TYP]</option>";
                                 $temparray[$i]</option>
              }

              Das einzige was er mir in die Felder schreibt ist:
              <option>Array[]</option>

              Ist auch richtig so ;-)

              Jtzt ergibt es für mich auch einen Sinn, was es vorher nicht tat. ;-P

              s.o. Naja, jetzt sollte es auch mit dem assoziativen Array klappen ;-)

              Jupp, klappt wunderbar! Wieder was dazugelernt. ;-) Danke dir :-)

              Schöne Grüße,
              Johannes

  2. Hi Johannes,

    Irgendwie ist der Wurm drin: Du schreibst PhP-Befehle ohne einleitendes <? und ?> - daraus schließe ich, dass die HTML-Anweisungen <select> usw. in einem PhP-Script stehen... nun ja, ich bin nicht der PhP-Veteran, aber muessen HTML-Tags in PhP, wenn sie Ausgegeben werden sollen, nicht mit echo... ausgedreuckt werden ?

    MFG

    Philipp

    P.s.: Kann sein, dass ich was ganz grundlegendes verpasst habe, aber das hab ich auch noch nie gesehen

    1. Hi Johannes,

      Irgendwie ist der Wurm drin: Du schreibst PhP-Befehle ohne einleitendes <? und ?> - daraus schließe ich, dass die HTML-Anweisungen <select> usw. in einem PhP-Script stehen... nun ja, ich bin nicht der PhP-Veteran, aber muessen HTML-Tags in PhP, wenn sie Ausgegeben werden sollen, nicht mit echo... ausgedreuckt werden ?

      Das war selbstverständlich nur ein Auszug aus dem Quellcode, wir wollen hier schließlich nicht das Forum zummüllen, indem wir bei Fragen immer den kompletten Quellcode mitposten, oder? ;-)