Hallo. Folgendes Problem:
Ich habe eine Newstabelle in der ich ein Feld für die Kategorien habe und eine Tabelle für die Newskategorien. Nun gibt es die Möglichkeit in den Newskategorien die Kategorien Offline zu nehmen. Aber trotzdem kann man diese Auswählen (als Kategorie für die News).
Auf der Startseite will ich nun die letzten 3 News auslesen, die nicht in der 'Offline'-Cat sind. Die Kategorien (eine News kan viele haben) werden in der DB wie folgt gespeichert 1,2,3,4,5, etc.
Gegenwärtig löse ich das so, das ich erst alle Kategorien auslese die Offline sind und dadurch eine WHERE-Clausel erstelle:
$result = $db->query("SELECT `id`, `online` FROM `".$__cfg['mysql']['tables']['newscats']."` WHERE ( `online` = '0' )"
$offline_cats = '';
while($row = mysql_fetch_object($result)) {
$offline_cats .= " AND ( `categorie` NOT LIKE '%".$row->id.",%' ) ";
}
Danach diese WHERE-Clausel in die Newstabelle als Abfrage:
$result = $db->query("SELECT `id`, `date`, `topic`, `message`, `online`, `categorie`, `saved` FROM `".$__cfg['mysql']['tables']['news']."`
WHERE ( `online` = '1' )
AND ( `saved` = '1' )
".$offline_cats." ORDER BY `date` ASC LIMIT 3
"
$last_3_news = '';
while($row = mysql_fetch_object($result)) {
$last_3_news .= $row->id;
}
Es macht genau das, was es machen soll. Doch ich finde es zu viel. Ich denke, es geht sicher knapper. Aber ka .. hab mich nie so richtig in diese Richtung weitergebildet ..