Kategorien nur anzeigen - wenn Artikel vorhanden

proloser

Erfahrenes Mitglied
Hallo,

ich habe in der Datenbank 2 Tabellen mit Kategorien ...

Tabelle 1 -> | ID | Kategorie 1 Name |
Tabelle 2 -> | ID | Kategorie 1 ID | Kategorie 2 Name |


... und eine Tabelle mit Artikel.

Tabelle 3 -> | Kategorie 1 ID | kategorie 2 ID | Artikelname


Die kategorien liste ich mit folgendem Code auf:

PHP:
$res_category1 = mysql_query("SELECT * FROM `category1`"); 
while($row_category1 = mysql_fetch_array($res_category1)){ 
  $category1_list = $row_category1[name];
}

Ich möchte jetzt damit nur die Kategorien aufgelistet werden, in denen sich auch ein Artikel befindet.

Wahrscheinlich ganz einfach aber ich hab da irrgend wo ein Denkfehler drin ...

MfG
Proloser
 
Zuletzt bearbeitet:
Du müsstest für jede Kategorie die Datenbank abfragen, ob dazu Artikel existieren.
Dies könntest du bereits bei der ersten Datenbankabfrage mittels Join erzielen, etwa:
Code:
SELECT `category1`.`name`
FROM `category3`
LEFT JOIN `category1` ON `category1`.`ID` = `category3`.`category1_id`
LEFT JOIN `category2` ON `category2`.`ID` = `category3`.`category2_id`
 
Versteh ich jetzt nicht wirklich ...
Ich muss ja irrgend wo auf die -Artikel Tabelle- zugreifen um zu überprüfen ob die -Kategorie 1 ID- in der -Artikel Tabelle- bei der Spalte -Kategorie 1 ID- vorkommt ...
 
So funktionierts ...

PHP:
$res_category1 = mysql_query("SELECT * FROM `category1`"); 
while($row_category1 = mysql_fetch_array($res_category1)){ 

  $res_category1_article = mysql_query("SELECT * FROM `article` WHERE `category1_id` = '".$row_category1["id"]."' LIMIT 1"); 
  while($row_category1_article = mysql_fetch_array($res_category1_article)){ 
    $caregorie1_list = $row_category1["name"];
  }
    
}
 
Zuletzt bearbeitet:
Zurück