Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Paginacja
Forum PHP.pl > Forum > Przedszkole
Turson
Napisałem skrypt paginacji, który działa poprawnie i wyświetla dobrze strony i wyniki.
Natomiast chcę to ulepszyć. Mianowicie wygląda to tak, że wyświetla wszystki strony: Poprzednia [1] [2] [3] [4] [5] [6] itd. Następna
Chcę, że jeśli stron jest więcej od "x" to wygląda to tak:
Pierwsza Poprzednia 11 12 13(aktualna) 14 15 Następna Ostatnia
Co do pierwszej, ostatniej to wiem, mam już kod.
Ale chodzi o wyświetlenie aktualnej strony w środku oraz "y" sąsiadujących.

Nie wiem jak to sobie wyobrazić w pętli smile.gif
valkirek
No jeśli w GET trzymasz aktualny numer strony to warunek bardzo prosty ==
Jeśli chcesz wyświetlić 2 mniejsze i większe to <> i dodajesz i odejmujesz 2 biggrin.gif
Pokaż kod
Turson
Cytat(valkirek @ 16.09.2013, 18:43:42 ) *
Jeśli chcesz wyświetlić 2 mniejsze i większe to <> i dodajesz i odejmujesz 2 biggrin.gif

Nie do końca tak prosto, bo stron więcej niż jest.


Kod jest tak długi, bo to wyszukiwarka.

  1. <?PHP
  2. require_once('pdo.php');
  3. if(isset($_GET["fraza"]))
  4. {
  5. $fraza=$_GET["fraza"];
  6. $fraza=addslashes(trim(htmlspecialchars($fraza)));
  7. if($fraza!='')
  8. {
  9. $dl=strlen($fraza);
  10. if($dl>=3)
  11. {
  12. echo 'Wyniki wyszukiwania dla frazy: "'.$fraza.'"<br />';
  13. $wyniki=explode(" ",$fraza);
  14. $warunki=" (title LIKE '%$wyniki[0]%' || content LIKE '%$wyniki[0]%')";
  15. for ($i=1;$i<count($wyniki);$i++)
  16. {
  17. $warunki.=" and (title LIKE '%$wyniki[$i]%' || content LIKE '%$wyniki[$i]%')";
  18. }
  19.  
  20. $query="SELECT * FROM news WHERE $warunki";
  21. $ile=$db->query($query)->RowCount();
  22. $PerPage=1; //ilość wyników na stronę
  23. $strony = ceil($ile/$PerPage); //ilość stron
  24. if(isset($_GET["strona"]) && is_numeric($_GET["strona"])){$strona=$_GET["strona"];}else { $strona=1; }
  25. $next=$strona+1; //następna strona
  26. $back=$strona-1; // poprzednia strona
  27. $start = ($strona-1)*$PerPage;
  28. $query2="SELECT * FROM news WHERE $warunki LIMIT $start, $PerPage";
  29. $sql2 = $db->query($query2);
  30. if($ile>0)
  31. {
  32. echo "Znaleziono $ile wyników:<br><br>";
  33. if($strona>$strony){ echo '<div class="info">Strona nie odnaleziona.</div>'; }
  34. while ($w = $sql2->fetch())
  35. {
  36. $title=$w["title"];
  37. $opis=substr($w["content"],0,200);
  38. echo '
  39. <div class="wynik">
  40. <div class="wynik_header"><a href="">'.$title.'</a></div>
  41. <div class="wynik_opis">'.$opis.'...</div>
  42. </div>
  43. ';
  44. }
  45. if($ile>$PerPage)
  46. {
  47. echo '<div class="paginacja">';
  48. if($strony<=5)
  49. {
  50. if($strona > 1)
  51. {
  52. echo '<a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $back . '">&larr;</a>';
  53. }
  54. for($pg=1; $pg<=$strony; $pg++)
  55. {
  56. if($pg==$strona)
  57. {
  58. echo "<b>$pg</b>";
  59. }
  60. else
  61. {
  62. echo ' <a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $pg . '">[' . $pg . ']</a> ';
  63. }
  64. }
  65. if($strona < $strony)
  66. {
  67. echo '<a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $next . '">&rarr;</a>';
  68. }
  69. }
  70. else
  71. {
  72. $pierwsza=1;
  73. $ostatnia=$strony;
  74. echo '<a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $pierwsza . '" title="Pierwsza strona">&#xAB;</a> ';
  75. if($strona > 1)
  76. {
  77. echo '<a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $back . '" title="Poprzednia strona"><</a> ';
  78. }
  79. for($pg=1; $pg<=$strony; $pg++)
  80. {
  81. if($pg==$strona)
  82. {
  83. echo "<b>$pg</b>";
  84. }
  85. else
  86. {
  87. echo ' <a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $pg . '">[' . $pg . ']</a> ';
  88. }
  89. }
  90. if($strona < $strony)
  91. {
  92. echo ' <a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $next . '" title="Następna strona">></a>';
  93. }
  94. echo ' <a href="index.php?page=szukaj&fraza='.$_GET["fraza"].'&strona=' . $ostatnia . '" title="Ostatnia strona">&#xBB;</a> ';
  95.  
  96. }
  97. echo "</div>";
  98. }
  99. }
  100. else
  101. {
  102. echo "<br />Brak wyników wyszukiwania.";
  103. }
  104. }
  105. else echo "Wyszukiwany tekst musi zawierać minimum 3 litery.";
  106. }
  107.  
  108. }
  109. ?>


Od linii 72. widać, że kombinowałem napisać coś włanego i właśnie to trzeba zmodyfikować
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.