Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie
Forum PHP.pl > Forum > Przedszkole
Balas
Zrobilem skrypt ktory wyswietla i stronicuje news. I problem wlasnie ze stronicowaniem. Chcialbym aby wyswietlacło mi sie np.
Cytat
poprzednie 1 2 3 ... 15 16 17 nastepne

zamiast
Cytat
poprzednie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17


Jak to zrobic questionmark.gif

Kod:

  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  3. mysql_connect ("localhost", "******", "********");
  4. mysql_select_db("******");
  5.  
  6. $sql = "SELECT SQL_CALC_FOUND_ROWS * 
  7.  FROM news
  8.  ORDER BY id DESC 
  9.  LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  10. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając 
    od $_GET['porcja']*ILOSC_NA_STRONIE
  11. $zapytanie = mysql_query($sql); // wykonujemy zapytanie
  12. while($wiersz = mysql_fetch_array($zapytanie))
  13. {
  14.  
  15.  
  16. print "<table border=0 width=500><tr><td>Dodane: ".$wiersz['data']."<hr></td></tr>";
  17. print "<tr><td>".$wiersz['tresc']."<hr></td></tr>";
  18. print "<tr><td align=right><a href=comments.php?id=".$wiersz['id'].">komentarze</a> Dodal: ".$wiersz['nick']."</td></tr><br>";
  19. }
  20. echo('</table>');
  21.  
  22. $sql = "SELECT FOUND_ROWS() as Ilosc";
  23. $zapytanie = mysql_query($sql); 
  24. list($iloscWpisow) = mysql_fetch_row($zapytanie);
  25.  
  26. //Nawigacja
  27.  
  28. //jesli nie jestesmy na pierwszej stronie
  29. if($_GET['porcja']>0){ 
  30. //wyswietlamy link do poprzedniej strony
  31.  echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  32. }
  33.  
  34. for($i = 0;$i<=floor(($iloscWpisow-1)/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  35.  echo '<a href="?porcja='.($i).'"> '.($i+1).' </a> ';
  36. }
  37. //jesli nie jestesmy na ostatniej stronie
  38. if($_GET['porcja']<floor(($iloscWpisow-1)/ILOSC_WYNIKOW_NA_STRONIE)){ 
  39. //wyswietlamy link do nastepnej strony
  40.  echo ' <a href="?porcja='.($_GET['porcja']+1).'">Następne</a>';
  41. }
  42.  
  43.  
  44.  
  45. ?>
TomASS
Zobacz jak to zrobił szanowny nopsor w swojej klasie, którą uważam za jedną z lepszych (jeśli nie najlepszą) klasę do stronicowania.
Balas
Własnie ja przegladalem... ale za bardzo sie nei skapnalem jak on to zrobil :] dlatego pisze dla poczatkujacych :] a chce sam zrobic nie gotowe uzywac biggrin.gif

No moze z mala pomoca forumowiczow ^^

PS. jeszcze raz przegladnalem i tak sie nawet zastanawiam jak to wkleicz pod moj kod :] (ta klase)
nospor
W topicu z klasą podałem dość chyba przejrzysty przykład. No nic.

  1. <?php
  2.  
  3. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  4. mysql_connect ("localhost", "******", "********");
  5. mysql_select_db("******");
  6.  
  7.    $sql = 'select count(*) from news';
  8.    $result = mysql_query($sql);
  9.    $row = mysql_fetch_array($result);
  10.    $recordsCount = $row[0];//pobranie liczby rekordów
  11.    $pager = new Pager('idPagera');
  12.    $pager->setRecordsOnPage(ILOSC_WYNIKOW_NA_STRONIE);
  13.    $pager->setRecordsCount($recordsCount);//ustawienie liczby rekordów
  14.    //wygenerowanie pagera i zapamietanie go w zmiennej w celu 
  15.    //pozniejszego wyswietlenia
  16.    $renderPager = $pager->render();
  17.    $start = $pager->getStartRecord();//pobranie indexu rekordu początkowego
  18.    $end = $pager->getEndRecord();//pobranie indexu rekordu koncowego
  19.    //zapytanie z uwzglenieniem stronicowania
  20.    $sql = 'select SQL_CALC_FOUND_ROWS * from news ORDER BY id DESC limit '.$start.','.($end - $start + 1); 
  21.  
  22. $zapytanie = mysql_query($sql); // wykonujemy zapytanie
  23.    //...pobranie wyników i ich wyswietlenie
  24.   //......tutaj mozesz juz olac swoje stronicowanie. wyswietl tylko rekordy
  25.  
  26.    echo $renderPager; //wyswietlenie pager'a
  27.  
  28. ?>

Nie musisz już w zapytaniu używać SQL_CALC_FOUND_ROWS, gdyż liczba wszystkich rekordów zawarta jest w zmiennej $recordsCount. Zostawiłem jednak narazie na wszeli wypadek u Ciebie te SQL_CALC_FOUND_ROWS, żęby było kompatybilne z pozostałym Twym kodem (którego część i tak można już usunąć).

