Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Paginacja na stronie głównej


Przejdź do rozwiązania Rozwiązane przez DawPi,

Rekomendowane odpowiedzi

Hej,

 

Chcę uzyskać efekt paginacji wyników na stronie głównej forum. Sęk w tym, że nie wiem co mam wpisać w

 

            'baseUrl'            => "" ) );   

Próbowałem zostawić puste - wtedy nie pobiera $this->request['st']. To samo jest gdy dodam dla testu obojętnie jakie słowo. Co radzicie?

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

A dodaj samo:

'&st=' . $this->request['st']

Jak nie pomoże to napisz coś więcej o modzie jaki robisz.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie śmiga.

 

Więc tak, mam modyfikację, która pobiera wyniki z danej bazy. Jest ich kilka. Chcę je zaopatrzyć w stronnicowanie.

 

Zrobiłem więc ją:

75165130063026925111.png

 

Ale po przejściu "next" bądź "2" w url dodaje się &st=np. 1, ale nie zmieniają się ani wyniki ( na kolejne ), ani na "aktywne" numer strony.

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach


$perPage = 1;

        $start = intval($this->request['st']);

        $this->DB->build( array( 'select' => 'count(*) as page', 'from' => 'topics', 'where' => 'important=1', 'limit' => array( $start, $perPage ) ));

        $this->DB->execute();

        $count = $this->DB->fetch($result);                                                    

        $pages = $this->registry->getClass('output')->generatePagination( array(  'totalItems'         => $count['page'],

                                                                                  'itemsPerPage'       => $perPage,

                                                                                  'currentStartValue'  => $start,

                                                                                  'baseUrl'            => '&st=' . $this->request['st'] ) );    

        $rs = $this->DB->build( array(

                                        'select'     => 't.*',

                                        'from'         => array( 'topics' => 't' ),

                                        'where'     => 't.important=1',

                                        'order'     => 't.tid DESC',

                                        'limit'        => array( $start, $perPage ),                                                                                                                 'add_join'    => array(

                                        'add_join'  => array(

                                                            'select'    => 'p.*',

                                                            'from'        => array( 'posts' => 'p' ),

                                                            'where'        => 't.tid=p.topic_id AND p.new_topic=1',

                                                            'type'        => 'left',

                                ),        ) ) );

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

To:

$this->DB->build( array( 'select' => 'count(*) as page', 'from' => 'topics', 'where' => 'important=1', 'limit' => array( $start, $perPage ) ));

Zamień na:

$this->DB->build( array( 'select' => 'count(*) as page', 'from' => 'topics', 'where' => 'important=1' ));

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

To samo? Tak czy siak zostaw to jak napisałem, bo to pierwsze zapytanie ma pobrać ile jest w sumie pozycji, a potem dopiero limitujesz.

Dalej - wyechuj st - coś się wyświetla? Zmienna jest w ogóle obsadzona?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Ogólnie to po dodaniu do

  'baseUrl'            => '' ) );   
 'baseUrl'            => '&st=' . $this->request['st'] ) );	

Adres wygląda :

http://localhost/forum2/index.php?&st=&st=1

Tak jakby w ogóle tej zmiennej nie pobierał.

 

Próbowałem również tak:

'baseUrl'            => 'app=forums&module=forums&section=boards' ) );	

też nic.

Edytowane przez TeeZ

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

Wybacz, ale nadal nie mogę tego zrobić. :lol2:

 

Próbowałem:

'baseUrl'            => 'st2=' . $this->request['st'] ) );   
'baseUrl'            => 'st2=' . $this->request['st2'] ) );   
'baseUrl'            => 'st2=' ) );	

+

		$start = intval($this->request['st2']);
		$start = intval($this->request['st']);

I nadal to samo. Nie ważne jak zrobię, w URL jest:

index.php?st2=&st=1

albo

index.php?st2=0&st=1

co i tak nic nie robi.

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Czyżby czyściło requesta? Hmm. To spróbuj gdzieś dać coś takiego:

$start = ( $this->request['st'] > 0 ) ? ( ceil( $this->request['st'] / 10 ) + 1 ) : 1;

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

 

A tak?

        $pages = $this->registry->getClass('output')->generatePagination( array(  'totalItems'         => $count['page'],
                                                                                  'itemsPerPage'       => $perPage,
                                                                                  'currentStartValue'  => $start,
                                                                                  'isPagesMode'        => true,
                                                                                  'baseUrl'            => ''

 

 

Działa paginacja, ale nie działa przewijanie rekordów. Niby zmienia, ale wynik pozostaje ciągle ten sam mimo:

										'limit'	    => array( $start, $perPage ), 	
		$start = intval($this->request['page']);

Dodatkowo czy page nie będzie działać tylko na 3.4 w górę?

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

Więc tak:

		$start = intval($this->request['page']);
		echo $start;

Wynik:

0
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\forum2\hooks\tz34_importantGlobal.php:31) in C:\xampp\htdocs\forum2\admin\sources\classes\output\formats\html\htmlOutput.php on line 114

Nie ważne od numeru strony ( wiem, że błąd jest winą echa - daje go aby tylko porównać ),

 

przy

 

        $start = $this->request['page'];
        echo $start;

 

Nawet echa nie pokazuje.

 

Url wygląda następująco:

http://localhost/forum2/index.php?&page=2
Edytowane przez TeeZ

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
  • Rozwiązanie

Czy Ty w ogóle nie zadeklarowałeś request w konstruktorze rozszerzenia - o ile w tej formie to masz zrobione?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.