Ik heb het volgende probleem: Ik heb een database opdrachten die de rijen naam, beschrijving, rubriek, rubriek2 hebben. Bij de uitgebreid zoeken functie heb ik nu deze php/sql code:

if($_GET['pht'] == 'on') {
	$afb = 'AND opdrachten.afbeeldingurl1!="" ';
} else {
	$afb = '';
}

$rubr = !isset($_GET['rubriek']) ? '': 'AND opdrachten.rubriek="'.anti_sql($_GET['rubriek']).'" AND opdrachten.rubriek2="'.anti_sql($_GET['rubriek']).'" ';

$results = mysql_query('SELECT * FROM `opdrachten` WHERE MATCH (naam, beschrijving) AGAINST ("'.anti_sql($_GET['q']).'") '.$afb.' '.$rubr.');


Het probleem is dat het niet lukt om een rij te selecteren waar rubriek Of rubriek2 gelijk zijn aan de ingevulde rubriek..

Als er nog vragen zijn hoor ik het wel.

Tim
MATCH is voor full text search je kunt gewoon

SELECT veld FROM table WHERE veld=veld2;
Die match is ook nodig voor mijn search (het is een searchpagina)

Edit: Om het wat duidelijker te maken, ik bedoel dus dat ik een search maak, en hij mag alleen rijen laten zien waarin de opgegeven rubriek in voor komt
BUMP

Sorry voor de bump, maar het lukt me maar niet, iemand misschien een oplossing?
Echo je query eens nadat je de variabelen er in hebt gezet. Overigens, wat is je fout? Gebruik een goede manier van foutafhandeling!
Wat ik krijg als ik de sql echo is dit:
SELECT opdrachten.id, opdrachten.naam, opdrachten.afbeeldingurl1, opdrachten.beschrijving, opdrachtgever.postcode, opdrachtgever.woonplaats, opdrachtgever.land FROM `opdrachten` JOIN `opdrachtgever` ON opdrachten.email=opdrachtgever.email WHERE MATCH (naam, beschrijving) AGAINST ("dakraam") AND opdrachten.rubriek="rubriek1" OR opdrachten.rubriek2="rubriek1" ORDER BY opdrachten.id DESC


Mijn probleem is niet dat er een fout in zit, maar dat ik niet kan zoeken in rubriek en rubriek2. Hij moet daar allebij in zoeken, alleen daar gaat het fout.

EDIT: Opgelost ;) ik weet niet hoe ik heb het gedaan, maar de bovenstaande code is gewoon ineens goed :S
Plaats 'm nu eens?
Wat moet ik plaatsen?

B.t.w: hij werkt niet want hij doet niets met de zoekresultaten..
Glazen bol is ter reparatie naar India gebracht, sorry ;-)
Das niet zo fijn :)
De query die hij parst is als volgd:

SELECT opdrachten.id, opdrachten.naam, opdrachten.afbeeldingurl1, opdrachten.beschrijving, opdrachtgever.postcode, opdrachtgever.woonplaats, opdrachtgever.land FROM `opdrachten` JOIN `opdrachtgever` ON opdrachten.email=opdrachtgever.email WHERE MATCH (naam, beschrijving) AGAINST ("dakraam") AND opdrachten.rubriek="rubriek1" OR opdrachten.rubriek2="rubriek1" ORDER BY opdrachten.id ASC


De query die hij werkelijk uitvoert is zo:

SELECT opdrachten.id, opdrachten.naam, opdrachten.afbeeldingurl1, opdrachten.beschrijving, opdrachtgever.postcode, opdrachtgever.woonplaats, opdrachtgever.land
FROM `opdrachten`
JOIN `opdrachtgever` ON opdrachten.email = opdrachtgever.email
WHERE MATCH (
naam, beschrijving
)
AGAINST (
"dakraam"
)


Ik snap dat hij
AND opdrachten.rubriek="rubriek1" OR opdrachten.rubriek2="rubriek1" ORDER BY opdrachten.id ASC

Afkapt omdat het niet klopt, maar hoe zorg ik nou dat ik En kan zoeken, En kan kijken of rubriek1 in het veld rubriek of rubriek2 zit?
Moet je onderste query stukje niet zo?

AND ( opdrachten.rubriek='rubriek1' 
OR opdrachten.rubriek2='rubriek1' ) 
ORDER BY opdrachten.id ASC


Voor de zekerheid ook maar even haakjes toegevoegd.

Op de kolommen "naam en "beschrijving" heb je dus een fulltext sleutel ? Er van uitgaande dat je MySQL gebruikt.

Edit:
Volgens mij hoef je voor deze query ook niet gebruik te maken van fulltext.

Reageren