Ik heb een query waar ik de alias moet ophalen.

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.

Hoe los ik dit op?

Thx
<?php
$page = "SELECT con.title, con.alias as alias1, con.images, con.introtext
?>

"ORDER BY `ordering` DESC";"
klopt dit wel?
Ja dat klopt, is gewoon een tabel met cijfers dus dit klopt gewoon.

De code die je hebt gepost werkt niet helaas.
Snelle Jaap op 02/02/2016 12:49:39

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

--> con.alias roep je ook aan in de query. roep dan ook cat.alias aan.



Ja dat klopt , is gewoon een tabel met cijfers dus dit klopt gewoon.

moet dit niet con.ordering zijn of cat.ordering?


<?php
$page = "SELECT con.title,
con.alias conalias,
con.images,
con.introtext,
cat.alias catalias
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";
?>

Toevoeging op 02/02/2016 14:22:26:

als ordering in beide tabellen voorkomt, zul je ook bij het noemen van die kolom de tabel erbij moeten zetten.

Dat er geen foutmelding is, geeft aan dat dat dus niet het geval is.

Wel vallen sommige typen database erover dat je sorteert op een kolom die niet in het SELECT-deel staat.
Mysql echter niet.
Ivo P op 02/02/2016 14:20:40

<?php
$page = "SELECT con.title,
con.alias conalias,
con.images,
con.introtext,
cat.alias catalias
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";
?>

Toevoeging op 02/02/2016 14:22:26:

als ordering in beide tabellen voorkomt, zul je ook bij het noemen van die kolom de tabel erbij moeten zetten.

Dat er geen foutmelding is, geeft aan dat dat dus niet het geval is.

Wel vallen sommige typen database erover dat je sorteert op een kolom die niet in het SELECT-deel staat.
Mysql echter niet.


Oke, en hoe zet ik het resultaat netjes in een foreachje? Ik heb al het een en ander geprobeerd, zonder resultaat.
om te beginnen, is het misschien wel handig om $_GET['alias'] door een escape functie te halen.

Je haalt nu iets uit de url, zonder maar te controleren of er gevaarlijke tekens in staan.
http://wiki.pfz.nl/sqlinjectie

daarna kun je door de resultaten loopen.
of foreach daarin handig is? ik zou eerder een while of desnoods een if gebruiken
Ik bedoel meer hoe ik alle resultaten netjes weergeef op de site. Escape is zo toegevoegd.
je doet je naam wel eer aan ;-)

"Ik heb al het een en ander geprobeerd, zonder resultaat"

Wat heb je al geprobeerd want een foreach opzetten lijkt me niet zo moeilijk...?
echo je query ($page) is met de $_GET erin.

Reageren