Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Drobna modyfikacja stronicowania
Forum PHP.pl > Forum > Przedszkole
artekp999
Znalazłem w internecie skrypt stronicowania (jedyny który u mnie działa). Chciałbym jego wygląd zmodyfikować

Obecnie wygląda tak
Strony 1 2 3 itd

Chce aby wyglądało tak

Poprzednia 1 2 3 Następna
Strona 1 z 3

Proszę was o pomoc w zmodyfikowaniu poniższego kodu. Wiem ze to jest pewnie proste , ale ja dopiero uczę się podstaw PHP

  1. <?php
  2. include("polacz.php");
  3. $start = $_GET['start'];
  4. $na_stronie = 5;
  5. $query = "SELECT * FROM news LIMIT ".($start).",".$na_stronie."";
  6. $result = mysql_query ($query);
  7. while ($row = mysql_fetch_array($result))
  8. {
  9. //Wyświetlamy wpisy
  10. }
  11. $query = mysql_query("SELECT * FROM news order by id desc LIMIT ".($start).",".$na_stronie."");
  12. while($rekord = mysql_fetch_array($query))
  13. {
  14. $naz .= '<a href="news.php?id='.$rekord[0].'"><div id="TYTUL">'.$rekord[1].'</div></a><div id="AUTOR"> Autor: <b>'.$rekord[3].'</b> - '.$rekord[2].'</div><div id="TRESC">'.$rekord[4].'</div><br>';
  15. }
  16. echo '<li>'.$naz.'</li>';
  17. $wykonaj=mysql_query("SELECT * FROM news");
  18. $znaleziono=mysql_num_rows($wykonaj);
  19. if($znaleziono>$na_stronie) {
  20. print '<center>Strona ';
  21. for($i=0; $i<ceil($znaleziono/$na_stronie); $i++)
  22. print '<a href="start.php?start='.($i*$na_stronie).'">'.($i+1).'</a> | ';
  23. }
  24. print '</center>';
  25. ?>
papryk
  1. if($znaleziono>$na_stronie)
  2. {
  3. $nastepna = $na_stronie+$start;
  4. $poprzednia =$start-$na_stronie;
  5. print "<center>";
  6.  
  7. if($start!=0)
  8. {
  9. print "<a href='start.php?start=$poprzednia'>Poprzednia</a> ";
  10. }
  11.  
  12. for($i=0; $i<ceil($znaleziono/$na_stronie); $i++)
  13. {
  14. $koniec = $i*$na_stronie;
  15. print '<a href="start.php?start='.$koniec.'">'.($i+1).'</a> | ';
  16. }
  17.  
  18. if($start!=$koniec)
  19. {
  20. print "<a href='start.php?start=$nastepna'>Nastepna</a>";
  21. }
  22.  
  23. $aktualna = ($start / $na_stronie) + 1;
  24. print "<br />Strona ".$aktualna." z ".ceil($znaleziono/$na_stronie)."</center>";
  25. }


Wkleić pod 18 linijkę. Jest to działające rozwiązanie jednak, posiada pewne niedogodności. Pozdrawiam.
thek
To ja tylko napiszę JAK zrobić prosto stronicowanie:
1. Bierzesz liczbę wyników i ilość wyników na strone oraz dzielisz równając do najbliższej większej lub równej całkowitej (ceil), to liczba stron, czyli $pages. Lepiej ją raz wyliczyć i trzymać niż co chwilę liczyć wink.gif
2. Bierzesz i sprawdzasz czy numer strony istnieje i jest liczbą.
3. Jeśli nie to ustawiasz 1, jeśli tak to:
3a) Sprawdź czy jest większy niż liczba stron, jeśli tak to zrób przekierowanie na stronę ostatnią lub na pałę wpisz $page = $pages
3b) Sprawdź czy jest mniejsza niż 1, jeśli tak to zrób przekierowanie na stronę 1 lub na pałę wpisz $page = 1
4. Od strony 1 do $pages walnij linki a pod spodem napis
echo $page.' z '.$pages;

Wariacje są różne teraz już. Przykładowo nie wszystkie strony, ale po kilka z każdej strony aktualnej. Można torozwiązać poprze wyliczenie $start i $end dla pętli wypisującej strony. Można także dorzucić linki: Pierwsza, Poprzednia jeśli jesteśmy na stronie innej niż pierwsza albo Następna, Ostatnia gdy jesteśmy na innej niż ostatnia. Napisanie samemu takiego czegoś to kwestia może pół godziny jeśli chcemy to "wybajerzyć" o obsługę SEO-friendly linków.
artekp999
papryk dzięki za pomoc , o to mi właśnie chodziło
thek PHP to na razie jak dla mnie coś trudnego. Znam tylko podstawy , ale ciągle się ucze.

Temat do zamknięcia
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.