Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] Paginacja stron
Forum PHP.pl > Forum > PHP
gornik
Witam. Mam pewien problem. Całą noc męczę się z paginacją strony i nie mogę sobie poradzić

MAM KOD:
plik view.php
  1. <?php
  2. $con = mysql_connect("localhost","testt","test");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("baza_test", $con);
  9.  
  10. $result = mysql_query("SELECT * FROM tabelka");
  11.  
  12. while($row = mysql_fetch_array($result))
  13. {
  14. echo '<div id="leftv">';
  15. echo "<center>Nazwa: <b>" . $row['nazwa'] . " " ;
  16. echo '</b></div>';
  17.  
  18. echo '<div id="rightv">';
  19. echo "Dodał: <b><a href=profile.php?id=".$row['profile_id'].">".$row['user']."</a></b>";
  20. echo "<br /></div>";
  21.  
  22. echo $row['link'];
  23. echo '</center></b><br />';
  24. }
  25.  
  26.  
  27.  
  28.  
  29. ?>


Za cholerę nie wiem jak podłączyć to do paginacji by wyświetlał np. 10 rekrdów na stronie i paginacje tylko na 10 podstron np. 1.2.3.4.5.6.7.8.9.10 | ...2.3.4.5.6.7.8.9.10.11
Próbowałem już wszelakich gotowców z googlę ale jestem chyba zbyt zielony do tego..
Proszę o pomoc!
!*!
Tu masz odpowiednie wartości jakie trzeba obliczyć http://www.phpro.org/tutorials/Pagination-...HP-and-PDO.html
gornik
Dzięki za podpowiedź lecz nie moge sobię z tym poradzić, jest opcja zeby ktoś mi podstawił pod to moj skrypt?
adamantd
Mogę Ci dać klasę którą sobie kiedyś zrobiłem i korzystam z niej do dzisiaj ale nie wiem czy sobie z nią poradzisz... Wyświetla linki np 1...prev 4 5 6 7 8 9 10 next...30 , jak Ci się nie przyda w całości to może podpatrzysz sobie jak rozwiązane są niektóre problemy, metoda w niej zawarta zwraca kilka rzeczy w tym właściwość w której są liczby dla LIMITU (wartość1, wartość2) itd itd
gornik
Poproszę smile.gif
adamantd
  1.  
  2. <?php
  3.  
  4. //parametry construktora (tablica wyników do zliczenia array [wynik zwrócony po zapytaniu SELECT tego co chcemy stronicować]), GET odpowiedzialny za numer strony np $_GET['nrpage'],
  5. //to co będzie wrzucone do linków np 'index.php?action=showPage&showPageNr=', ilość wyświetleń wyników na stronie jaką chcemy udostępnić użytkownikowi [opcjonalnie] domyślnie 10,
  6. //ile linków ma być wyświetlonych przed i po stronie widocznej np 1,2,3 [4] 5,6,7 czyli 3 po jednej i 3 po drugiej (jako parametr 3 właśnie) domyślnie 3)
  7.  
  8. //metoda pagination zwraca 4 właściwości -numer dla którego zaczniemy wyświetlanie, ilość wyśwetlanyc rekordów, łączną ilośćwyników, wyświetlane linki
  9.  
  10. class pagin {
  11.  
  12. protected $all;//tablica z wynikami dla zliczenia
  13. public $aUsPage = 0;//numer rekordu od którego zaczniemy wyświetlanie (dla LIMIT A)
  14. public $iloWyswUs;//ilość którą chcemy wyświetlić na stronie (dla LIMIT B)
  15. public $resIlWyn;//łączna ilość wyników
  16. public $podStronyUs;//wyświetlenie linków do podstron paginacja
  17. protected $getPage;//pobrany z paska URL numer podstrony
  18. protected $urlGet;//url dla linków podstron
  19. protected $ilLink;//ilość linków przed i po stronie wyświetanej
  20.  
  21. public function __construct($ALL, $GETPAGE, $URLforLINK, $ILWYSW = 10, $ILLINK = 3){
  22.  
  23. $this->all = $ALL;
  24. $this->resIlWyn = count($ALL);
  25. $this->getPage = $GETPAGE;
  26. $this->urlGet = $URLforLINK;
  27. $this->iloWyswUs = $ILWYSW;
  28. $this->ilLink = $ILLINK+1;
  29.  
  30. $this->pagination();
  31.  
  32. }//end construct
  33.  
  34.  
  35. protected function pagination(){
  36.  
  37. if(is_array($this->all) && $this->resIlWyn > $this->iloWyswUs){
  38.  
  39. if($_POST['sub_pagin']){//obsługa dla formularza "Podaj numer strony"
  40. if($_POST['number_pagin']!='' && is_numeric($_POST['number_pagin'])==true){
  41. header("Location: ".$this->urlGet.$_POST['number_pagin']);
  42. }
  43. }
  44. /*pierwsza*/ if($this->getPage && $this->getPage>1) { $firstPage = '<a href="'.$this->urlGet.'1">1 </a>...';} else { $firstPage = false; }
  45. /*ostatnia*/ $lPage = ceil(count($this->all)/$this->iloWyswUs);
  46. if($this->getPage != $lPage) { $lastPage = '... <a href="'.$this->urlGet.$lPage.'">'.ceil(count($this->all)/$this->iloWyswUs).'</a>';} else { $lastPage = false;}
  47. /*poprzednia*/ if($this->getPage && $this->getPage>1 && $this->getPage!='') { $prevPage = '<a href="'.$this->urlGet.($this->getPage-1).'"> prev </a>'; } else { $prevPage = false;}
  48. /*następna*/ if($this->getPage<$lPage) { if(!$this->getPage){ $pPage = $this->getPage+2; } else { $pPage = $this->getPage+1;} $nextPage = '<a href="'.$this->urlGet.$pPage.'"> next </a>'; } else { $nextPage = false;}
  49.  
  50. $this->podStronyUs = $firstPage;
  51. $this->podStronyUs .= $prevPage;
  52.  
  53. if(!$this->getPage){//dla i początkowego
  54. $i1 = 1;
  55. } else {
  56. if($this->getPage <= $this->ilLink){
  57. $i1 = 1;
  58. } else {
  59. $i1 = $this->getPage-$this->ilLink+1;
  60. }
  61. }
  62.  
  63. $ilAllStr = ceil(count($this->all)/$this->iloWyswUs+1);//całkowita ilość podstron do wyśweitlenia
  64. if(!$this->getPage){//dla i końcowego
  65. if($ilAllStr>$this->ilLink){
  66. $ko = $i1+$this->ilLink;//domyślnie 3 pierwsze strony
  67. } else {
  68. $ko = $ilAllStr;//domyślnie 3 pierwsze strony
  69. }
  70. } else {
  71. if($this->getPage+$this->ilLink<$ilAllStr){
  72. $ko = $this->getPage+$this->ilLink;
  73. } else {
  74. $ko = $ilAllStr;
  75. }
  76. }
  77.  
  78.  
  79. for($i=$i1;$i<$ko;$i++) {//pętla która wyświetla listę podstron z komentarzami
  80. if($i == $this->getPage) { $aa = '<strong style="font-size: 110%;">'; $bb = '</strong>';} else { $aa = false; $bb = false;}
  81. $this->podStronyUs .= ' <a href="'.$this->urlGet.$i.'">'.$aa.$i.$bb.'</a> ';
  82. switch ($this->getPage) {
  83. case ($i):
  84. if($i == 1){
  85. $this->aUsPage = 0;
  86. } else {
  87. $this->aUsPage = ($this->getPage - 1)*$this->iloWyswUs;
  88. }
  89. break;
  90. }//end switch
  91.  
  92. }//end for
  93.  
  94. $this->podStronyUs .= $nextPage;
  95. $this->podStronyUs .= $lastPage;
  96. $this->podStronyUs .= '<form action="" method="post" style="float: right; margin-left: 4px;" title="Podaj numer strony"><input type="text" size="1" maxlength="4" name="number_pagin" /><input type="submit" name="sub_pagin" value=">" style="cursor: pointer;" /></form>';
  97.  
  98.  
  99. }
  100.  
  101.  
  102. }//end method pagination
  103.  
  104.  
  105.  
  106. }//end class pagin
  107.  
  108.  
spokoloko123
Klasa do paginacji + tutorial
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.