Newbie-Frage: wohl Verständnisproblem zu Schleifen und Arrays

Foolish Freak

Grünschnabel
Hallo!

Ich schlage mich nun schon einige Zeit durch Testversuche und Tutorials, werde aus den Ergebnissen und Erläuterungen aber nicht ganz schlau...

Folgende Frage/Problem:

Ich habe 3 Tabellen aus einer MySQL-Datenbank, wobei die erste Tabelle pro Zeile eine Verknüpfung zu Informationen in einer jeweils anderen Tabelle aufweist.

Um die Resultate zu beobachten habe ich das Konstrukt mit Platzhalter-Daten gefüllt. Sieht also so aus:

Tabelle: test_join
Spalten: join_lfd_nr text nr
------------------------------------
Zeile 1: 1 eins 1
Zeile 2: 2 zwei 2

Tabelle: test_lux
Spalten: lfd_nr lux_text nr
------------------------------------
Zeile 1: 1 a 1
Zeile 2: 2 b 1

Tabelle: text_ausl
Spalten: lfd_nr ausl_text nr
------------------------------------
Zeile 1: 1 A 2
Zeile 2: 2 B 2

Die Daten hole ich komplett (*) per "left join" aus der Datenbank.

Ziel ist es, eine Ausgabe in der Form

- eins -
a
b

- zwei -
A
B

zu erhalten.

a) Wieso überschreibt mir in nachfolgender Schleife PHP das "a" durch "eins" anstatt erst "eins" auszugeben und danach den Rest?

Schleife:
---------
while ($row = mysql_fetch_array($result))
{
printf("%s\n<br>",$row["text"]);

while ($row = mysql_fetch_array($result))
{
printf("%s\n<br>",$row["lux_text"]);
printf("%s\n<br>",$row["ausl_text"]);
}
}



b) Wie muß ich eine Schleifenverschachtelung zusammensetzen, damit obiges Ziel erreicht werden kann?

Für Hinweise (auch auf allgemein verständliche Tutorials hierzu, für die man kein begnadeter Programmierer sein muß) wäre ich Euch dankbar...

Mit Dank im voraus,

Foolish Freak
 
also die reihenfolge der ausgabe legt nicht php fest sondern sql

letzlich brauchst du ja 2 left join abfragen
die auch nacheinander abgefragt werden müssen

$result = mysql_query("der erste join");
while ($row = mysql_fetch_array($result))
{
printf("%s\n<br>",$row["lux_text"]);
printf("%s\n<br>",$row["ausl_text"]);
}

$result = mysql_query("der zweite join");
while ($row = mysql_fetch_array($result))
{
printf("%s\n<br>",$row["lux_text"]);
printf("%s\n<br>",$row["ausl_text"]);
}
 
Hey, super!

Werde damit weiter experimentieren.
Mein Fehler lag wohl bislang darin, dass
ich davon ausging, alle Ausgaben in PHP über eine einzelne Query pro Informationsblock abwickeln zu können/müssen.

Hoffe, mich mal revanchieren zu können.

;)

Foolish Freak
 
Zurück