login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zoekfunctie

Offline Serellyn - 26/03/2009 13:33 (laatste wijziging 26/03/2009 13:33)
Avatar van SerellynNieuw lid Beste mensen, ik ben een totale noob die is begonnen met PHP. Nou heb ik een zoekfunctie gebouwd die werkt, maar er is nog één probleem.

Stel je voor, in de database heb je iets met de titel "Call me", als je dan zoek op 'call' of 'me' of 'call me' pakt hij het gewoon. Nu typ ik 'me call', maar dan pakt hij niets.

Het lijkt me logisch dat de worden waarop gezocht wordt, gesplit moet worden. De vraag is alleen, hoe moet dat. Dit snap ik nog niet, kan iemand mij helpen?


Hier is de SQL query waarmee ik in de database zoek
  1. $sql = "SELECT lyrics.lyricID, CONCAT(artist.artistname,' ',lyrics.songname) AS samengevoegd FROM lyrics INNER JOIN artist ON lyrics.artistID = artist.artistID WHERE CONCAT(artist.artistname,' ',lyrics.songname) LIKE '%".strip_tags($search)."%'; ";


$search is dus waarop ik zoek, maar hoe kan ik $search splitten en zoeken op elk los woord. Hoe verwerk je dat in de query?

Alvast bedankt  

4 antwoorden

Gesponsorde links
Offline Abbas - 26/03/2009 13:40 (laatste wijziging 26/03/2009 13:41)
Avatar van Abbas Gouden medaille

Crew .NET
Splitten doe je met explode(), voorbeeld:

  1. $string = "ik ben een zin";
  2. $stukjes = explode(" ", $string);
  3. //stukjes is een array
  4. //$stukjes[0] is 'ik'
  5. //$stukjes[1] is 'ben'
  6. //...

Voor je query dénk ik dat je de SQL-operator 'IN' moet gebruiken, voorbeeld:

  1. SELECT kolom FROM tabel WHERE andereKolom IN ('waarde', 'waarde2')
Offline Serellyn - 26/03/2009 13:42
Avatar van Serellyn Nieuw lid Dat met de explode snap ik nu, dat hij er dan een array van maakt van de string.

Maar hoe ik dit nu moet verwerken in mijn zoekquery snap ik nog niet.
Offline Richard - 26/03/2009 15:42 (laatste wijziging 27/03/2009 10:17)
Avatar van Richard Crew algemeen
  1. <?php
  2. $zoek = 'ik zoek hierop';
  3. $delen = array();
  4. if(preg_match_all('{\w+}', $zoek, $delen)) {
  5. $delen = "andereKolom LIKE '%" . implode("%' OR andereKolom LIKE '%'", $delen[0]) . "%'";
  6. if($delen) {
  7. $query = '
  8. SELECT kolom
  9. FROM tabel
  10. WHERE (' . $delen . ')';
  11. // zoeken!
  12. } else {
  13. // geen zoekwoorden gevonden
  14. } else {
  15. // ook niks gevonden
  16. }


Zoiets gebruik ik zelf vaak. :-)
Offline marten - 27/03/2009 10:23
Avatar van marten Beheerder Een uitbreiding die ik zelf gelijk meeneem in dit soort kwesties is het gebruik van komma gescheiden zoekacties. 

Maar dat 'huiswerk', leuk om zelfs eens uit te zoeken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.413s