Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Paginacja
wiciu010
post 14.04.2011, 18:42:49
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 29.04.2007

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


Chcę zrobić wyszukiwarkę ofert na stronie. Próbuję zaimplementować wbudowany mechanizm paginacji.
Znajduje poprawnie wyniki, ale jak przechodzę na kolejną stronę to znajduje mi wszystkie wyniki a nie tylko wyfiltrowane.

Odpowiednie wywołanie metody (sprawdza czy przesłano formularz):

  1. if(!isset ($_POST['formularz_szukaj']))
  2. $this->_showAll();
  3. else
  4. $this->_search();


Problem tkwi w tym, że _showAll() wyszukuje wszystkie oferty, a _search() wg przesłanego formularza. Fragment tej metody:

  1. if(!empty ($_POST['nazwa_obiektu']))
  2. $sql .= 'AND nazwa_obiektu LIKE \'%'.$_POST['nazwa_obiektu'].'\'% ';
  3.  
  4. if(isset ($_POST['rodzaj']) and $_POST['rodzaj'] > 0)
  5. $sql .= 'AND type_id = '.$_POST['rodzaj'].' ';
  6.  
  7. if(!empty ($_POST['miasto']))
  8. $sql .= 'AND miasto LIKE \''.$_POST['miasto'].'\' ';
  9.  
  10. if(!empty ($_POST['wojewodztwo']) and !is_numeric($_POST['wojewodztwo']))
  11. {
  12. $woj = ORM::factory ('state')->where('state', '=', $_POST['wojewodztwo'])->limit('1')->find();
  13. $sql .= 'AND state_id = '.$woj->id.' ';
  14. }
  15. elseif(isset ($_POST['wojewodztwo']) and $_POST['wojewodztwo'] > 0)
  16. $sql .= 'AND state_id = '.$_POST['wojewodztwo'].' ';
  17.  
  18. if(!empty ($_POST['max_gosci']))
  19. $sql .= 'AND ile_gosci <= '.$_POST['max_gosci'].' ';
  20.  
  21. if(!empty ($_POST['max_noclegi']))
  22. $sql .= 'AND ile_miejsc <= '.$_POST['max_noclegi'].' ';
  23.  
  24. if(!empty ($_POST['udogodnienia_obiekt']))
  25. foreach ($_POST['udogodnienia_obiekt'] as $value)
  26. $sql .= " AND udogodnienia_obiekt LIKE '%".$value."%'";


Jak najlepiej zrobić, żeby po przejściu na kolejną stronę wyników było zapamiętane co ma być filtrowane? Za każdym razem po wysłaniu formularza zapisywać warunki do sesji? Tylko, że w takim razie klasa Pagination, wcale nie wydaje się być dużym ułatwieniem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
matino
post 14.04.2011, 21:47:20
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 30
Dołączył: 9.08.2007

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


Nie wiem czy dobrze zrozumiałem, ale jeśli dane filtrujesz przez POST a nie JS, to wystarczy zamienić POST na GET i kłopot z głowy.

Jeśli korzystasz z JS, to pozostaje AJAX i sesja. Wtedy w zapytaniu do bazy sprawdzasz czy istnieje $_SESSION['...'].
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: 19.07.2025 - 14:45