Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zaawansowana wyszukiwarka
Apo
post 19.05.2006, 13:51:28
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam
Piszę właśnie bardziej rozbudowaną wyszukiwarkę i mam problem. Mam np pola w formularzu:
- `cena od` i `cena do`
takich pól jest więcej gdzie jest `od `do`.
Chciałem się dowiedzieć jak będzie najlepiej to zrobić. Mam klasę search która w zależności od wybranej (switch) oferty (produktu) wywołuje odpowiedni obiekt odpowiedzialny za dany produkt i w tej klasie bedzie metoda odpowiedzialna za wyszukiwanie.

Niewiem jak wydaje budować zapytania. Bo proces sprawdzania:
  1. <?php
  2.  
  3. if(isset($cena_od) && !isset($cena_do))
  4. {
  5. $zapytanie .= 'WHERE cena<'.$cena_od;
  6. }
  7.  
  8. if(isset($cena_od) && isset($cena_do))
  9. {
  10. $zapytanie .= 'WHERE cena BETWEEN '.$cena_od.' AND '.$cena_do;
  11. }
  12.  
  13. ?>


Wydaje mi się troche żmudny i raczej nieodpowiedzni do dużej ilości opcji.

Pozdrawiam
Go to the top of the page
+Quote Post
E-d
post 19.05.2006, 13:55:24
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

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


Może użyj poprostu funkcj switch questionmark.gif


--------------------
Go to the top of the page
+Quote Post
Apo
post 19.05.2006, 14:00:11
Post #3





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Cytat(E-d @ 2006-05-19 12:55:24)
Może użyj poprostu funkcj switch questionmark.gif

troche ten switch by duży musiał być :/
Podam przykłąd wyglądu tablicy $_POST:
Kod
Array
(
[cena_od] => 10000
[cena_do] => 20000
[powierzchnia_od] => 250
[powierzchnia_do] => 300
[pokoje_od] => 5
[pokoje_do] => 10
)
Go to the top of the page
+Quote Post
krzyszbi
post 19.05.2006, 14:12:06
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 13
Dołączył: 15.09.2005

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


witam
milaem podobny problem ale to da sie tak rozwiązac
  1. <?php
  2.  
  3. $wh = array();
  4. if (!empty($_POST['cena_od']))
  5.  $wh[] = 'cena >= '.$_POST['cena_od'];
  6. if (!empty($_POST['cena_do']))
  7.  $wh[] = 'cena <= '.$_POST['cena_do'];
  8. //.....i tak na kazde pola czyli nie 64 a 8 razy :)
  9. if (!empty($wh))
  10.  $where = 'where '.implode(' and ', $wh);
  11. else
  12.  $where = '';
  13.  
  14. $sql = 'select ..... '.$where;
  15.  
  16. ?>

dziala i pieknie smiga a rozbudowa jest prosta jak budowa cema biggrin.gif


--------------------
Everything should be made as simple as possible, but not simpler. - A.Eainstein
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 Wersja Lo-Fi Aktualny czas: 12.07.2025 - 22:46