Array auslesen

soa

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein kleines Problem mit meiner DB Ausgabe.

Ich habe normalisierte Tabellen.

Es gibt mehrere Branchen, die ein Kunde angehören kann.

Die Kunden ID wird als Variable übergeben.

PHP:
$result1 =mysql_query("SELECT
                           Name FROM 
                           branche b
                           LEFT JOIN branche2kunde c ON
                          c.BranchenID = '$id'" ,$db )or die(mysql_error());
    // datensatz anzeigen lassen 
    
    while ($row = mysql_fetch_array($result1))
    {
    
    $branche01     	     = $row[0];
    $branche02                = $row [0];
    $branche03    	     = $row[0];
    
    }//end while

In branche2kunde befindet sich nur die KD_ID und die BranchenID.

Wie lese ich das richtig aus, damit die Variablen jeweils eine neue Branche speichern
und nicht die Gleiche?

Ich seh gerade irgendwie auf dem Schlauch. Vielen Dank im voraus.

Gruß
SOA
 
Der Anweisungsblock der while-Kontrollstruktur wird so lange ausgeführt, bis der Ausdruck innerhalb der Klammern wahr ist.
In deinem Fall bedeutet das, dass den Variablen $branche01 bis $branche03 so lange ein neuer Wert zugewiesen wird, bis die mysql_fetch_array()-Funktion keinen Datensatz mehr zurückliefert. Dies bedeutet wiederum, dass außerhalb der Kontrollstruktur nur der Wert des letzten Datensatzes verfügbar ist, das vorherige Werte immer wieder überschrieben wurden.
 
Hallo,

erst einmal Danke für deine Antwort.
Damit sagst du mir allerdings nichts Neues. Er gibt dann immer die letzte Branche aus,
die gefunden wurde und zwar in allen Variablen.

Wie könnte ich das Problem lösen ?


Danke
 
Hallo,

leider weiß ich nicht genau wie du es meinst.

Hättest du vielleicht einen Ansatz oder ein Beispiel?
 
Wenn du alle Datensätz ausgeben möchtest, dann tu dies doch direkt innerhalb der while-Kontrollstruktur und speichere die Daten nicht erst in einer Variable zwischen. Also:
PHP:
<?php

	while( $row = mysql_fetch_array($result1) ) {
		echo $row[0];
	}

?>
 
Moin,

leider funktioniert das nicht so ganz:


PHP:
<?php
				  while ($row2 = mysql_fetch_array($result1))
    {
				echo '<tr>',
        '<td class="zelle" bgcolor="#eeeeee" width="119">',
						'<p><strong>1. Branche:</strong></p>',
					'</td><td class="zelle" bgcolor="#eeeeee">',
						'<p>'.$row2[0].'</p>',
					'</td><td class="zelle" bgcolor="#eeeeee" width="119">',
						'<p><strong>2. Branche:</strong></p>',
					'</td><td class="zelle" bgcolor="#eeeeee">',
						'<p>'.$row[0].'</p>',
					'</td></tr><tr>',
					'<td class="zelle" bgcolor="#eeeeee" width="119">',
						'<p><strong>3. Branche:</strong></p>',
					'</td><td class="zelle" bgcolor="#eeeeee">',
						'<p>'.$row2[0].'</p>',
					'</td>';
			}//end while		
			?>


Es gibt bis zu 3 Branchen. Er gibt Branche 1 und 3 doppelt aus.
Branche2 läßt er weg bei einem Ergebnis mit 2 Branchen....
 
In der obigen Anfrage ist auch nur ein Ausdruck notiert. Handelt es sich bei den drei Branchen denn um jeweils einen Datensatz oder sind es drei unterschiedliche Attribute eines Datensatzes?
 
Ja, es handelt sich um 3 verschiedene Datensätze.

branchen2kunde hat die Attribute BranchenID der Relation Branche
und KD_ID der Realtion Kunde.

Es scheint so zu sein, dass der Index mehrfach durchsucht wird, so dass nun Datensätze
doppelt ausgegeben werden.

Dieses Problem tritt nun nicht nur bei dieser Zwischentabelle auf, sondern auch bei allen anderen M:N Beziehungen.
 
Habe es jetzt so gelöst.

PHP:
    $result1 =mysql_query("SELECT
                           b.Name FROM 
                           branche b
                           LEFT JOIN branche2kunde c ON b.BranchenID  = c.BranchenID
                           WHERE
                          c.KD_ID = '$id'" ,$db )or die(mysql_error());
    // datensatz anzeigen lassen 
    
     while ($row1 = mysql_fetch_array($result1))
    {
      $branche[] = $row1[0];
    }
    

    foreach ($branche as $b)
    {
      $branche01 = $branche[0];
      $branche02 = $branche[1];
      $branche03 = $branche[2];
    }

Viele Grüße
SOA
 
Zurück