Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Dorobienie przycisku "wyświetl więcej"
Ravik
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 3
Dołączył: 8.05.2009

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


Witam,

Mam tutaj kod PHP odpowiadający za wyśietlenie określonych rekordów z bazy danych, których ilość na stronie jest limitowana również rekordem z bazy danych. Chodzi mi o to, że w pliku widoku chcę umieścić przycisk "wyświetl więcej" i po kliknięciu tego przycisku przeładowuje się strona i ilość wyświetlanych rekordów zwiększa się o 10. Przy kolejnym kliknięciu ma się dziać dokładnie to samo. Nie mam pojęcia jak zrobić to w Zendzie. W jaki sposób mam zmodyfikować ten kod PHP, aby po klknięciu w link zmienić zmienną $limit o +10 i w jaki sposób wysłać to w pliku wyglądu?

Będę wdzięczny za wszelkie wskazówki.

Pozdrawiam

  1. function newAction() {
  2.  
  3. $db = Zend_Registry::get('db');
  4. $db->setFetchMode(Zend_Db::FETCH_OBJ);
  5.  
  6. $settings = new SettingsTable;
  7. $limit = $settings->fetchRow('title = "newLimit"'); // limit pobierany z bazy danych i na tej podstawie jest określona liczba ogłoszeń, które mają się pojawiać na stronie
  8.  
  9. $select = $db->select();
  10. $select->from('advertisements', array('id', 'areaSize', 'price', 'description', 'city', 'announceDate', 'promo'))
  11. ->joinInner('propertyTypes', 'propertyTypes.id = advertisements.propertyType', 'type as propertyType')
  12. ->joinInner('advertisementTypes', 'advertisementTypes.id = advertisements.advertisementType', 'type as advertisementType')
  13. ->joinInner('provinces', 'provinces.id = advertisements.province', 'province')
  14. ->joinLeft('images', 'images.advertisementId = advertisements.id', 'image')
  15. ->where('dayCounter > 0')
  16. ->group('id')
  17. ->limit($limit->value, 0);
  18.  
  19. $result = $db->query($select);
  20. $this->view->advertisements = $result->fetchAll();
  21. $this->view->hideBack = 1;
  22.  
  23. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Nie jestem pewien, czy paginator to akurat to, czego Ravik potrzebuje (IMG:style_emoticons/default/wink.gif)

Przede wszystkim:
1. Pobranie danych z bazy to zadanie dla modelu
2. Link więcej to po prostu link do tej samej akcji z dodatkowym parametrem: page.com/module/controller/action/more/1

Obsługujesz to w kontrolerze tak:
  1. $model = new Model_YourTable();
  2. $this->view->data = $model->getYourData($this->_getParam('more'));


A w modelu tworzysz metodę z parametrem more:
  1. public function getYourData($more=null){
  2. //tutaj kod zapytania do bazy
  3.  
  4.  
  5. //obsługa parametru np. taka
  6. if(empty($more)){
  7. $select->limit(10);
  8. }else{
  9. $select->limit(10*$more);
  10. }
  11. }


Ale ja bym najlepiej to widział tak, że po prostu ajaxem to doładowujesz, bez przeładowywania strony. Chyba, że zależy nam mocno na liczbie odsłon.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 22:18