Wert aus einer Matrix im Array auslesen

acid_draft

Herzlich willkommen!
Hallo,

da ich noch ein nicht sehr viel Erfahrung mit PHP/SQL habe, ist meine Frage sicherlich leicht zu beantworten. Ich würde mich auf jeden Fall über eine schnelle Antwort freuen. Vielen Dank schonmal! So und jetzt die Frage:

ich entwerfe momentan eine Rezeptdatenbank in SQL mit Anbindung an eine PHP-Seite; die Tabellen in der Datenbank sind in der 3. Normalform. Dort habe ich auch eine Tabelle "Zutaten". Diese enthält den Namen der Zutat, die Einheit und die ID der Zutat. Eine andere Tabelle "Rezept" enthält u.a. die ID des Rezepts, dessen Beschreibung und einen Link auf ein Bild. Ich habe mir jetzt noch eine Verknüpfungstabelle angelegt, die einer Rezept-ID mehrere Zutaten-ID zuweist. Beispiel:

Rezept_IDZutat_IDAnzahl
363
374
381
482

Mein Problem besteht nun darin, dass wenn ich mehrere Zutaten aufgrund einer Rezept_ID auslese und in ein Array schreibe

$abfrage = "SELECT Zutaten_ID FROM Verknüpfung WHERE Rezept_ID LIKE $variable";

es mir nicht gelingt diese Zutaten nacheinander auszugeben (einzeln). Ich habe also in PHP eine Tabelle, die mir pro neuer Zutat eine weitere Zeile anlegt und erst die erste zutat des Rezepts in eine Zelle schreibt, dann die Anzahl in die Nächste, dann die Einheit. In der neuen Zeile darunter soll dann die nächste Zutat ausgegeben werden, usw.

Kann mir jemand an dieser Stelle helfen?
 
So ähnlich mit einer while Schleife.


PHP:
$abfrage = "SELECT Zutaten_ID FROM Verknüpfung WHERE Rezept_ID LIKE $variable";
$ergx = mysql_query($abfrage);
	while($detailsx = @mysql_fetch_array($ergx)) {
	$y++;
	$zutat = $detailsx["zutat"];
	echo $zutat;
}

PS: Willkommen im Supernature-Forum :)
 
Danke!

Vielen Dank für die schnelle Antowrt. Werde ich nach der Arbeit direkt mal ausprobieren und Rückmeldung geben.
 
Anmerkungen:

a) Nicht LIKE für einen fest vorgegebenen Wert benutzen! Sondern:
WHERE spalte = 'wert'
b) Ist das noch kein Array, in was du es schreibst mtit deiner Abfrage. Es ist lediglich ein MySQL Query ;) Ein Array ist es erst ab Jim's "mysql_fetch_array".
c) Entferne erstmal alle @ aus deinem Quellcode. Es ist mMn absolut falsch, bereits beim Entwickeln die (nötigen!) Fehlermeldungen zu unterdrücken. Im Gegenteil: am Anfang sollte man eher noch ein error_reporting(E_ALL) setzen, um auch nur den kleinsten Fehler sofort gemeldet zu bekommen.
d) Setz mal ein Limit in deine SQL Abfrage. Da Jim eh schon schönerweise einen Zähler in die while eingebaut hat, kannst du diesen als break-Anweisung benutzen oder eben ein LIMIT (zB LIMIT 0,50) setzen. Während des Entwickelns hilfreich, wenn eine Schleife nicht per default ins unendliche darf ;)

LG
 
arbeiten...

oh entschuldigung; habe es jetzt endlich ausprobieren können und es klappt ;) vielen Dank nochmal! Bin jetzt dabei die Abfrage zu schreiben, in der man beliebig viele Zutaten eingeben kann, sich also auf Buttondruck das Formular um ein Eingabefeld erweitert. Dort bin ich ehrlich gesagt ein wenig ratlos; dein Post hat mir aber sehr geholfen...
 
Oben