Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Pager, wyniki na podstrony
Forum PHP.pl > Forum > Przedszkole
in5ane
Witam, chciałem skorzystać z klasy nospora do stronicowania i coś mi nie chce działać. Skorzystałem z tych przykładów i robię tak jak tam i nie działa mi ;/

Tak to zacząłem robić:
  1. <?php
  2. require_once('Pager.class.php');
  3. $que = "SELECT COUNT(*) FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id;";
  4. $res = mysql_query($que);
  5. $rows = mysql_fetch_array($res);
  6. $recordsCount = $row[0];
  7. $pager = new Pager('idPagera');
  8. $pager->SetTotalRecords($recordsCount);
  9. $pag = $pager->Render(true);
  10. $start = $pager->GetIndexRecordStart();
  11. $end = $pager->GetIndexRecordEnd();
  12.  
  13. $query = "SELECT * FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id LIMIT $start,".($end - $start + 1);
  14. .... // moje dalsze intrukcje (while itd..)
  15.  
  16. echo $pag;
  17. ?>


No i to mi nie działa w ogóle, i w tych przykładach nie było podane gdzie ja mam tutaj uwzględnić ilość rekordów na stronę. Dodam, że korzystam z wersji numerek 2.02 (gdyż ona jest najnowsza pod PHP4).

Z góry dziękuję i pozdrawiam ;-)

P.S.: Najlepiej pewnie sam nospor mi pomoże.
nospor
Cytat
No i to mi nie działa w ogóle
Czym sie objawia to nie dzialanie? Dokladniej prosze smile.gif

Cytat
gdzie ja mam tutaj uwzględnić ilość rekordów na stronę

Domyslnie jest to 15. Jak chcesz zmienic to:
  1. <?php
  2. $pager->SetRecordsPerPage(20);
  3. ?>
in5ane
W końcu udało mi się ze wszystkim, ale na nowo napisałem skrypt (i dopiero podstawiłem pager) i wszystko śmiga. Wcześniejszy kod był błędny i jeszcze mało zooptymalizowany.

Cytat(nospor @ 11.01.2009, 21:03:43 ) *
Czym sie objawia to nie dzialanie? Dokladniej prosze smile.gif


Objawia się to tym, że wyświetla 1 rekord i nie ma stron do wyboru 1, 2, 3 itd.. a rekordów jest 6 i ustawiłem na 5 ilość na stronę więc powinno wyświetlić 5 i na drugiej stronie 1, a tu wyświetla tylko 1 rekord i nie ma wyboru stron.


@edit: Zrobiłem literówkę, i teraz działa, ale ustawione jest na 5 a wyświetla 4 na stronie.

KOD:
  1. <?php
  2. require_once('Pager.class.php');
  3. $que = "SELECT COUNT(*) FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id;";
  4. $res = mysql_query($que);
  5. $rows = mysql_fetch_array($res);
  6. $recordsCount = $rows[0];
  7.    $pager = new Pager('idPagera');
  8.    $pager->SetTotalRecords($recordsCount);
  9.    $pager->SetRecordsPerPage(5);
  10.    $pag = $pager->Render(true);
  11.    $start = $pager->GetIndexRecordStart();
  12.    $end = $pager->GetIndexRecordEnd();
  13.  
  14. $query = "SELECT * FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id LIMIT $start,".($end - $start + 1);
  15. $result = mysql_query($query);
  16. $num_rows = mysql_num_rows($result);
  17. while...........{
  18.  
  19. }
  20.  
  21. echo $pag;
  22. ?>


Przepraszam działa, jaki ja dzisiaj zabiegany. Same literówki!

Dzięki nospor za radę!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

No to teraz mam inny problem..

