Dit is de query:
<?
$page = "SELECT con.title, con.alias, con.images, con.introtext
FROM db_content con
LEFT JOIN db_categories cat ON con.catid = cat.id
WHERE cat.alias = '".$_GET['alias']."' AND con.state = 1 ORDER BY `ordering` DESC";
?>
Ik moet dus de alias ophalen uit db_categories, maar er is ook een column die alias heet in db_content. Nu heb ik het idee dat hij altijd die van db_content pakt, aangezien de query niks laat zien, tenzij ik er hardcoded een alias naam uit db_categories in zet.
Als ik op info klik krijg ik deze query te zien:
<?
SELECT con.title, con.alias, con.images, con.introtext FROM db_content con LEFT JOIN db_categories cat ON con.catid = cat.id AND cat.alias = 'info' WHERE con.state = 1 ORDER BY `ordering` DESC
?>
Dus dat is prima. Alleen als ik op een artikel klik ipv een categorie (artikelen zijn submenus, categorien zijn top level menus) krijg ik die alias te zien. Stel een artikel alias is product-10 dan krijg ik dit te zien:
<?
SELECT con.title, con.alias, con.images, con.introtext FROM db_content con LEFT JOIN db_categories cat ON con.catid = cat.id AND cat.alias = 'product-10' WHERE con.state = 1 ORDER BY `ordering` DESC
?>
Terwijl hij de categorie moet pakken waar product-10 onder valt.
Mogelijk geeft de laatstgenoemde query meerdere resultaten terug, je doet immers een LEFT JOIN?
En als je de (alias van de) categorie wilt hebben dan zou je toch de cat.alias moeten pakken, en niet de con.alias? Je hebt dan wel een naamconflict zoals je in je oorspronkelijke vraagstuk stelt, dit kun je oplossen door het introduceren van aliassen.
SELECT con.title, con.alias AS content_alias, cat.alias AS category_alias, con.images, con.introtext ...
Dit is ook al voorgesteld door Ivo P, dus waar zit precies het probleem? Ik kan het vraagstuk ook niet helemaal volgen eerlijk gezegd. Wat dat betreft doe je je naam (inderdaad) eer aan :).
Orden je gedachten eens, kijk eens welke resultaten je allemaal terugkrijgt door deze af te drukken en bestudeer eens goed welke (relevante) data er precies in je database zit. Volgens mij kom je dan al een heel eind. Ik denk dat als je een voorbeeld geeft van de dataset(s) waarmee je werkt dat dan al heel snel duidelijk wordt waar het euvel zit.
eerste query zou dus moeten doen wat jij wilt.
tweede query moet dus een andere query krijgen?
"Ik denk dat als je een voorbeeld geeft van de dataset(s) waarmee je werkt dat dan al heel snel duidelijk wordt waar het euvel zit."
Dit is ook een optie inderdaad ;-)
De 1e is idd zoals de query zou moeten zijn.
Ik heb nu twee tables
db_categories (hierin zitten categorien)
db_content (hierin zitten artikelen, die bij een categorie horen)
Beide hebben een column genaamd alias.
Als ik dus op mijn contentpage kom, wil ik dat alle artikelen geladen worden die horen bij die categorie (maar alleen als er op een categorie is geklikt), in een sidemenu, dat wou ik dus doormiddel van die foreach doen.
Stel ik heb een menu item met een drop down. De toplevel menu naam is info (dat is een categorie) en de submenu naam is informatie (dat is een artikel) als ik dus klik op info, wil ik dat hij links (alsin links/rechts) 'informatie' laat zien. En als ik klik op informatie moet hij niks laten zien.