Goed.
Dus, de bedoeling is dat het script "suggesties" doet als ge 'n verkeerde link hebt.
Elk bericht heeft één tag in de url, en één titel. Als ge dus iets invoert, en een van deze 2 bestaat niet, moet hij een suggestie doen.

Ik heb het zo geschreven:

<?php if(isset($_GET['titel']) and isset($_GET['tag'])) {
	
	$tag = str_replace("-", "+", mysql_real_escape_string($_GET['tag']));
	$tag_met_spaties = urldecode($tag);
	
	$titel = str_replace("-", "+", mysql_real_escape_string($_GET['titel']));
	$titel_met_spaties = urldecode($titel);
		
		
	$db_resultaat = mysql_query("SELECT 
									n.titel, n.tag, n.datum, u.username, n.nieuws_id 
								FROM 
									nieuws AS n 
								JOIN 
									phpbb_users AS u 
								ON 
									n.gebruikers_id=u.user_id 
								WHERE 
									n.titel LIKE '%". $tag_met_spaties ."%' 
								OR 
									n.tag LIKE '%". $tag_met_spaties ."%' 
								OR 
									n.titel LIKE '%". $titel_met_spaties ."%' 
								OR 
									n.tag LIKE '%". $titel_met_spaties ."%'  
								GROUP BY n.nieuws_id");
		  while($nieuws = mysql_fetch_object($db_resultaat)) {
			  $link ='news.php?tag='. urlencode($nieuws->tag) .'&titel='. urlencode($nieuws->titel);
			  $url = str_replace("+", "-", mysql_real_escape_string($link));
			  echo '<a href="'. $url .'" title="'. $nieuws->titel .'" />'. $nieuws->titel .'</a><br />';
			} 
	} ?>


Nu heb ik het probleem dat hij dit resultaat geeft:

Of bedoelde je:
Kenny heerst
dedeed
Kenny heerst
Kenny heerst
dedeed


Dit terwijl er maar 2 berichten in de database staan;

Kenny heerst ( met tag kenny )
of
dedeed ( met tag kenny )

Iemand een idee hoe ik dit oplos ?
Kenny schreef op 05.08.2009 19:32
ik heb nu

<?php  mysql_query("SELECT DISTINCT titel, tag, nieuws_id
								FROM nieuws WHERE 
									((titel LIKE ('%". $tag_met_spaties ."%' OR '%". $titel_met_spaties ."%'))
										OR 
									(tag LIKE ('%". $tag_met_spaties ."%' OR '%". $titel_met_spaties ."%')))
								GROUP BY nieuws_id"); ?>


en het resultaat:

Kenny heerst ( Hier vind 'm kenny in de tag )
Kenny heerst ( hier vind 'm kenny in de titel )
dedeed (hier vind 'm kenny in de tag )


record in de db:

titel: kenny heerst, tag: kenny
titel: dedeed, tag: kenny




Deze query is nog steeds fout, je gebruikt geen AGGREGATE functie dus mag je ook geen GROUP BY gebruiken.

GROUP BY is gemaakt om de eigenschappen van een GROEP op te vragen.
Bijvoorbeeld:

SELECT avg(leeftijd) FROM personen is goed
SELECT avg(leeftijd), geslacht FROM personen is fout
Goed is
SELECT avg(leeftijd), geslacht FROM personen GROUP BY geslacht.
Deze sql zal per geslacht de gemiddelde leeftijd uitrekenen
SELECT id, avg(leeftijd) from personen GROUP BY id. Is goed maar onzinnig zal nu voor elke persoon de gemiddelde leeftijd uitrekenen, dus per persoon.

HAVING is nog een aanvulling.
Hier kan je restricties opgeven voor de berekende waarde.
SELECT avg(leeftijd), geslacht FROM personen GROUP BY geslacht HAVING avg(leeftijd) > 10.

Groeten
Klaasjan
Oke, met wat moet ik dit dan wel doen ?
DISTINCT is het woord wat je zoekt
Aj aj, het werkte dus wel zoals het moest..

 <?php if(isset($_GET['titel']) and isset($_GET['tag'])) {} ?>


en iets verder stond er;

 <?php if(isset($_GET['titel'])) {} ?>

met daarin weer een while lus,

vanaf dat ik daar
 <?php if(isset($_GET['titel']) and !isset($_GET['tag'])) {} ?>
van had gemaakt, werkte het wél zoals het moest..

Een nachtje slapen kan wonderen doen :)

Reageren