Otóż mam kod:
  1. <?php
  2. require_once('Pager.class.php');
  3. $que = "SELECT COUNT(*) FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id;";
  4. $res = mysql_query($que);
  5. $r = mysql_fetch_array($res);
  6. $recordsCount = $r[0];
  7. $pager = new Pager('idPagera');
  8. $pager->SetTotalRecords($recordsCount);
  9. $pager->SetRecordsPerPage(3);
  10. $pag = $pager->Render(true);
  11. $start = $pager->GetIndexRecordStart();
  12. $end = $pager->GetIndexRecordEnd();
  13.  
  14. $query = "SELECT * FROM phpbb_posts WHERE forum_id = 22 ORDER BY topic_id DESC, post_id LIMIT $start,".($end - $start + 1);
  15. $result = mysql_query($query);
  16. $num_rows = mysql_num_rows($result);
  17. $i=1;
  18.  
  19.    function bbencode_strip() { // nie wazne do tego o co mi chodzi
  20.    }
  21.  
  22.  
  23. while ($row = mysql_fetch_object($result)) {
  24.    if($row == "") {
  25.        break;
  26.    }
  27.    if ($poprzedni_temat == $row->topic_id) {
  28.    } else {
  29.        $poprzedni_temat = $row->topic_id;
  30.        $post++;
  31.        $post_tekst = mysql_fetch_array(mysql_query('SELECT * FROM phpbb_posts_text WHERE post_id='.$row->post_id.';'));
  32.        $temat = $post_tekst['post_subject'];
  33.        $text = $post_tekst['post_text'];
  34.        echo '<p class="artykul-tytul"><strong>'.$temat.'</strong></p>';
  35.        $date = $row->post_time;
  36.        $data= date('w', $date);
  37.        $rok= date('Y', $date);
  38.        $dzien = date('d', $date);
  39.        $miech = date('n', $date);
  40.        $dzien_tygodnia = array(0 => 'Niedziela', 1 => 'Poniedziałek', 2 => 'Wtorek', 3 => 'Środa', 4 => 'Czwartek', 5 => 'Piątek', 6 => 'Sobota');
  41.        $miesiac = array(01 => 'Styczeń', 02 => 'Luty', 03 => 'Marzec', 04 => 'Kwiecień', 05 => 'Maj', 06 => 'Czerwiec', 07 => 'Lipiec', 08 => 'Sierpień', 09 => 'Wrzesień', 10 => 'Październik', 11 => 'Listopad', 12 => 'Grudzień');
  42.        $uid= $post_tekst['bbcode_uid'];
  43.        echo '<p class="artykul-data">'.$dzien_tygodnia[$data].' '.$dzien.' '.$miesiac[$miech].' '.$rok.'</p>';
  44.        echo '<p class="artykul-tresc">';
  45.            $text = nl2br($text);
  46.            echo bbencode_strip($text, $uid);
  47.        echo '</p>';
  48.    if ($num_rows != $i) {
  49.        echo '<br /><br />';
  50.    }
  51.    $i++;
  52.    }
  53. }
  54. echo '<p class="numerowanie-podstrony">strony: '.$pag.'</p>';
  55. ?>


Chodzi ogólnie o to, że skrypt w whilu ma takie instrukcje warunkowe, które mają za zadanie wyświetlić tylko pierwszy post z danego tematu (ogólnie skrypt pobiera tematy z działu Aktualności na forum i ma wypisać tylko pierwszy post z danego tematu) i moje pytanie brzmi jak mam też te instrukcje warunkowe wplątać do zapytania i zliczenia ilości rekordów w pagarze, bo on zlicza włącznie z odpowiedziami w danym temacie (wszystkie posty) a też ma tylko zliczyć pierwsze posty z każdej tematu (czyli ogólnie ma zliczyć tematy z działu Aktualności), chodzi o to ogólnie, żeby jakoś te instrukcje warunkowe tam wplątać.

Proszę bardzo o pomoc, próbował na kilka sposobów i mi nie wychodzi. Pozdrawiam ;-)
nospor
to wkoncu jest jeszcze problem czy juz nie? bo co roz dostaje maile ze juz dziala. Dodatkowo te kobylaste czerwone litery....i juz nie wiem czy jest problem czy nie ma smile.gif
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.