Hallo ich hab da ein problem, welches ich nicht lösen kann,vielleicht bekomme ich ja ratschläge,Tips, oder sogar die erhoffte Lösung :-)
Schilderung:
ich habe eine Tabelle Kategorien mit den Tabellensätzen:
cat_id, parent_id,cat_name
5 Hauptkategorien A,B,C,D,E
diese haben die parent_id alle =0
einige Hauptkategorien haben 2 unterkategorien und einige 3 unterkategorien
die untekategorien haben jeweils einen nummerischen Wert:
Bsp: Haupkategorie A hat die Parent_id=0 und kat_id=6
die unterkategorie von A (a1,a2,a3) haben die parent_id wert=6 und die cat_id sind von a1=7 a2=8 a3=9
-----------------------------------------------------------------------------------------
ausserdem habe ich eine Tabelle artikel mit den sätzen:
id / und kat
in kat wird die cat_id des artikel gespeichert z.B ich stelle den Artikel in kategorie A --> in die unterkategorie a3 ein, somit ist kat=9
------------------------------------------------------------------------------------------
jetzt habe ich eine suchoption wobei ich einen begriff eingebe und in allen kategorien suche.die funktion sucht zuerst in der tabelle artikel,die diesen suchbegriff beinhalten
ich möchte nun per select abfrage/mit einer while schleife alle kategorie nummern und anzahl artikel in der jeweiligen kategorie in der tabelle artikel und kategorien abfragen
doppelte kategorien sollen nur einmal ausgegeben werden wo bei gleiche kategieren zusammengezählt werden sollten wie z.B:
wenn die kategorie 9 dreimal vorkommt sollte das ergebnis so aussehen
9(3)
-----------------------------------------------------------------------------------------
jetzt möchte ich von den unterkategorien jeweils die parent_id ermitteln
d.h ich müsste rückwärts gehen von der letzen unterkategorie anfangen und dann von diesen die parent_id ermitteln.dann erhalte ich die cat_id von der parent_id die darauffolgt.
das problem ist nun dies: da einige haupkategorien 3 und einige 2 unterkategorien haben. wenn ich eine rückwärtsabfrage von hinten beginne und gelange ich nach 2 abfragen auf die hauptkategorie von den kategorien die 2 unterkategorien haben, die kategorien welche 3 unterkategorien haben,von denen ist der level bis zur hauptkategorie noch nicht erreicht, wenn ich dann eine weitere 3.abfrage stelle, verschwinden die kategorien, die 2 unterkategorien haben da nach der 2.abfrage der level bereits erreicht wurde für diese.
hier mein code:
//data1 letzte level3 der kats
$resulta=mysql_query("SELECT DISTINCT a.kat,c.cat_name,c.cat_id,c.parent_id FROM artikel a,kategorien c where a.kat=c.cat_id and ( $qp1 ) group by kat") or die(mysql_error());
while ($data1=mysql_fetch_array($resulta)) {
//data2 level 2
$resultb=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id=$data1[kat] group by parent_id order by cat_name;")or die(mysql_error());
while ($data2=mysql_fetch_array($resultb)) {
//data3 level 1 // von den kategorien,die 2 unterkategorien haben,ist hier bereits die parent_id=0,somit wird der wert 0 an data4 weitergegeben,da es keine cat_id=0 gibt,werden diese kategorien nicht mehr angezeigt
$resultc=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id='$data2[parent_id]' group by parent_id ORDER BY cat_name;")or die(mysql_error());
($data3=mysql_fetch_array($resultc));
//data4 level 0 //
$resultd=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id='$data3[parent_id]' group by parent_id ORDER BY cat_name;")or die(mysql_error());
while ($data4=mysql_fetch_array($resultd)) {
Schilderung:
ich habe eine Tabelle Kategorien mit den Tabellensätzen:
cat_id, parent_id,cat_name
5 Hauptkategorien A,B,C,D,E
diese haben die parent_id alle =0
einige Hauptkategorien haben 2 unterkategorien und einige 3 unterkategorien
die untekategorien haben jeweils einen nummerischen Wert:
Bsp: Haupkategorie A hat die Parent_id=0 und kat_id=6
die unterkategorie von A (a1,a2,a3) haben die parent_id wert=6 und die cat_id sind von a1=7 a2=8 a3=9
-----------------------------------------------------------------------------------------
ausserdem habe ich eine Tabelle artikel mit den sätzen:
id / und kat
in kat wird die cat_id des artikel gespeichert z.B ich stelle den Artikel in kategorie A --> in die unterkategorie a3 ein, somit ist kat=9
------------------------------------------------------------------------------------------
jetzt habe ich eine suchoption wobei ich einen begriff eingebe und in allen kategorien suche.die funktion sucht zuerst in der tabelle artikel,die diesen suchbegriff beinhalten
ich möchte nun per select abfrage/mit einer while schleife alle kategorie nummern und anzahl artikel in der jeweiligen kategorie in der tabelle artikel und kategorien abfragen
doppelte kategorien sollen nur einmal ausgegeben werden wo bei gleiche kategieren zusammengezählt werden sollten wie z.B:
wenn die kategorie 9 dreimal vorkommt sollte das ergebnis so aussehen
9(3)
-----------------------------------------------------------------------------------------
jetzt möchte ich von den unterkategorien jeweils die parent_id ermitteln
d.h ich müsste rückwärts gehen von der letzen unterkategorie anfangen und dann von diesen die parent_id ermitteln.dann erhalte ich die cat_id von der parent_id die darauffolgt.
das problem ist nun dies: da einige haupkategorien 3 und einige 2 unterkategorien haben. wenn ich eine rückwärtsabfrage von hinten beginne und gelange ich nach 2 abfragen auf die hauptkategorie von den kategorien die 2 unterkategorien haben, die kategorien welche 3 unterkategorien haben,von denen ist der level bis zur hauptkategorie noch nicht erreicht, wenn ich dann eine weitere 3.abfrage stelle, verschwinden die kategorien, die 2 unterkategorien haben da nach der 2.abfrage der level bereits erreicht wurde für diese.
hier mein code:
//data1 letzte level3 der kats
$resulta=mysql_query("SELECT DISTINCT a.kat,c.cat_name,c.cat_id,c.parent_id FROM artikel a,kategorien c where a.kat=c.cat_id and ( $qp1 ) group by kat") or die(mysql_error());
while ($data1=mysql_fetch_array($resulta)) {
//data2 level 2
$resultb=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id=$data1[kat] group by parent_id order by cat_name;")or die(mysql_error());
while ($data2=mysql_fetch_array($resultb)) {
//data3 level 1 // von den kategorien,die 2 unterkategorien haben,ist hier bereits die parent_id=0,somit wird der wert 0 an data4 weitergegeben,da es keine cat_id=0 gibt,werden diese kategorien nicht mehr angezeigt
$resultc=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id='$data2[parent_id]' group by parent_id ORDER BY cat_name;")or die(mysql_error());
($data3=mysql_fetch_array($resultc));
//data4 level 0 //
$resultd=mysql_query("SELECT cat_id,parent_id,cat_name FROM kategorien WHERE cat_id='$data3[parent_id]' group by parent_id ORDER BY cat_name;")or die(mysql_error());
while ($data4=mysql_fetch_array($resultd)) {
Kommentar