Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Join

Einklappen

Neue Werbung 2019

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

  • Frage zu Join

    Hallo,

    ich habe eine Frage zu JOIN. Ich habe eine Selct-Abfrage mi drei Joins. Die funktioniert soweit auch wunderbar. Sie sieht wie folgt aus

    Code:
    $ergebnis = mysqli_query("
    						SELECT
    						produkte.id,
    						produkte.name,
    						produkte.farbe,
    						produkte.stammpreis,
    						produkte.ean,
    						produkte.artikelnr,
    						produkte.kategorie,
    						produkte.gesamtmenge, 
    		
    						produktfarben.id,
    						produktfarben.farbe,  
    		
    						produktkategorie.id,
    						produktkategorie.kategorie AS kategoriename,
                                                    produktbilder.bildname, 
                                                    produktbilder.savecode, 
     						produktbilder.endung,
                                                    produktbilder.galerie
    		 
    						FROM produkte 
    
    						INNER JOIN produktfarben 
    							ON produkte.farbe=produktfarben.id
    		
    						INNER JOIN produktkategorie 
    							ON produkte.kategorie=produktkategorie.id
    		
    						INNER JOIN produktbilder 
    							ON produkte.id=produktbilder.zu_produkt
    				
    						WHERE produkte.id IN($ids)
    				
    						ORDER BY produkte.name
    
    		");
    
    
    while($row = mysqli_fetch_object($ergebnis)) 
    	{
    $row->name;
    
    ...
    }
    Solange das Ergebnis der Verknüpfungen immer nur ein Ergebnis liefert ist mir klar wie ich das ausgeben kann. Das INNER JOIN produktbilder liefert nun mehrere Ergebnisse die ich in der Schleife ausgeben möchte. Ich weiß aber nicht wie. Ich denke als ARRAY aber $row->bildname[0] wird nur der erste Buchstabe ausgworfen.

    Ich arbeite noch nicht so lange mit Joins.


  • #2
    Mach mal ein var_dump($row); und du siehst wie du die Ergebnisstruktur ansteuern musst.
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #3
      Vielen Dank für die Hilfe. Es werden mir alle Ergebnisse angezeigt die möglich sind. Hier mal eine davon

      Code:
      object(stdClass)#1 (12) { ["id"]=> string(10) "132455073" ["name"]=> string(24) "Produkt B76" ["farbe"]=> string(10) "weiss matt" ["stammpreis"]=> string(5) "99.90" ["ean"]=> string(15) " 20226504" ["artikelnr"]=> string(8) "10119948" ["kategorie"]=> string(10) "1324310073" ["gesamtmenge"]=> string(1) "0" ["kategoriename"]=> string(9) "Bettgestell" ["Bildname"]=> string(10) "138bf25d70" ["endung"]=> string(4) ".jpg" ["galerie"]=> string(0) "" }
      Was immer Unterschiedlich ist, ist das hier ["Bildname"]=> string(10) "138bf25d70"
      Klar weil wie gesagt das eine Join mehrere Ergebnisse erzeugt. Ich weiß leider immer noch nicht wie ich alle diese Werte in der Schleife aufrufe.

      Stehe auf dem Schlauch.

      Kommentar


      • #4
        Das Problem ist, das Du für jedes Bild eine komplette Datenzeile hast.
        In Deiner Schleife kannst Du daher immer nur auf ein Bild eingehen.

        Vielleicht könntest Du Dein Ergebnis zunächst für die Ausgabe nochmal vorbereiten:
        PHP-Code:
        $aUpgraded = array();

        while( 
        $row mysqli_fetch_object($result) ) {

            if ( !
        array_key_exists($row->id$aUpgraded) ) {

                
        $aUpgraded[$row->id] = $row;
                
        $aUpgraded[$row->id]->bilder = array( $row->Bildname );

                unset( 
        $aUpgraded[$row->id]->Bildname // ...wenn man es hübsch haben will

                
        continue;

            }

            
        $aUpgraded[$row->id]->bilder[] = $row->Bildname;


        Gibt sicher schönere Lösungen, aber damit solltest Du in $aUpgraded das haben, was Du zur Ausgabe brauchst.
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar

        Lädt...
        X