Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie w bazie na podstawie tekstu
Forum PHP.pl > Forum > PHP
MatKus
Witam

Czy ktoś zna może jakąś klasę/funkcję, która by stworzyła mi fragment zapytania do przeszukiwania bazy?
Przykładowo:
Użytkownik wprowadza tekst:
Jan Kowalski|nowak -warszawa

i na podstawie tego tekstu skrypt by to podzielił na kawałki i wygenerował mi odpowiednie zapytanie, np:
  1. $podzapytanie=funkcja ($tekst, 'osoba');

zwróci np coś takiego

  1. osoba LIKE "%Jan%" AND (osoba LIKE "%Kowalski%" OR osoba LIKE "%nowak%") AND osoba NOT LIKE "%warszawa%"


lub coś w tym stylu.

Oczywiście to można napisać samodzielnie, ale jak by do tego dodać jeszcze cudzysłowy, gwiazdki, nawiasy... to trochę zabawy będzie, a, jak na programistę przystało, jestem leniwy, a coś nie mogę czegoś takiego znaleść w googlachj wink.gif
eloandzej
Możesz napisać funkcję do której będziesz przekierowywał cały tekst a w niej dzielił go na części za pomocą explode() następnie według wartości wykonywał odpowiednie zapytanie SELECT na bazie danych np.:
Tekst : Jan Kowalski|Nowak -Warszawa (- oznacza tutaj nie brać pod uwagę?)

Podzielić to explode:
  1. $MiastoE = explode(" -", $Text);
  2. $Miast = $MiastoE[1];


Itd. w przypadku imienia i nazwiska.
MatKus
Tak, wiem, poekspolodować po slacji, potem pod-fragmenty po |, uwzględnić minus, ale potem jednak anulować explode, jeśli coś jest od cudzysłowa (np. "jan kowalski" to nie to samo, co "kowalski jan", ale to samo, co "jan" "kowalski") itp.

Wiem, że to można napisać i nie jest to nic trudnego, ale żeby to solidnie zrobić (uwzględnić cudzysłowy, minusy, AND/OR, nawiasy, szukanie w kilku kolumnach and/or), to przynajmniej kilka dni trzeba poświęcić, więc może ktoś zna na to gotowca.
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.