multi select und join

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

  • multi select und join

    hallo!
    ich habe drei tabellen:
    TSpezi
    [SpeziID, SpeziName,..]
    TProdukte
    [ProduktID, ProduktName,..]

    TProdukteSpezi --> Verbindungstabelle
    [ProduktID, SpeziID]

    jetzt möchte ich gerne ein dropdown menü füllen und zwar sollen alle spezifikationen aus tspezi aufgelistet werden, UND wenn eine dieser spezis auch in der verbindungstabelle auftaucht, also einem produkt zugeordnet ist, soll sie markiert werden.

    ich habe das mal so probiert
    PHP-Code:
    <select name="Methoden[]" size="10" multiple>
    <?php 
    $sql0 
    "SELECT * FROM TSpezi";
    $result0 mysql_query($sql0) OR die(mysql_error());            
    while(
    $row0 mysql_fetch_assoc($result0)) 
    {
    $SpeziIDErsteSchleife=$row0['SpeziID'];
    $SpeziNameErsteSchleife=$row0['SpeziName'];
    $sql1 "SELECT * 
    FROM TSpezi pro
    INNER JOIN TProdukteSpezi ref ON ref.SpeziID = pro.SpeziID
    INNER JOIN TProdukte pru ON pru.ProduktID = ref.ProduktID
    WHERE ref.ProduktID ='
    $ProduktID'";
    $result1 mysql_query($sql1) OR die(mysql_error());            
    while(
    $row1 mysql_fetch_assoc($result1)) 
    {
                                    
    $SpeziID=$row1['SpeziID'];
                    
    $SpeziName=$row1['SpeziName'];
        if (
    $SpeziName==$SpeziNameErsteSchleife)
        {
        echo 
    "<option value=$SpeziID selected>$SpeziName XX</option>";
                                    }
        else
        {
        echo 
    "<option value=$SpeziID>$SpeziNameErsteSchleife</option>";
        }
    }
    }
    ?></select>
    #'$ProduktID' kommt von oben

    leider werden jetzt irgendwie alle gelistet und immer mittendrin kommen meine XX (selected) werte........

    was kann ich verbessern, was mach ich falsch?

    krieg irgendwie keinen weiteren ansatz
    danke
    Zuletzt geändert von websdream; 18.08.2005, 17:29.

  • #2
    versuch mal so: (pseudocode)

    select ... from tspezi left join (tproduktspezi inner join tprodukte)

    dann durchläufst du das Ergebnis, gibt die Werte von tspezi aus und wenn du den Wert von tprodukte.produktid nicht null bekommst, setzst du den option-Tag als selected.

    Kommentar


    • #3
      hab es jetzt mal so probiert, aber die ausgabe ist immer noch falsch

      ich habe die innere schleife umgebaut
      PHP-Code:
      $sql1 'SELECT * FROM TSpezifikation TProdukteSpezifikation INNER JOIN TProdukte';
      #WHERE ProduktID ='$ProduktID'";
      $result1 mysql_query($sql1) OR die(mysql_error());            
          while(
      $row1 mysql_fetch_assoc($result1)) 
          {
                                      
      $SpeziID=$row1['SpeziID'];
          
      $SpeziName=$row1['SpezifiName'];
          
      $produktiddurchlauf=$row1['ProduktID'];
          if (
      $produktiddurchlauf <>'$ProduktID')
              {
              echo 
      "<option value=$SpeziID selected>$produktiddurchlauf XX</option>";
              }
              else
              {
              echo 
      "<option value=$SpeziID>$produktiddurchlauf</option>";
              }
          } 
      es werden einige hundert datensätze in dem dropdown menü angezeigt.......

      Kommentar


      • #4
        - warum select * wenn du nur 3 Werte brauchst?
        - select distinct ... sollte dir helfen

        Kommentar


        • #5
          - warum select * wenn du nur 3 Werte brauchst?
          weil ich noch voll im testmodus bin, sobald es läuft wird es geändertr
          select distinct ... sollte dir helfen
          leider nicht - es ändert sich gar nix

          PHP-Code:
          SELECT DISTINCT SpezifikationIDSpezifikationName FROM TSpezifikation TProdukteSpezifikation INNER JOIN TProdukte 
          ??

          Kommentar


          • #6
            deine Abfrage fehlt alles, entweder lernst du nochmals die Grundlagen oder schau in unserem Stickythread rein.

            Kommentar

            Lädt...
            X