Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
darth_sidious
Witajcie

Mam na stronie wyszukiwarke, ktora pozwala na wyszukiwanie wg 5 kategorii (wojewodztwo, miasto, kategoria, podkategoria, nazwa firmy). I teraz w zaleznosci od uzupelnionych pol nastepuje zapytanie do bazy i odnalezienie pasujacych rekordow.

Mozliwosci jak widac jest sporo, a wiec mozna wyszukac po dowolnym miescie, ale z wybranym wojew itd - opcji wyszukiwania jest sporo. Jedynie co mi przychodzi w tej chwili do glowy, do rozpisanie wszystkiego w dosc sporej ilosci if'ow, gdzie w zaleznosci od uzupelnionych pol dostosuje nam wartosci do wyszukania...

Czy istnieje jakies inne rozwiazanie, czy tez wszystkie mozliwe kombinacje uzupelnionych/pustych pol musze umiescic jednak w if'ach?

P.S. Pytanie moze dosc trywialne, ale zadne inne rozwiazanie nie przychodzi mi teraz do glowy...

Pozdrawia
Darth
blooregard
A nie da się tego zrobić jednym zapytaniem, gdzie po prostu warunki byłyby sprawdzane OR-em, w zależności od tego, które z pól (czyli jedno, dwa, trzy, cztery lub wszystkie) wyszukiwarki zostanie wypełnione?

I nie bardzo rozumiem to:
Cytat
Mozliwosci jak widac jest sporo, a wiec mozna wyszukac po dowolnym miescie, ale z wybranym wojew itd

To znaczy, mogę wybrać np. Wrocław i równocześnie zaznaczyć województwo np. zachodnipomorskie?
varez
raczej wpisac mozna dowolne..
i wtedy wpisujesz wies/miasto ktore wystepuje kilka razy w polsce, ale wybierasz tez wojewodztwo..
przyklad z wroclawiem po prostu nic nie znajdzie..


wystarczy kilka ifów winksmiley.jpg
cos takiego np:
  1. // sprawdzasz czy chociaz jedno z pol uzupelnione
  2. $zapytanie = "select * from tabela where ";
  3. if ($wojewodztwo) { $zapytanie.=" wojewodztwo = '$wojewodztwo' OR "; }
  4. if ($miasto) { $zapytanie.=" miasto = '$miasto' OR "; }
  5. if ($kategoria) { $zapytanie.=" kategoria = '$kategoria' OR "; }
  6. $zapytanie = substr($zapytanie, 0, -3);
  7.  
  8. // i teraz wykonujesz


Mozna inaczej, to najprostsze smile.gif
darth_sidious
Dzieki wielki varez - Twoj sposob zadzialal i dal mi rowniez wskazowke na przyszlosc jak takie problemy mozna rozwiazywac...

Dziekuje wszystkim

Pozdrawiam
Darth
thek
varez...prawie dobrze, ale te OR Ci rozkładają sens zapytania. Powinno być AND by uściślać. Jak sobie wyobrażasz szukanie czegoś co może wykluczać się wzajemnie? Przykład?
  1. SELECT * tabela WHERE wojewodztwo = 'Małopolska' OR miasto = 'Koszalin'
Kolejne warunki muszą zawężać zbiór danych, a nie go poszerzać smile.gif Inna sprawa to taka, że miasto powinno być wyszukiwane po nazwie, czyli nie = ale LIKE użyć lub jeszcze lepiej założyć FULLTEXT na interesujące kolumny i jazda.
varez
w sumie LIKE to dobry pomysl, a z tym OR to wtopa tongue.gif zero myslenia, juz od wtorku chyba tak mam..
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.