multi select und join

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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.

    Comment


    • #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.......

      Comment


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

        Comment


        • #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 
          ??

          Comment


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

            Comment

            Working...
            X