Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Paginacja wyników- light
trucksweb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


Na potrzeby swojej pracy i po calym dniu meczenia sie nad zmiennymi (ktos na tym forum poiwedzial, ze sie nie da, a tu niespodzianka- dalo sie i ladnie dziala)
Najwazniejsze- funkcja bardzo prosta, latwa do konfiguracji i implementacji dla kazdej strony.

  1. <?php
  2. //deklaracja paginacji autor: trucksweb [at] interia.pl
  3. function paginacja_start() {
  4. //okreslenie funkcji globalnych
  5. global $start;
  6. global $pokaz;
  7.  
  8. //jesli przekazano parametr punktu poczatkowego
  9. if(isset($_GET['s'])) {
  10.  
  11. $start=$_GET['s'];
  12.  
  13. //jesli nie wgraj ustawienia domyslne
  14. }else { 
  15. $start=1;
  16. $pokaz=10;
  17. }
  18.  
  19. }//koniec paginacja_start
  20.  
  21. //wyswietlenie paginacji i obsluga odnosnikow autor: trucksweb [at] interia.pl
  22. function paginacja($liczba_stron,$start,$pokaz,$biezaca_strona) {
  23.  
  24. /**********************************************************************/
  25. //ustawienia wyswietlania linkow
  26. $poprzednia_link = TAK; // TAK-jesli ma pokazywac, ze jest to pierwsza strona, NIE-nie pokazuj
  27. $nastepna_link = NIE; // TAK-jesli ma pokazywac, ze jest to ostatnia strona, NIE-nie pokazuj
  28.  
  29. /*********************************************************************/
  30.  
  31. //zliczenie wszystkich stron
  32. $query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
  33. $result = mysql_query($query);
  34. $row = mysql_fetch_array($result, MYSQL_NUM);
  35. $liczba_rekordow = $row[0];
  36.  
  37. //wyznaczenie ilosci stron
  38.  if($liczba_rekordow > $pokaz) {
  39.  //jesli jest wiecej niz jedna
  40.  $liczba_stron = ceil ($liczba_rekordow/$pokaz);
  41. }else {
  42. $liczba_stron =1;
  43. }
  44.  
  45. //wyznaczenie punktu poczatkowego
  46. if(isset($_GET['s'])) {
  47. $start = $_GET['s'];
  48.  }else {
  49. $start = 0;
  50. }
  51.  
  52.  
  53. //tworzenie lacz do pozostalych stron, jesli takie sa
  54. if($liczba_stron > 1) {
  55. //okreslenie biezacej strony
  56. $biezaca_strona = ($start/$pokaz) + 1;
  57.  
  58. //jesli nie jest to pierwsza strona, tworzenie lacza do Poparzedniej
  59. if($biezaca_strona !=1) {
  60. echo ' <a href="faktury.php?s='.($start - $pokaz).'&ls='.$liczba_stron.'">Poprzednia </a> ';
  61. }else {
  62. //jezeli jest to pierwsza strona, pokaz/ukryj informacje
  63. if($poprzednia_link == 'TAK') {
  64. echo 'Poprzednia ';
  65. }else {
  66. echo '';
  67. }
  68. }
  69.  
  70.  //tworzenie lacz do pozostalych stron
  71. for($i=1; $i <= $liczba_stron; $i++) {
  72. if($i !=$biezaca_strona) {
  73. echo ' <a href="faktury.php?s='.(($pokaz * ($i - 1))).'&ls='.$liczba_stron.'"> '. $i . ' </a> ';
  74.  }else{
  75. echo $i. ' ';
  76. }
  77. }
  78.  
  79. //jezeli nie jest to ostatnia strona, tworzenie lacza do Nastepnej
  80. if($biezaca_strona != $liczba_stron) {
  81. echo ' <a href="faktury.php?s='.($start + $pokaz).'&ls='.$liczba_stron.'">Następna</a> ';
  82. }else { 
  83. //jezeli jest to ostatnia strona pokaz/ukryj informacje
  84. if($nastepna_link == 'TAK') {
  85. echo ' Następna';
  86. }else {
  87. echo '';
  88. }
  89. }
  90. }
  91. }//koniec paginacji
  92.  
  93.  
  94. ?>


implementacja dla strony:

  1. <?php
  2.  
  3. //okreslenie wynikow paginacji
  4. paginacja_start($pokaz=10);
  5.  
  6. //standardowe zapytanie, na koncu dajemy LIMIT ze zmiennymi !
  7. $zapytanie = "SELECT cos FROM tabela ORDER by cos DESC LIMIT $start, $pokaz";
  8.  
  9.  
  10. //wyswietlenie paginacji:
  11. paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
  12. ?>


mozemy w ustawieniach TAK/NIE zadeklarowac czy na skrajnych stronach maja sie pokazywac teksty: poprzednia/nastepna.

dla jednego zapytania mozemy wywolywaj wiele paginacji:
  1. <?php
  2. paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
  3.  
  4. //jakis kod strony
  5.  
  6. paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
  7.  
  8. ?>


Moze komus sie przyda (IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif)
Funkcja bedzie rozwijana bo musze ja uzywac w swoim systemie.

Wszelkie sugestie mile widziane (funkcja idealna nie jest, ale to sie kidys zmieni)...

Ten post edytował trucksweb 15.12.2007, 19:10:04
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: 23.08.2025 - 06:28