[SQL allgemein] Fotos laden nach dropdown auswahl

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

  • [SQL allgemein] Fotos laden nach dropdown auswahl

    Hallo zusammen,

    unser Schulprojekt :

    Automarke auswählen => Automodell auswählen

    danach sollen zu dem ausgewählten auto felgenbilder angezeigt werden.

    die dropdownmenus haben wir hingekriegt, d.h. wir wählen die automarke aus (z.B. BMW)...danach das Automodell (z.B. 5er). Es soll nun das Auto angezeigt werden.

    Fragen : wie lautet der select befehl, der mir nach auswahl des automodells das entsprechende fahrzeugbild anzeigt ?
    wir würden gerne die bilder der autos von festplatte/webserver laden lassen.

    sind blutige anfänger :-) hoffe ihr könnt uns weiterhelfen...

    danke vorab schon einmal

  • #2
    PHP-Code:
    $sql "SELECT bildURL FROM auto WHERE model='".$_POST['automodell']."' LIMIT 1"
    so ganz ohne Eure Struktur in der DB zu kennen.

    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
      Hallo, danke für die schnelle Antwort.

      leider hat uns der Befehl nicht weitergeholfen. :-(

      ich poste mal das sql script welches wir die anlegung der tabellen in der datenbank haben :

      CREATE TABLE tbl_ah (
      index_ah INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      name_ah CHAR(30) NOT NULL,
      PRIMARY KEY(index_ah)
      );

      CREATE TABLE tbl_am (
      index_am INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      tbl_ah_index_ah INTEGER UNSIGNED NOT NULL,
      name_am CHAR(30) NOT NULL,
      pfad_am CHAR(30) NULL,
      PRIMARY KEY(index_am),
      INDEX tbl_am_FKIndex1(tbl_ah_index_ah)
      );

      CREATE TABLE tbl_bez_am_fh (
      tbl_am_index_am INTEGER UNSIGNED NOT NULL,
      tbl_fh_index_fm INTEGER UNSIGNED NOT NULL,
      PRIMARY KEY(tbl_am_index_am, tbl_fh_index_fm),
      INDEX tbl_am_has_tbl_fh_FKIndex1(tbl_am_index_am),
      INDEX tbl_am_has_tbl_fh_FKIndex2(tbl_fh_index_fm)
      );

      CREATE TABLE tbl_fh (
      index_fm INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      fh_name CHAR(30) NULL,
      PRIMARY KEY(index_fm)
      );

      CREATE TABLE tbl_fm (
      index_fm INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      tbl_fh_index_fm INTEGER UNSIGNED NOT NULL,
      name_fm CHAR(30) NULL,
      beschreibung_fm LONGTEXT NULL,
      pfad_fm CHAR(30) NULL,
      PRIMARY KEY(index_fm),
      INDEX tbl_fm_FKIndex1(tbl_fh_index_fm)
      );

      ah = autohersteller
      am = automodell
      fh = felgenhersteller
      fm = felgenmodell


      So...das war das script. Alle Tabellen werden sauber angelegt ohne Fehler.

      Auf http://pjodl.dyndns.org/konfigurator ist die Webseite die bisher läuft.
      Wie man sehen kann nicht gerade viel.

      Ich poste auch mal den code der seite :
      PHP-Code:
      <?php
      include 'dbconfig.php';

      $ahersteller = ($_POST["ahersteller"]);
      $amodell = ($_POST["amodell"]);

      function 
      gen_ahersteller_dropdown(){
      $ahersteller = ($_POST['ahersteller']);
      if(!empty(
      $ahersteller)){

      $sql "SELECT * FROM tbl_ah WHERE index_ah = '$ahersteller';";
        
      $result mysql_query($sql);
          while(
      $row mysql_fetch_assoc($result)) { 
          echo 
      '<option selected=selected value="'.$row['index_ah'].
          
      '">'.$row['name_ah'].'</option>';
          }       
      }

      $sql "SELECT * FROM tbl_ah";
        
      $result mysql_query($sql);
          while(
      $row mysql_fetch_assoc($result)) { 
          echo 
      '<option value="'.$row['index_ah'].
          
      '">'.$row['name_ah'].'</option>';
          }       
      }

      function 
      gen_amodell_dropdown(){
      $ahersteller = ($_POST["ahersteller"]);

      $result mysql_query("SELECT name_am, pfad_am FROM tbl_am 
      WHERE tbl_ah_index_ah = '" 
      $_POST['ahersteller'] . "'");

      $sql "SELECT index_am,tbl_am.name_am FROM tbl_am 
      WHERE tbl_am.tbl_ah_index_ah = "
      .$ahersteller.";";
      //$sql = "SELECT name_am FROM tbl_am";
        
      $result mysql_query($sql);
          while(
      $row mysql_fetch_assoc($result)) { 
          echo 
      '<option value="'.$row['index_am'].
          
      '">'.$row['name_am'].'</option>';
          }       
      }
      ?>
      <form name="insert" method="post" action="index.php">
      <table width="300" border="1">
        <tr>
            <th colspan="2">Insert</th>
        </tr>
        <tr>
          <td>Autohersteller</td>
          <td>
          <select onchange="this.form.submit()" name="ahersteller" 
          value="<?php if(!empty($ahersteller)) 
          echo 
      $ahersteller?>"><?php gen_ahersteller_dropdown(); ?></select>    </td>
        </tr>
        <tr>
          <td>Automodell</td>
          <td>
          <select name="amodell"><?php gen_amodell_dropdown(); ?></select>    </td>
        </tr>
        <tr>
          <td colspan="2"><input type="submit" name="Submit" value="Senden" /></td>
        </tr>
      </table>
      <?php echo "Hersteller : " $ahersteller "<br>" $sql;?>
      </form>
      <?php

      $result 
      mysql_query("SELECT * FROM tbl_ah");
      while(
      $row mysql_fetch_array($result)) {
        echo 
      $row["name_ah"];
      }
      ?>
      <br />
      <?php

      $result 
      mysql_query("SELECT * FROM tbl_am");
      while(
      $row mysql_fetch_array($result)) {
        echo 
      $row["name_am"];
      }
      ?>
      So...jetzt ist vielleicht für euch mehr zu sehen.
      Also was noch nicht läuft und wo ich einfach den Fehler nicht sehe ist :

      nachdem ich die automarke auswähle soll das automodell auszuwählen sein. Jedoch nach der Auswahl der Automarke steht nichts bei Automodell drin *mist*... Also wenn da jemand ein Tipp hat wäre cool...

      Tobi hat ja schon den select befehl geschrieben um die bild-url aus der datenbank zu bekommen. Hab nen ganzen tag gesessen aber irgendwie wollte nichts so recht funzen.

      Also nachdem ich nun die Automarke folglich das Automodell auswähle, soll dann der Bild-Pfad (aus tbl_am => pfad_am) geholt werden. Und mit dem Pfad den ich dort heraushole soll nun die Webseite auf der Festplatte nach dem Bild suchen und das Bild holen und folglich anzeigen.

      Vielleicht kann uns jemand weiterhelfen ... Wir wären sehr dankbar!
      Zuletzt geändert von pjodl; 07.06.2007, 16:00.

      Kommentar


      • #4
        Ich bin nicht willens deinen HTML(und PHP)-Quelltext durchzulesen da du offenbar nicht in der Lage bist den entsprechenden PHP-Tag zu benutzen.

        PHP-Code:
        $result mysql_query("SELECT name_am, pfad_am FROM tbl_am 
                               WHERE tbl_ah_index_ah = '" 
        $_POST['ahersteller'] . "'"); 
        ungetestet... btw. is eure Struktur übrigens ganzschön komisch .

        EDIT:
        Sorry.. doofe große auflösung
        Zuletzt geändert von ArSeN; 07.06.2007, 22:28.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          Hallo zurück.

          Vielen Dank für deine Hilfe, werds später mal testen und gucken ob ich das hinbekommen.
          Deine Kritik ist vollkommen berechtigt. Nun ist der Code in PHP Tags (sorry).
          Wir sind leider Anfänger, deshalb ist die Struktur des ganzen vielleicht ein wenig wirr...

          Bis später!

          Kommentar


          • #6
            Bitte den Code auch so umbrechen, dass man auf 1024x768 Pixeln nicht horizontal scrollen muss!

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              sooo ich hab mal geschaut wegen eurer datenbank...

              die struktur die ihr vorseht, impliziert, dass alle felgen eines herstellers zu einem automodell passen, wegen der beziehung

              automodell -> felgenhersteller -> felgenmodell....

              es gibt keine direkte beziehung zwischen automodell und felgenmodell...

              ich denke, die beziehung andersherum aufzubauen wäre sinnvoller, weil realer...

              automodell -> autohersteller
              felgenmodell -> felgenhersteller

              aber automodell -> felgenMODELL (hier nicht hersteller)...


              greetz high
              Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
              When everything else fails, manipulate the data...
              Beschriftungen / Großformatdruck / Werbemittel

              Kommentar


              • #8
                Hallo high...

                ich habe nun nochmals die Datenbank entworfen...

                ist sie denn so richtig ?

                CREATE TABLE tbl_ah (
                index_ah INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
                name_ah CHAR(30) NOT NULL,
                PRIMARY KEY(index_ah)
                );

                CREATE TABLE tbl_am (
                index_am INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
                tbl_ah_index_ah INTEGER UNSIGNED NOT NULL,
                name_am CHAR(30) NOT NULL,
                pfad_am CHAR(30) NULL,
                PRIMARY KEY(index_am),
                INDEX tbl_am_FKIndex1(tbl_ah_index_ah)
                );

                CREATE TABLE tbl_am_has_tbl_fm (
                tbl_am_index_am INTEGER UNSIGNED NOT NULL,
                tbl_fm_index_fm INTEGER UNSIGNED NOT NULL,
                PRIMARY KEY(tbl_am_index_am, tbl_fm_index_fm),
                INDEX tbl_am_has_tbl_fm_FKIndex1(tbl_am_index_am),
                INDEX tbl_am_has_tbl_fm_FKIndex2(tbl_fm_index_fm)
                );

                CREATE TABLE tbl_fh (
                index_fm INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
                fh_name CHAR(30) NULL,
                PRIMARY KEY(index_fm)
                );

                CREATE TABLE tbl_fm (
                index_fm INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
                tbl_fh_index_fm INTEGER UNSIGNED NOT NULL,
                name_fm CHAR(30) NULL,
                beschreibung_fm LONGTEXT NULL,
                pfad_fm CHAR(30) NULL,
                PRIMARY KEY(index_fm),
                INDEX tbl_fm_FKIndex1(tbl_fh_index_fm)
                );

                ah = autohersteller
                am = automodell

                Also so müsste das stimmen.
                Großen Dank an dich high, das war ja ein ganz schön großer Patzer in der Datenbank !!!

                So nun komm ich aber immer noch nicht mit dem PHP Programmieren weiter.
                Das was richtig funktioniert ist der Datenbank Verbindung.
                Danach kann ich immer hin schon mal mir jeweils die Autohersteller und Aotimodell per Dropdown auswählen...

                Aber soll ja eine Abhängigkeit bestehen.
                Nachdem ich Autohersteller auswähle, soll Automodell angezeigt werden...
                Hab auch schon gegoogelt...aber leider hat alles noch nciht hingehauen !


                fh = felgenhersteller
                fm = felgenhersteller

                Kommentar


                • #9
                  die tabellen sehen jetzt gut aus...
                  damit kann man was anfangen, normalisierung passt so weit, die daten werden dort gespeichert, wo sie dazugehören, redundanz gibt es keine, beziehungen können so aufgebaut werden, wie benötigt...

                  ohne jetzt das erzeugte HTML durchgesehen zu haben sehen auch die anderen Sachen ganz okay aus...

                  die auswahl muss muss in zwei schritten erfolgen.

                  PHP weiß ja nicht, was der besucher ausgewählt hat, bevor ihm das mitgeteilt wird...

                  das bedeutet, dass du mehrere möglichkeiten hast:

                  entweder formular aufteilen und erst den hersteller wählen lassen -> abschicken...
                  nun steht php die information zur verfügung. danach kannst du dann die möglichen modelle wählen.

                  eine zweite möglichkeit wäre, alle möglichen kombinationen auszulesen, und bei auswahl des herstellers die modell-auswahl per javascript anzupassen. Das ist für den Benutzer komfortabler, aber es müssen deutlich mehr informationen an den browser geschickt werden (eben nicht nur alle hersteller, und dann alle passenden modelle, sondern tatsächlich alle hersteller mit ALLEN modellen)

                  eine dritte möglichkeit wäre, die passenden modelle nachzuladen (Stickwort AJAX / xmlHTTPRequest). Das bringt dann wenig Traffic (wie bei möglichkeit 1) und weiterhin größten Komfort (wie bei Möglichkeit 2). Allerdings ist diese Lösung Programmiertechnisch die anspruchsvollste.

                  Am einfachsten umzusetzen wäre Möglichkeit 1 (ist eben stur geradeaus...) aber ich weiß ja nicht, ob das eurer Aufgabenstellung genügt.

                  Im Grunde musst du dir als erstes mal eines klar machen:
                  Jede Nutzer-Interaktion passiert im Browser (JavaScript / Formularauswahl etc.)
                  PHP läuft auf dem Server
                  Bevor einer der beiden auf eine Aktion reagieren kann, muss erst ein Datenaustausch stattfinden (auf welchem weg auch immer)
                  Bedeutet, PHP erzeugt eine webseite, aber der browser weiß nichts davon... Der webserver muss die Seite erst an den Browser ausliefern, bevor dieser die Darstellen kann. Andersherum genauso... im Browser passiert eine Auswahl, aber der Server weiß nichts davon, bis die Daten wieder an diesen zurückgeschickt werden.

                  greetz, high
                  Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                  When everything else fails, manipulate the data...
                  Beschriftungen / Großformatdruck / Werbemittel

                  Kommentar


                  • #10
                    So bin nun weitergekommen....habe zumindest die dropdownmenus hinbekommen ohne abhängigkeiten... folgender code ist nun existent und kann unter http://pjodl.dyndns.org/konfigurator/ angesehen werden.

                    PHP-Code:
                    <? 
                    include 'dbconfig.php';
                    $sql="SELECT name_autohersteller FROM tbl_autohersteller"; 
                    $result=mysql_query($sql); 

                    $options=""; 

                    while ($row=mysql_fetch_array($result)) { 

                        $id=$row["id"]; 
                        $name_autohersteller=$row["name_autohersteller"]; 
                        $options.="<OPTION VALUE=\"$id\">".$name_autohersteller; 

                    ?> 
                    <p>
                      <SELECT NAME=name_autohersteller> 
                        <OPTION VALUE=0>Wähle deine Automarke
                        <?=$options?> 
                      </SELECT> 
                      <? 
                    $sql="SELECT name_automodell FROM tbl_automodell"; 
                    $result=mysql_query($sql); 

                    $options=""; 

                    while ($row=mysql_fetch_array($result)) { 

                        $id=$row["id"]; 
                        $name_automodell=$row["name_automodell"]; 
                        $options.="<OPTION VALUE=\"$id\">".$name_automodell; 

                    ?>
                    </p>
                    <p> 
                      <SELECT NAME=name_automodell> 
                        <OPTION VALUE=0>Wähle dein Automodell
                        <?=$options?> 
                      </SELECT> 
                      <? 
                    $sql="SELECT pfad_automodell FROM tbl_automodell"; 
                    $result=mysql_query($sql); 

                    $options=""; 

                    while ($row=mysql_fetch_array($result)) { 

                        $id=$row["id"]; 
                        $pfad_automodell=$row["pfad_automodell"]; 
                        $options.="<OPTION VALUE=\"$id\">".$pfad_automodell; 

                    ?> 
                    </p>
                    <p>
                      <SELECT NAME=name_autohersteller> 
                        <OPTION VALUE=0>Bildpfad 
                        <?=$options?> 
                      </SELECT>
                    </p>
                    Als nächstes wäre da nun die Abhängigkeit...also das Sprungmenu was ich nicht hinbekomme...bzw. hinbekommen werde ich es irgendwann...aber das Projekt muss in 10 Tagen fertig werden. Also wenn jemand weiss wie ich die Abhängigkeit hinbekomme zwischen den Dropdownmenus wäre ich sehr dankbar... (nach Auswahl BWM soll im Folge Dropdownmenu nur noch 3er und 5er stehen).

                    Kommentar

                    Lädt...
                    X