Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zaawansowana wyszukiwarka
Forum PHP.pl > Forum > PHP
Apo
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
E-d
Może użyj poprostu funkcj switch questionmark.gif
Apo
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
)
krzyszbi
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
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.