Toon posts:

[php+mysql] search

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb dus een zoek functie op een website waarbij mensen meerdere velden kunnen invullen als zoekcriteria (bla1,bla2,bla3,bla4) en waarbij ie de resultaten dan uit een db haalt. Elk zoekveld komt overeen met een kolom uit de mysql db (bla1 is dan dbbla1 in mysql enz ;).

De code die ik nu heb om te zoeken is dit:
PHP:
1
2
3
<?
$zoek = "SELECT * FROM db WHERE dbbla1 = '$bla1' OR dbbla2 = '$bla2' OR dbbla3 = '$bla3' OR dbbla4 = '$bla4'";
?>

Maar ik heb een paar problemen hiermee.
1) Als iemand bij bla1 '2' invult en bij bla3 'blaat' invult vind ie nog steeds alle waardes met dbbla1 = '2' EN dbbla3 = 'blaat'. En ik wil dat ie dan juist de waardes eruit pikt waarbij alle 2 de db waardes overeenkomen met de zoekcriteria en dat ie zich van de andere 2 lege velden niks aantrekt(ik had dan zeker geen OR moeten gebruiken maar nix anders werkte :(.
2) Als iemand bij bla1 '2' invult laat ie ook waardes van 12 , 32 e.d. zien :?

Ik hoop dat m'n probleem een beetje duidelijk is :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Een AND gebruiken en uw query (uw WHERE-clause dan) dynamisch opbouwen.

if veld1 <> '' then
SQL +:= "AND table.field1 = veld1
....

https://fgheysels.github.io/


Verwijderd

Misschien ook wel handig voor je (als je dat nog niet weet):

om strings met elkaar te vergelijken kan je ook nog LIKE gebruiken, waarmee je een soort primitieve regular expression kan opgeven, net zoals je onder MS-DOS met * en ? werkt, behalve dat deze dan nu % en _ zijn.

Voorbeeld:
code:
1
SELECT T.text FROM Table AS T WHERE T.text LIKE "%blaat%"

Waarbij T.text de string "blaat" bevat.

Echte regular expressions worden soms ook ondersteund.