Hoi,

Ik ben bezig met een site voor een klant, maar nu blijf ik na alles met een kleine fout zitten die ik niet opgelost krijg. Het lijkt een zo voor de hand liggende oplossing maar ik krijg em niet werkend..

Dit is de code:
<?php
$query = "SELECT id, titel, inhoud, datum, categorie FROM teksten WHERE titel LIKE '%$zoekwoord%' AND (categorie='home' OR categorie='nieuws' OR categorie='adres' OR categorie='galvanischeprocessen' OR categorie='etsprocessen' OR categorie='overigediensten' OR categorie='kwaliteit' OR categorie='contact' OR categorie='offerte' OR categorie='zoekuitleg')";
?>

Hij zoekt naar het woord waar iemand op zoekt. De reden dat ik alle categorieën apart laat zien is omdat hij niet in sommige mag zoeken, en dit was de beste manier in mijn ogen. Dit doet stuk code doet het perfect. Maar nu wil ik ook in 'inhoud' zoeken en dus niet alleen in titel. Ik dacht dat het dan zo werd (meerdere dingen geprobeerd)
<?php
WHERE (titel LIKE '%$zoekwoord%', inhoud LIKE '%zoekwoord%')
?>

<?php
WHERE (titel LIKE '%$zoekwoord%' OR inhoud LIKE '%zoekwoord%')
?>

<?php
WHERE titel LIKE '%$zoekwoord%' OR inhoud LIKE '%zoekwoord%'
?>

<?php
WHERE titel, inhoud LIKE '%$zoekwoord%'
?>

Maar geen van alle werken, of misschien wel, maar hij doet daarna de andere condities niet meer, dus die AND zoek in die categorie en die en die etc.

Hou $vars buiten quotes.
Bouw een nette foutafhandeling in en je ziet precies wat is fout gaat.
Zoals ik al zei, er gaat niks fout. Ik heb een nette foutafhandeling, maar daar gaat het niet om dus dat hoef ik ook niet te posten.

Ik wil gewoon weten waarom mijn querie niet meer werkt als ik een extra where ding toe wil voegen. Dat is alles, de rest werkt al.
Bovenstaand lijken de 1e en de 4e in orde.
Je kan maar 1x 'WHERE' in je query proppen. Als je meer conditions wil, dan moet je "AND" of "OR" gebruiken, of een andere operator.
@Gerben: kijk eerst even naar mijn 4 opties die ik heb geprobeerd, dan zie je dat ik dat allang geprobeerd heb.

@SanThe: Welke is de netste manier? Mij lijkt de eerste, dus daar werk ik nu even mee.

Maar dan weet ik niet hoe ik al die categorieën moet ingeven zegmaar, want dat moet wel gebeuren, en op die manieren die ik het heb geprobeerd lukt het me niet. Ik zal nog even kijken wat jij zei met die vars buiten haakjes, maar dat lijkt me raar dat daar de fout zit :)
ik zou evt kiezen om extra kolom toe te voegen met FindMe ofzo en dan met tiny_int met 1 en 0 te regelen waar die wel en welke hij niet mag zoeken...


<?php
$query = "SELECT 
		* 
	  FROM 
		tabelvanjou 
	  WHERE 
		title 
	  LIKE '%" . $zoekwoord . "%' 
	  AND categorie = 1";
?>
Je kunt beginnen met IN gebruiken voor je categorieën:


WHERE categorie IN('categorie 1', 'categorie 2')


Dat is wat netter dan losse OR's gebruiken.
@ Wim

Handig is om * af te leren. Daarmee haal je vaak onnodige data op die je niet gebruikt.

@ TS

Vergeet niet je query's te beveiligen.
Bedankt voor de reacties.

Ik heb hem nu werkend, op de manier dat Wim het zei:
<?php
$query = "SELECT * FROM teksten WHERE (titel LIKE '%$zoekwoord%' OR inhoud LIKE '%$zoekwoord%') AND zoekindex='1'";
?>

De andere manieren werkten niet, ik denk omdat ik teveel condities mee gaf of iets dergelijks.

Bedankt voor de hulp!
mocht je ooit weer s een probleem met een query hebben, voeg dan een

or die(mysql_error());

achter je query aan, dan zie je de foutmelding van mysql zelf ;)

Reageren