Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]Wyszukiwanie w tabeli?, Wyszukiwanie z wieloma kryteriami.
MS Hornet
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




http://framework.zend.com/manual/en/zend.db.select.html
Go to the top of the page
+Quote Post
MS Hornet
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


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
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #4





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


A wiesz co to wyrażenie warunkowe?

http://pl2.php.net/manual/pl/control-structures.if.php


--------------------
Go to the top of the page
+Quote Post
MS Hornet
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


tak wiem, ale nie wiem jak je wpleść w ZEND_DB_SELECT sad.gif
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #6





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


...

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...


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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);
Go to the top of the page
+Quote Post
MS Hornet
post
Post #8





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


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!
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Spójrz na mój przykład.
Go to the top of the page
+Quote Post
MS Hornet
post
Post #10





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


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();
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #11





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


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 ;]


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@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.
Go to the top of the page
+Quote Post
MS Hornet
post
Post #13





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.04.2006

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


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.
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: 20.08.2025 - 20:15