Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyszukiwarka, ... czy da sie prosciej?
darth_sidious
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 19.12.2005

Ostrzeżenie: (0%)
-----


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


--------------------
Fotografia ślubna Tomaszów Mazowiecki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
varez
post
Post #3





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował varez 28.08.2009, 18:34:22
Go to the top of the page
+Quote Post
darth_sidious
post
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 19.12.2005

Ostrzeżenie: (0%)
-----


Dzieki wielki varez - Twoj sposob zadzialal i dal mi rowniez wskazowke na przyszlosc jak takie problemy mozna rozwiazywac...

Dziekuje wszystkim

Pozdrawiam
Darth


--------------------
Fotografia ślubna Tomaszów Mazowiecki
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
varez
post
Post #6





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


w sumie LIKE to dobry pomysl, a z tym OR to wtopa tongue.gif zero myslenia, juz od wtorku chyba tak mam..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:38