proponuje ci dodatkowo zapoznac się z innymi metodami set... Umożliwiają one dostosowanie innych paramerów pagera. Poeksperymentuj, nie bój się, nic nie wybuchnie smile.gif
pozdro

edit: dopisałem linijkę : $result = mysql_query($sql);, którą zjadłem. sorki mój błąd
Balas
Dzieki sliczne za pomoc smile.gif

A za nei wybuchnie to nei wiem tongue.gif znajac moj sprzet rolleyes.gif

EDIT

wyskakuje mi takie cus
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\sciezka\news.php on line 17


nie za bardzo wiem co zle jest :?

  1. <?php
  2.  $sql = 'select count(*) from news';
  3.  $row = mysql_fetch_array($result);
  4. ?>
to jest w lini 16 i 17 :]

co to jest $result questionmark.gif
Ociu
  1. <?php
  2. $result = mysql_query('select count(*) from news') or die(mysql_error());
  3. $row = mysql_fetch_array($result);
  4. ?>
Balas
blink.gif
Ale gafa smile.gif nie zauwazylem tego worriedsmiley.gif

teraz jak podpiac wyswietlanie questionmark.gif :] bo ja lama jestem smile.gif i nei kapuje winksmiley.jpg

EDIT: Probuje probuje... ale nie wychodzi :/ gdzie dac kod do wyswietlania newsów questionmark.gif

  1. <?php
  2. $sql = "SELECT * FROM news ORDER BY id DESC";
  3. $zapytanie = mysql_query($sql);
  4. while($wiersz = mysql_fetch_array($zapytanie))
  5. {
  6. print "<table border=0 width=500><tr><td>Dodane: ".$wiersz['data']."<hr></td></tr>";
  7. print "<tr><td>".$wiersz['tresc']."<hr></td></tr>";
  8. print "<tr><td align=right><a href=comments.php?id=".$wiersz['id'].">komentarze</a> Dodal: ".$wiersz['nick']."</td></tr></table><br>";
  9. }
  10. ?>


Bo mi juz rece opadaja sad.gif sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif

EDIT: Wreszcie sie udalo smile.gif a temat chyba do zamkniecia smile.gif
Hubi.pl
na podstawie powyższej klasy, napisałem taki kod:
  1. <?php
  2. $sql = "select SQL_CALC_FOUND_ROWS * from statusy WHERE id_kategoria=$_GET[id] ORDE
    R BY id DESC limit "
    .$start.','.($end - $start + 1);
  3.  
  4. $zapytanie = mysql_query($sql) or die('Query failed: ' . mysql_error());
  5. while ($rekord = mysql_fetch_array ($zapytanie)) {
  6. echo "<img src=\"images/statusek.gif\" width=\"16\" height=\"16\" /> <a href=\"opis,$rekord[id].html\"> $rekord[tresc_opisu]</a><br>";
  7. }
  8. echo $renderPager; 
  9. ?>

niestety pokazuje taki bład:
Cytat
Query failed: Something is wrong in your syntax obok 'from statusy WHERE id_kategoria=14 ORDER BY id DESC limit 0,25' w linii 1


Co z tym zrobić?tongue.gif
nospor
A którą masz wersję mysql? Bo się chyba pluje o SQL_CALC_FOUND_ROWS, ale tp moze dlatego ze masz jakąś starą wersję.

Do wyliczenia liczby wszystkich rekordów uzyj:
  1. SELECT count(*)
  2. FROM statusy
Hubi.pl
Cytat(nospor @ 2006-02-06 16:52:32)
A którą masz wersję mysql? Bo się chyba pluje o SQL_CALC_FOUND_ROWS, ale tp moze dlatego ze masz jakąś starą wersję.

Do wyliczenia liczby wszystkich rekordów uzyj:
  1. SELECT count(*)
  2.  
  3. FROM statusy

Wyliczenie rekordów działa OK, bo odpowiednia ilość podstron się pojawia tak jak ma być winksmiley.jpg
problem tylko z wyświetleniem zawartości tych podstron;]

baze mam: MySQL 3.23.58

what to do?snitch.gif
nospor
to skoro juz ilosc rekordow masz wyliczoną, to wywal z zapytania oto: SQL_CALC_FOUND_ROWS

powinno dzialac
Hubi.pl
Cytat(nospor @ 2006-02-06 16:59:15)
to skoro juz ilosc rekordow masz wyliczoną, to wywal z zapytania oto: SQL_CALC_FOUND_ROWS

powinno dzialac

super działa biggrin.gif!

Dziekuję bardzo Nospor winksmiley.jpg i pozdrowienia dla córeczki winksmiley.jpg
korey
Mi za to wywala taki błąd:

Fatal error: Cannot instantiate non-existent class: pager in C:\Program Files\WebServ\httpd-users\Szkolne_Kola\functions\newsy.php on line 110

To ta linijka #110 $pager = new Pager('idPagera');

Nie wiem co jest źle..
nospor
nie wgrałeś pliku z klasą.
Ociu
Jaki stary kotlet ! dry.gif
Na następny raz załóż osobny temat.
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.