Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Szukanie po dwóch frazach.
Forum PHP.pl > Forum > Przedszkole
szczalpi

Witam
Mam problem z szukaniem. Kiedy wpiszę jedno słowo do wyszukiwania jest ok, ale już przy dwóch nie zwraca żadnych rekordów.
Proszę was o pomoc jak zmienić zapytanie, aby szukało po dwóch frazach.
Proszę o pomoc.
Pozdrawiam

  1. $sql="select * from users where miasto like '%$znajdz%' or nazwa_obiektu like '%$znajdz%' or rodzaj_obiektu like '%$znajdz%' or region like '%$znajdz%' or wojewodztwo like '$znajdz' limit ".(($page-1)*$ile).",".$ile;
Sephirus
Przede wszystkim musisz poczytać o tym jak się robi "wyszukiwarkę". Ogólnie do małych serwisów jeszcze LIKE przejdzie - przy większej ilości danych radzę zapoznać się z wyszukiwaniem pełnotekstowym (przynajmniej indeksy fulltext i match against na początek). W pokazanym przez Ciebie przykładzie szukasz po całej szukanej frazie co może być słuszne albo i nie w zależności od założenia.

Opcje są ogólnie 3:

1. Pełna fraza

Ktoś wpisze "Warszawa Kraków" - zostaną zwrócone te wpisy, które mają dokładnie taki zapis

2. Wszystkie słowa z frazy naraz ale traktowane oddzielnie:

Musisz podzielić frazę na wyrazy (po spacji - np. funckja explode), usunąc spację z końca i początku każdego słowa i utworzyć zapytanie typu:

  1. SELECT ... FROM ... WHERE pole LIKE '%slowo1%' AND pole LIKE '%slowo2%' AND pole LIKE ... -- itd


3. Przynajmniej jedno ze słów z frazy

Tak jak wyżej tylko zamiast AND dajesz OR:

  1. SELECT ... FROM ... WHERE pole LIKE '%slowo1%' OR pole LIKE '%slowo2%' OR pole LIKE ... -- itd


Ogólnie to wszystko. W przypadku jednak gdy szukasz po kilku polach musisz taką operację wykonać dla każdego - czyli dynamicznie tworzyć zapytanka.
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.