Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [MySQL]wyszukiwarka raz jeszcze :(
Forum PHP.pl > Forum > Przedszkole
nu_moon
Witam wszystkich!

Przeszukalem forum ale niestety nie znalazlem nic podobnego.
Od razu moze pzrejde do pytania. Mam stronke, baze danych i w niej kilka pol. Baza sie nieco rozrosla i koniecznym stalo sie dobudowanie wyszukiwarki i tu pojawia sie problem. Pierwszym rozwiazaniem bylo wyszukanie w polach stringa wpisanego w formularzu czyli np. szukamy frazy 'Jan Kowalski' szukamy WHERE description LIKE '%$string%'.

Niby ok, z tym ze jesli osoba ta wpisana jest nie jako 'Jan Kowalski' a 'Kowalski Jan' juz nie otrzymamy wyniku.

Tu znow rozwiazaniem problemu bylo prasowanie stringa i explodowanie go w miejscach spacji i wyszukanie:

WHERE description LIKE '%$string1' AND description LIKE '%$string2'

Pojawil sie oto kolejny problem, bo co jesli szukamy frazy 'Jan Maria Rokita' ? Wystapia 3 zmienne stad pytanie

Jak (przypuszczalnie petla) stworzyc takie zapytanie ? Myslalem o stwozreniu stringa z zapytaniem SQL i w petli 'doklejac warunki AND ...LIKE - niestety jakos mi to nie wychodzi.

Moglby ktos pokazac jakis przykladowy kod takiej wyszukiwarki ? Ew. moze jest inny sposob ? sad.gif
nu_moon
Cytat
Sprawdzaj za pomoca preg_match, czy w zapytaniu nie ma cudzyslowow.
Jesli sa, to przerzuc fraze z cudzyslowow jako string do zapytania.


Tego akurat chyba nie do konca moge uzyc, bo wchodzi w gre x parametrow w dowolnych kolejnosciach. bo zamiast explodowac 'po spacjach' moglbym je zastapic znakiem % i szukac '%Jan%Maria%Rokita%' ale (jesli sie nie myle fraza 'Rokita Maria Jan' nie zostanie znaleziona ...

A moze zle to zrozumialem ? blink.gif
Martin24
Proponuję oddzielić imię (imiona) i nazwisko. Np. nie pole osoba: Jan Kowalski, ale imię: Jan, imie 2: Maria, nazwisko: Rokita.
nu_moon
ok rozwiazalem temat samodzilenie - moze komus sie przyda


  1. <?php
  2. $query = 'SELECT * FROM customers WHERE '; 
  3. $bits = explode(" ", $_GET['search']);
  4.  
  5. foreach ($bits as $klucz => $wartosc)
  6. {
  7. if($klucz==0){$query = $query.'client_name LIKE '%'.$wartosc.'%' ';}
  8. else{$query = $query.'AND client_name LIKE '%'.$wartosc.'%' ';}
  9. }
  10.  
  11. $query = $query.'ORDER BY client_name';
  12. ?>


Dzieki za dobre checi i pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.