|PHP| MySQL Query 'OR' anhand von einem Array erweitern

topfkanne

♪ ♫
ID: 80534
L
20 April 2006
1.578
159
Hallo,

ich bin jetzt auf folgende Hürde bei meinem Script gestoßen:

PHP:
	$zutaten = explode(",", $row->zutaten);
	
	
	$innerquery = mysql_query("SELECT * FROM zutaten WHERE id = '1' or id = '2' ORDER BY name DESC");
	while($innerrow = mysql_fetch_object($innerquery)) {
	
		echo $innerrow->name.'<br>';
	
	}

Ich habe oben ein Array $zutaten(), welches die Zutaten einer Speise beinhaltet (zb.: 1,2,6,22,34 welche die IDs der Zutaten darstellen).
Diese Zutaten sollen jetzt ausgegeben werden. Wenn $zutaten() eine Ziffer beinhaltet, ist es ja ganz easy. Aber wie kann ich die 'OR'-Operation des Querys jetzt an mehrere Ziffern von $zutaten() anpassen?

Hoffe mein Problem ist verständlich *g
 
Leider nicht.. :-?

Ich nehm an.. du hast eine ID in der Variable. Dann hast du andere Variablen, in denen die Zutaten zur ID stehen. Richtig?


Ähm ja,
ich habe Waren, welche eine Spalte mit Namen 'Zutaten' in meiner MySQL-Datenbank haben.
Diese Spalte hat immer folgendes Aussehen: '1,4,11,13' oder ähnlich. Was darin steht, sind die IDs der Zutaten, welche in der Tabelle 'Zutaten' stehen.

Ich könnte darauf hin, wenn es z.B. 5 Zutaten zu der Ware gibt, 5 MySQL Querys starten um die auszugeben.... aber das wäre ja schon blöd.

Vielleicht ist meine Idee genaus blöd, aber ich plante eben EIN MySQL Query zu starten, bei dem 5x der 'OR' Operator zuschlägt, um aus allen Zutaten die 5 zuzuordnenbaren zu wählen.
 
Moment, geh ich richtig der Annahme, dass ich das Query in nem String vorbauen kann und durch ne Schleife (vereinfacht):

$string_vom_select .= 'or ZAHL';

die Sachen dazuzählen kann??
Muss ich nacher mal ausprobieren, bestell jetzt erstmal Pizza *g
 
WHERE id IN (1, 2, 15, 23, 42)

;)

Edit:
Ähm ja,
ich habe Waren, welche eine Spalte mit Namen 'Zutaten' in meiner MySQL-Datenbank haben.
Diese Spalte hat immer folgendes Aussehen: '1,4,11,13' oder ähnlich. Was darin steht, sind die IDs der Zutaten, welche in der Tabelle 'Zutaten' stehen.

Sehr unvorteilhafte Struktur. Schau dir doch mal die Normalenformen an. Brauchst soweit ich dein Problem verstehe eine zusätzliche Verknüpfungstabelle. Oder du verfährst weiterhin so! ;)


Edit:
Ich könnte darauf hin, wenn es z.B. 5 Zutaten zu der Ware gibt, 5 MySQL Querys starten um die auszugeben.... aber das wäre ja schon blöd.

Vielleicht ist meine Idee genaus blöd, aber ich plante eben EIN MySQL Query zu starten, bei dem 5x der 'OR' Operator zuschlägt, um aus allen Zutaten die 5 zuzuordnenbaren zu wählen.

Na ja.. ein JOIN würde es bei mir dann genauso tun - in einer Abfrage! ;)
 
Ist aber nur ne Methode und nicht die Lösung oder? :)

edit zu deinem:
Hm, ne... ich glaub die Struktur ist ok so.
Ich hab ne Tabelle Warengruppe, Waren und Zutaten.
Das muss auch für die spätere Administration so sein.
 
Das ist die beste und einfachste Lösung, die es dafür wohl gibt.

Vielleicht solltest Du Dir aber mal überlegen, die Zutaten atomar mittels einer Zwischentabelle zu speichern, dann brauchst Du keine Extraqueries für die Zutaten sondern joinst alles zusammen und hast weniger Probleme und Anfragen an die DB.