Hallo iedereen
(sorry voor de mensen die een leeg topic zien op het begin. Nadeel van een touchpad)
Ik ben bezig met een forum. Daarvoor heb ik twee tabellen aan gemaakt. Een voor de reacties en een voor de Topics.
Voor de topics
CREATE TABLE `forum_topics` (
`id` int(11) NOT NULL auto_increment,
`schrijver` varchar(255) collate latin1_general_ci NOT NULL,
`onderwerp` varchar(255) collate latin1_general_ci NOT NULL,
`categorie` varchar(255) collate latin1_general_ci NOT NULL,
`bericht` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=200 ;
voor de reacties
CREATE TABLE `forum_reacties` (
`id` int(11) NOT NULL auto_increment,
`topic_key` int(11) NOT NULL default '0',
`schrijver` varchar(255) collate latin1_general_ci NOT NULL,
`onderwerp` varchar(255) collate latin1_general_ci NOT NULL,
`categorie` varchar(255) collate latin1_general_ci NOT NULL,
`bericht` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
Nou zie ik de reacties uit het tabel forum_reacties maar niet het start bericht uit de tabel forum_topics. Wel heb ik uit deze een onderwerp kunnen halen.
De query
$query3 = mysql_query
("
SELECT forum_topics.id, forum_topics.schrijver, forum_topics.onderwerp, forum_topics.categorie, forum_topics.bericht,
forum_reacties.id, forum_reacties.topic_key, forum_reacties.schrijver, forum_reacties.categorie, forum_reacties.bericht
FROM forum_topics
LEFT JOIN forum_reacties
ON forum_topics.id = forum_reacties.topic_key
WHERE forum_topics.id = '". $topicid ."'
AND forum_reacties.topic_key = '". $topicid ."'
") or die(mysql_error());
Ik hoop dat ik duidelijk genoeg ben.
Bij voorbaat dank,
vlerknozem
Oke dat met die errors is gedaan. Nu nog het echte probleem. Natuurlijk sta ik niet stil, en probeer ik ook zelf te proberen, maar ik kom er echt even niet uit.
Oke, maar dat is niet het probleem. Dat array heeft met de conrole structuur te maken of alles is ingevuld, en of alles de juiste lengte heeft. Dat staat er dus los van.
Wat ik wil is dat hij gewoon die berichten weergeeft. Wanneer ik de WHERE clause weghaal dan laat hij alles zien. Ook berichten die er niet thuishoren, wat natuurlijk logisch is. Dus het probleem zit denk ik in de WHERE clause.
Dus ik dacht, ik haal het volgende weg:
<?php
AND
forum_reacties.topic_key = '". $topicid ."'
?>
Maar dat lost het ook niet op. Ook als ik ipv de variabele $topicid direct deboel met $_GET ophaal, werkt het ook niet.
$query3=mysql_query("
SELECT
forum_topics.id,
forum_topics.schrijver,
forum_topics.onderwerp,
forum_topics.categorie,
forum_topics.bericht AS topicbericht,
forum_reacties.id,
forum_reacties.topic_key,
forum_reacties.schrijver,
forum_reacties.categorie,
forum_reacties.bericht AS forumbericht
FROM
forum_topics
INNER JOIN
forum_reacties
ON
forum_topics.id = forum_reacties.topic_key
WHERE
forum_topics.id = ". $topicid ."
AND
forum_reacties.topic_key = ". $topicid ."
ORDER BY
forum_reacties.id ASC
")
or die(mysql_error());
?>
Zoals jij het doet in je voorbeeld ( '".$topicid."') kan het zijn dat MySQL zoekt naar een string met de waarde 1, omdat het veld id normaliter een nummeriek veld is (integer) moeten er geen enkele quotes om de waarde heen. Dat kan al zijn waar het fout gaat.