Pulldown-Menü aus SQL Datensätzen

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

  • Pulldown-Menü aus SQL Datensätzen

    Gude

    Ich denke mein Problem ist kein Großes, dennoch hänge ich an jenem schon etwas länger.

    Ziel ist es ein Pulldown-Menü zu erzeugen, welches auf der Eingabe von bisher zwei SQL-Datensätzen basiert. Eine Tabelle namens "namen" ist angelegt, darin befinden sich die Felder "namen", email" und "land" des jeweiligen Benutzers. Nun will ich das Feld "namen" in einem Pulldown-Menü erscheinen lassen, wo also bisher ZWEI Einträge auszuwählen sein sollten. Ich scheitere -wenn auch wahrscheinlich knapp- an der Realisierung.

    Folgendes Menü erscheint:




    Fehler 1:
    Das Auswahlfeld bietet mir nur EINEN Eintrag.

    Fehler 2:
    Warum seh ich immer nur den Anfangsbuchstaben?




    Hier der kurze Code:

    PHP-Code:

    <html>
    <head></head>
    <body>
    <div align="center">
    <h1>Themen-Eingabe</h1>
    <form action="auswertung.php" method="post">

     <p><input name="titel" style="width:400px"></p>
     <p><textarea name="text" style="width:400px; height: 150px"></textarea></p>
      <p><input type="submit" value="Thema eintragen"></p>
    </form>
    </div>

    <p><a href="bearbeiten_03.php">Zur Übersicht</a></p>

    <?
    include("mysql.inc");

      $query = "SELECT * FROM namen ORDER BY id DESC";
      $sql = mysql_query($query);
      while ($ds = mysql_fetch_object($sql)){
        $id = $ds->id;
        $name = htmlentities($ds->name);
        $land = htmlentities($ds->land);
        $email = htmlentities($ds->email);    }

    ?>

    <form method="post">
      <select name="name">
      <?
       $anzahl=count($name);
       for ($i=0; $i<$anzahl; $i++) {
         echo "<option value=\"$i\">$name[$i]</option>";
         }
      ?>
      </select>

    </form>


    </body>
    </html>
     <?

  • #2
    - wie sieht der an den browser abgeschickte html-code?
    - was steht in der db?

    Kommentar


    • #3
      zu 1:
      Wenn du beim Auslesen aus der DB die Variable $name immer wieder überschreibst kann ja am Ende nur ein Eintrag (der letzte) im Selectfeld stehn oder?

      zu 2:
      wenn du dann versuchst eine String wie ein Array ($name[$i]) zu behandeln gibt dir PHP den Bustaben an der enstpechenden Stelle zurück ( in dem Fall $i=0 also den ersten)

      Kommentar


      • #4
        Original geschrieben von oppi
        zu 1:
        Wenn du beim Auslesen aus der DB die Variable $name immer wieder überschreibst kann ja am Ende nur ein Eintrag (der letzte) im Selectfeld stehn oder?

        zu 2:
        wenn du dann versuchst eine String wie ein Array ($name[$i]) zu behandeln gibt dir PHP den Bustaben an der enstpechenden Stelle zurück ( in dem Fall $i=0 also den ersten)

        Erstmal danke und dann zu 1 :

        Wie könnte man hier alternativ vorgehen? Irgendwie muss es doch funktionieren, dass er die Werte aus dem Feld "name" rausliest und sie komplett ausgibt...

        Kommentar


        • #5
          oppi hat natürlich recht, $name soll als array und nicht als string gefüllt werden. dann kannst du auch einzelne seiner elemente ansprechen.

          Kommentar


          • #6
            Klar geht sowas. Die Frage is wohl eher wie man richtig einzelne Werte an ein array anfügt. dazu mal hier nachschaun http://de.php.net/manual/de/language.types.array.php

            Kommentar


            • #7
              Hallo Hessebubb

              Versuche es einmal hiermit.

              PHP-Code:
              <select name="namenselect" style="width: 150">
              <
              option selected value=""></option>
              ABC;
              $abfrage mysql_query ("SELECT * FROM namen ORDER BY id DESC");
              while (
              $row mysql_fetch_array ($abfrage)) 
              {
              $name $row["name"];
              $land $row["land"];
              $email $row["email"];
              echo<<<ABC
              <option value="$name">$name</option>
              ABC;
              }
              echo<<<ABC
              </select> 
              sollte funktionieren, in dieser Art mache ich es jeweils.

              schöne Grüsse René

              Kommentar


              • #8
                Original geschrieben von rönee
                Hallo Hessebubb

                Versuche es einmal hiermit.

                PHP-Code:
                <select name="namenselect" style="width: 150">
                <
                option selected value=""></option>
                ABC;
                $abfrage mysql_query ("SELECT * FROM namen ORDER BY id DESC");
                while (
                $row mysql_fetch_array ($abfrage)) 
                {
                $name $row["name"];
                $land $row["land"];
                $email $row["email"];
                echo<<<ABC
                <option value="$name">$name</option>
                ABC;
                }
                echo<<<ABC
                </select> 
                sollte funktionieren, in dieser Art mache ich es jeweils.

                schöne Grüsse René

                Merci vielmals.
                Für was steht das "ABC", das will mir keinen Sinn ergeben...

                Kommentar


                • #9
                  Aaah ich Depp! Funktioniert!

                  Aber rönee, babbel mir mal warum Du die ABC's hier reingeschrieben hast?!...

                  Kommentar


                  • #10
                    Hi Hessebubb

                    Frag mich nicht mehr woher ich es habe. Aber ich verwende es mittlerweilen in jedem Script.

                    Der Vorteil: Die Seite beinhaltet nur ein <? zu Beginn und ein ?> am Ende. Sämtlichen html Code setzte ich nun zwischen echo<<<ABC und ABC; wobei es immer zu Beginn der Zeile stehen sollte (ohne Leerschlag).
                    Nun kann ich "normalen" html Code verwenden, ohne speziell mit ""; oder ' anstelle von " usw.

                    Leider habe ich nun kurz in den Referenzen nachgeschaut und so auf die schnelle nichts darüber gefunden - suche weiter denn es gibt noch weitere Mögichkeiten in dieser Art.

                    Anscheinend bin ich der einzige welcher in diesem Forum den Code so hinterlegt; aufgrund der suche nach echo<<<ABC.

                    Nur hat mir hier noch kein Profi bzw. Crack etwas dagagen gesagt!
                    Also nehme ich an das es nicht sehr aussergewöhnlich ist. Zumal es auch einwandfrei funktioniert auch unter php5

                    Ich persönlich finde diese Art sehr aufgeräumt und übersichtlich ich Arbeite sehr gerne damit.

                    schöen Grüsse René

                    Kommentar


                    • #11
                      Original geschrieben von rönee
                      Der Vorteil: Die Seite beinhaltet nur ein <? zu Beginn und ein ?> am Ende.
                      hurra - und damit muss der parser über alles laufen, auch wenn es nur reine HTML-daten ohne variablen drin etc. sind -> unperformant.

                      Anscheinend bin ich der einzige welcher in diesem Forum den Code so hinterlegt; aufgrund der suche nach echo<<<ABC.
                      vielleicht bist du auch nur der einzige, der ABC als bezeichner verwendet ... http://www.php.net/manual/de/languag...syntax.heredoc
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Danke wahsaga

                        das sind sehr interessante Infos, als Autodidakt ist man immer auf solches angewiesen.

                        Ich hatte es wahrscheinlich einmal aus einem bestehenden Script herausgelesen. Ah, also ist ABC optional und ich könnte auch ZZZ als Bezeichner nehmen.

                        Mit den Performant hatte ich noch nie mühe, alle meine Seiten sind innert sekunden aufgebaut!

                        Kommentar


                        • #13
                          So würd ich es machen:

                          <?
                          mysql_connect("host","user","pass");
                          $result=mysql_db_query("db","SELECT * FROM Table");
                          ?>
                          <select name="name">
                          <?
                          while($r=mysql_fetch_array($result,MYSQL_BOTH))
                          {
                          ?>
                          <option value="<?echo $r['name']?>"><?echo $r['name']?></option>
                          <?
                          }
                          ?>

                          Kommentar

                          Lädt...
                          X