Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Wyszukiwanie w tabeli?
Forum PHP.pl > Forum > PHP > Frameworki
MS Hornet
Muszę zrobić wyszukiwanie z wieloma kryteriami, o co chodzi smile.gif

Mam formularz z polami:
IMIE, NAZWISKO, ULICA, Nr DOMU, Nr LOKALU, MIEJSCOWOSC

użytkownik może wypełnić dowolną ilość pól, a ja musze to połączyć ANDem i wyszukać w bazie (dla ułatwienie w jednej tabeli).

Może ktoś pomoże i podpowie jak to zrobić i ulokować w modeli i controlerze?

Pozdrawiam
Hornet
MS Hornet
Zend_db_select nie rozwiązuje mojego problemu sad.gif, wykombinowałem coś takiego

  1. $model = new Podmiot();
  2. $select = $model
  3. ->select()
  4. -> where('imie = ?', $imie)
  5. -> where('nazwisko = ?', $nazwisko)
  6. -> ......................
  7. -> ......................;
  8.  
  9. $this->view->models = $model->fetchAll($select);


Wszystko jest fajnie jak użytkownik wypełni każde pole, ale jeśli zechce wyszukać wszystkich o imieniu ANDRZEJ to już jest do bani bo druga zmienna jest pusta sad.gif
-=Peter=-
A wiesz co to wyrażenie warunkowe?

http://pl2.php.net/manual/pl/control-structures.if.php
MS Hornet
tak wiem, ale nie wiem jak je wpleść w ZEND_DB_SELECT sad.gif
-=Peter=-
...

Masz 2 zmienne, chcesz coś zrobić w zależności od tego czy mają one jakąś oczekiwaną wartość, czy nie.
  1. $zmienna1 = 'mam oczekiwaną wartość';
  2. $zmienna2 = 'a ja nie mam oczekiwanej wartości';
  3.  
  4. if($zmienna1 == 'mam oczekiwaną wartość'){
  5. //rób coś ze zmienną $zmienna1
  6. }
  7.  
  8. if($zmienna2 == 'mam oczekiwaną wartość'){
  9. //rób coś ze zmienną $zmienna2
  10. //nie wykona się, gdyż nie ma oczekiwanej wartości
  11. }
  12.  


Przykład ten wykorzystaj w swoim przypadku...
phpion
Cytat(MS Hornet @ 9.12.2009, 13:23:30 ) *
Zend_db_select nie rozwiązuje mojego problemu sad.gif

Rozwiązuje wręcz wybornie! Chodzi o coś takiego:
  1. $model = new Podmiot();
  2. $select = $model
  3. ->select()
  4. ;
  5.  
  6. if (koles_szuka_po_imieniu) {
  7. $select-> where('imie = ?', $imie);
  8. }
  9.  
  10. if (koles_szuka_po_nazwisku) {
  11. $select-> where('nazwisko = ?', $nazwisko);
  12. }
  13.  
  14. $this->view->models = $model->fetchAll($select);
MS Hornet
Peter, ja naprawdę wiem jak wyglądają wyrażenia warunkowe, jak zastosować IF !, wiem także jak bym to napisał gdybym pisał w samym PHP, ale proszę zerknij na kod który załączyłem do postu powyżej.

Podałem tam składnie zapytania z wykorzystaniem ZEND_DB_SELECT, i nie wiem jak w tym przypadku zastosować wyrażenia warunkowe. Jeśli ty wiesz jak zrobić takie warunkowe zapytanie w ZEND_DB to napisz proszę przykład uwzględniając mój kawałek kodu!
phpion
Spójrz na mój przykład.
MS Hornet
Dziękuję o to chodziło biggrin.gif

Trzeba tylko pamiętać żeby po ->select() dodać ;, czyli powinno być:

  1. #
  2. $select = $model
  3. ->select();
-=Peter=-
Ja podałem ten sam kod co @phpion (trochę bardziej ogólny, aby cie zmusić do myślenia i cie czegoś nauczyć), a mówiłeś że nie o to ci chodziło. To jak w końcu jest?

PS. średnik po select() jest, spójż dokładnie ;]
phpion
@Peter:
Osobiście jestem przeciwnikiem podawania gotowców, ale wydaje mi się, że autor wątku po prostu i tak by sobie nie poradził więc szkoda było ciągnąć zabawę w naprowadzanie.

A co do średnika - faktycznie, można go nie zauważyć ale ja właśnie w ten sposób używam Query Buildera w Kohanie stąd ten nawyk.
MS Hornet
Faktycznie jestem słaby z obiektówki, być może z tego wynikało to że nie mogłem wpaść na ten zapis:
  1. $select->where(......


Bardzo dziękuję za pomoc.
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.