Ik heb een tabel die bestaat uit onderwerpen. Als ik bijvoorbeeld het woord 'leiderschap' wil opvragen dan geeft hij alle woorden waar 'leiderschap' in voor komt weer. Ik heb bijvoorbeeld 'persoonlijk-leiderschap', 'autocratisch-leiderschap' en 'democratisch-leiderschap' in de tabel staan. En die geeft hij dan ook weer.
Hoe kan ik het oplossen als ik voor onderwerp 'leiderschap' kies dat ik alleen dat overzicht krijgt te zien en als ik 'persoonlijk-leiderschap' kies dat ik alleen daar een overzicht van krijg.


<?php

$sql = "SELECT * FROM items_onderwerpen JOIN onderwerpen.onderwerp_id = items_onderwerpen.onderwerp_id  WHERE onderwerp = '$onderwerp'";
$result = $conn->query($sql);

?>
Wat je zegt klopt niet.

Als je naar een uniek woord zoekt, worden niet alle samenstellingen gevonden.

Als je ook samenstellingen krijgt, heb je waarschijnlijk LIKE gebruikt.

Voorbeeld. Een recepten database met lappen tekst.

Als ik dit doe komt er niets uit :

SELECT * FROM `pix` WHERE `recipetxt` = 'banana bread';


Als ik dit doe komt het recept wel in beeld :

SELECT * FROM `pix` WHERE `recipetxt` LIKE '%banana bread%';


Als ik een tabel heb met unieke woorden, bijvoorbeeld ‘banana bread’, en ik zoek daar naar komt dat eruit. Als ik de losse woorden ‘banana’ en ‘bread’ in de tabel heb, komt die combi er niet uit tenzij ik een query maak die beide woorden zoekt.

De mogelijkheden zijn eindeloos.
Als je inderdaad LIKE gebruikt, en je definieert een "woord" als iets wat omringd is door spaties (of begin en/of einde van zin), dan kun je ook:

WHERE (onderwerp = '$onderwerp' OR onderwerp LIKE '$onderwerp %' OR onderwerp LIKE '% $onderwerp %' OR onderwerp LIKE '% $onderwerp')

(volledig woord OR woord aan begin van zin OR woord midden in zin OR woord aan einde van zin)

Reageren