Daten im Dropdown Menu aus Mysql Datenbank

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

  • Daten im Dropdown Menu aus Mysql Datenbank

    Hallo, ich habe da ein kleines Problem,und zwar will ich in ein Dropdown menu meine Daten aus der Datenbank anzeigen lassen.
    ( es soll eben nicht fest im quelltext verankert sein )

    meine versuche:
    also verbunden ist die datenbank... ..abfragen gehen auch. aber ich hab keinen ahnung wie ich das so verankern soll, das im dropdownmenu die daten angezeigt werden...
    im moment kommt zwar ein menu aber dort ist nichts rein geschrieben?!

    vielleich muss ich ja nur ne andere farbe nehmen?
    weil die anzahl stimmt!

    danke erstmal

    Ich habs erst so versucht <option value=""> "<? php code ?>" </option>

    vielleicht gibts ja auch net ganz simple erklärung?

    ?>
    PHP-Code:
    $host='localhost';
    $user='root';
    $password='';

    $res=mysql_connect($host,$user,$password) or die('Das war wohl nix ! Mysql meldet:<br>'.mysql_error());

    $res=mysql_select_db('audi') or die('War wieder nix - die Datenbank gibts wohl nicht');


    $sql="SELECT * FROM `motor`";
    $res=mysql_query($sql) or die("Das gibts doch nicht - immer noch was falsch ? !<br>".mysql_error()."<br>$sql");
    While($datensatz=mysql_fetch_array($res))
    {
        echo "<p>";
        echo "name: "  . $datensatz['name']."<br>";
        echo "</p>";}
    ?>



    <?
    echo "name: ";
    echo "<select onchange=\"document.forms[0].submit();\" name=\"name\">\n";
    {
            $selected = $_res['name']==$datensatz['name']?" selected":"";
              echo "<option value=\"".$datensatz['name']."\"$selected>".$datensatz['name']."</option>\n";
           }
           echo "</select>\n<br>\n";

    ?>

  • #2
    du liest alles in einer schleife aus und nach dem die schleife zu ende gelaufen ist, hast du in $datensatz eine false.

    Aus diesem grund scheitert dein Versuch nach der schleife die Werte ins option zu setzen.

    Du hast jetzt 2 Möglichkeiten.
    1) wärend deiner erster Schleife die Ergebnise in ein Array zwischenspeichern und dann bei Options in einer schleife durchlaufen.
    oder
    2) mit mysql_data_seek dein $res in einer schleife noch mal von vorne durchlaufen.
    Slava
    bituniverse.com

    Kommentar


    • #3
      So habs etwas anders gelöst...
      aber leider ist das was am ende raus kommt auch net so klasse...
      im PHP editor sieht man jetzt alle Motortypen aufeinmal nebeneinander.
      ich dachte dropdown menu ist untereinander?
      aber das liegt jetzt wieder an meiner datenbank?


      Also ich habe jetzt 3 Datensätze eingetagen, dieses Komische menu wird jetzt 3 mal nebeneinander erzeugt in jeder steht ein anderer datensatz drin,
      so dann hab ich eine ID eingefügt ( auto_increment mit Primärschlüssel, alles mit phpmyadmin )

      Und passiert folgendes dieser Datensatz wird nun darunter geschreiben also kommt nun eine liste mit Motortyp1 und darunter eben die ID : 1
      es würde ja klappen wenn ich die datenbank umschreibe und in jedes Feld einen Motortyp schreibe oder?

      Aber das will ich eigentlich nicht machen gibts da keine möglichkeit das es in diesem Menü alles untereinander erscheint?
      also die ID kann ich ja raus lassen aber der Motortyp reicht ja...

      PHP-Code:

      <html>
      <br><br>
      <center><img src="Audi a5.jpg"></center>
      <br><br><br>

      <form action="Farbe.php" method="POST">

      Geben sie den gew&uuml;nschten Motor an :
      <br>
      <br>


      <?
      $host='localhost';
      $user='root';
      $password='';

      $res=mysql_connect($host,$user,$password) or die('Das war wohl nix ! Mysql meldet:<br>'.mysql_error());

      $res=mysql_select_db('audi') or die('War wieder nix - die Datenbank gibts wohl nicht');


      $sql="SELECT * FROM `motor`";
      $res=mysql_query($sql) or die("Das gibts doch nicht - immer noch was falsch ? !<br>".mysql_error()."<br>$sql");

      $num=mysql_num_rows($res);

      While($datensatz=mysql_fetch_array($res))
      {
      ?>

      <select name="form" size="1">
          <option selected>Motortyp w&auml;hlen</option>
          <option value="<?php echo $datensatz['name'];?>"><?php echo $datensatz['name'];?></option>

      TEST : <option value="<?php echo $datensatz['ID'];?>"><?php echo $datensatz['ID'];?></option>

      </select>

      <?}?>
      <input type="submit" value="Auswahl best&auml;tigen">

      <br>
      <br>
      <br>
      <br>
      <a href="javascript:history.back()">Zurück</a>

      Kommentar


      • #4
        Schau dir mal deinen generierten Quelltext an, dir wird schnell auffallen, wo dein Fehler liegt.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Original geschrieben von unset
          Schau dir mal deinen generierten Quelltext an, dir wird schnell auffallen, wo dein Fehler liegt.
          Na ich würde es hier nicht schreiben wenn ich den fehler so schnell finden würde.
          helf mich doch einfach mal ein bissel weiter...

          Kommentar


          • #6
            Frage: Willst du wirklich für jeden Datensatz ein eigenes select? Oder willst du alle in einem unterbringen?
            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


            • #7
              Original geschrieben von jahlives
              Frage: Willst du wirklich für jeden Datensatz ein eigenes select? Oder willst du alle in einem unterbringen?
              ich würde gern alle in einem unterbringen...
              es sollen ja dort nur die typen ausgewählt werden mehr nicht.

              Kommentar


              • #8
                In deinem PHP-Code machst du aber immer wieder ein neues ...
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Original geschrieben von unset
                  In deinem PHP-Code machst du aber immer wieder ein neues ...
                  wie kann ich das verändern? ich möchte nur eins haben... ...bin nicht so der große php experte und bräuchte da eben ein bissel hilfe.

                  danke

                  Kommentar


                  • #10
                    Indem du die Select-Tags aus der Schleife rausnimmst.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Original geschrieben von unset
                      Indem du die Select-Tags aus der Schleife rausnimmst.
                      hm na wenn ich aber die select anweisung rausnehme.
                      dann steht in dem Menu aber nichts mehr... ...also bin ich jetzt wieder bei dem Problem wie zum anfang.
                      ich müsste nun nochmal mit
                      PHP-Code:
                      mysql_data_seek 
                      arbeiten oder?

                      Kommentar


                      • #12
                        hm na wenn ich aber die select anweisung rausnehme.
                        Nicht aus dem Code rausnehmen, sondern nur aus der Schleife raus
                        PHP-Code:
                        echo '<select name="form" size="1">';
                        echo 
                        '<option selected>Motortyp w&auml;hlen</option>';
                        while(
                        $res=mysql_fetch_array($resultat)){
                          echo 
                        '<option value="'.$res['name'].'">'.$res['name'].'</option>';
                        }
                        echo 
                        '</select>'
                        so z.B.

                        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


                        • #13
                          Du sollst die Select-Tags aus der Schleife nehmen, nicht die SELECT-Anweisung aus deinem Query. Und du sollst die Tags auch nicht vollständig aus deinem Script entfernen, sondern lediglich außerhalb der Schleife ausgeben. Denn ansonsten wird für jeden Schleifendurchlauf ein komplett neues Select-Feld erzeugt (die allerdings alle den selben namen haben).

                          Deinem Code entsprechend müsstest du es auf folgendes ändern:

                          PHP-Code:


                          <html>
                          <br><br>
                          <center><img src="Audi a5.jpg"></center>
                          <br><br><br>

                          <form action="Farbe.php" method="POST">

                          Geben sie den gew&uuml;nschten Motor an :
                          <br>
                          <br>


                          <?
                          $host='localhost';
                          $user='root';
                          $password='';

                          $res=mysql_connect($host,$user,$password) or die('Das war wohl nix ! Mysql meldet:<br>'.mysql_error());

                          $res=mysql_select_db('audi') or die('War wieder nix - die Datenbank gibts wohl nicht');


                          $sql="SELECT * FROM `motor`";
                          $res=mysql_query($sql) or die("Das gibts doch nicht - immer noch was falsch ? !<br>".mysql_error()."<br>$sql");

                          $num=mysql_num_rows($res);
                          ?> <select name="form" size="1"> <?php
                          While($datensatz=mysql_fetch_array($res))
                          {
                          ?>

                              <option selected>Motortyp w&auml;hlen</option>
                              <option value="<?php echo $datensatz['name'];?>"><?php echo $datensatz['name'];?></option>

                          TEST : <option value="<?php echo $datensatz['ID'];?>"><?php echo $datensatz['ID'];?></option>

                          <?}?></select>
                          <input type="submit" value="Auswahl best&auml;tigen">

                          <br>
                          <br>
                          <br>
                          <br>
                          <a href="java script:history.back()">Zurück</a>
                          Setz dich darüber hinaus aber bitte mal mit validem HTML auseinander.
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            Vielen lieben dank!
                            Es funktioniert einwandfrei!

                            Irgentwie hab ich warscheinlich noch ein paar fehler bei der programmierung.
                            Php ist zwar schon ganz logisch, aber das gleich zu erkennen ist irgentwie gar net so leicht.

                            danke an alle!

                            Kommentar


                            • #15
                              Php ist zwar schon ganz logisch, aber das gleich zu erkennen ist irgentwie gar net so leicht.
                              OffTopic:

                              Das hat aber nicht viel mit PHP zu tun. Der Code war von der Synthax her korrekt und stellte damit für den Parser kein Problem dar. Also wurde der Code abgearbeitet, genau so wie du ihn geschrieben hast. Keine Programmiersprache der Welt kann einen solchen "Fehler" erkennen. Deine Ablauflogik kann der Parser nicht korrigieren. Kann überigens auch z.B. Java sicher nicht


                              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

                              Lädt...
                              X