Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] podział wyświetlanej treści na strony [1][2]...
Forum PHP.pl > Forum > Przedszkole
matuty
siemanko biggrin.gif
chciałbym dowiedzieć sie jak podzielić treść wyświetlaną z bazy danych na strony a mianowicie - wyświetlam z bazy danych użytkowników strony(nazwa,level itp.), jeśli wyświeta więcej niż 15 trzeba przejść do następnej strony [1][2][3]...

ewentualnie można by było wyświetlić użytkowników w okienku z suwakiem ale też niewiem jak to zrobic biggrin.gif
pozdrowienia
ZaXaZ
Poczytaj o Paginacji/Stronicowaniu.
kujol
Takie coś nazywa się paginacją/stronicowaniem.
Pobierasz wyniki z bazy limitem np. od 0-15, 15-30 itd.
Limit musi automatycznie być obliczany. Informacja o nim musi być gdzieś zapisana smile.gif np tablica get.
Przykładowe zapytanie:
Pobierze pierwsze 15 rekordów z tabeli
  1. $zapytanie = mysql_query("SELECT `id` FROM `tabela` LIMIT 0,15");
  2. while($rekord = mysql_fetch_array($zapytanie)){
  3. echo '<p>'.$rekord[0].'</p>';
  4. }


Po przejściu na kolejną stronę zapytanie ulegnie zmianie i będzie wyglądać tak:
  1. $zapytanie = mysql_query("SELECT `id` FROM `tabela` LIMIT 15,30");
  2. while($rekord = mysql_fetch_array($zapytanie)){
  3. echo '<p>'.$rekord[0].'</p>';
  4. }


Oto cała magia biggrin.gif
maxil
masz gotowca ode mnie smile.gif
akurat był pod ręką tongue.gif

  1. //ustalenie parametrów stronnicowania
  2. define('DISPLAY', 10); //ilość newsów na stronie
  3. $page = (isset($_GET['page'])) ? $_GET['page'] : 1; //pobranie uchwytu do strony
  4. $getRow = ($page-1)*DISPLAY;
  5.  
  6. //zapytanie liczące ilość wpisów w bazie
  7. $query = 'SELECT COUNT(*) FROM tabela';
  8. $result = mysql_query($query, $uchwyt_do_połączenia_z_bazą_danych);
  9. list($rows) = mysql_fetch_row($result);
  10.  
  11. //pobranie odpowiedniej ilości danych
  12. $query = sprintf('SELECT komórka1, komórka2, komórka3 FROM tabela LIMIT %d,%d', $getRow, DISPLAY);
  13. $result = mysql_query($query, $uchwyt_do_połączenia_z_bazą_danych);
  14.  
  15. if (mysql_num_rows($result)) {
  16. while ($row = mysql_fetch_assoc($result)) {
  17. echo $row['komórka1'];
  18. echo $row['komórka2'];
  19. echo $row['komórka3'];
  20. }
  21. } else {
  22. echo 'brak wyników';
  23. }
  24.  
  25. if ($page > 1) {
  26. $pre = '<a href="index.php?page='.($page-1).'">Poprzednie</a> ';
  27. }
  28.  
  29. for($i = 0; $i<=floor($rows/DISPLAY); $i++) {
  30. if ($page == ($i+1)) {
  31. echo '<b>[ ' . ($i+1) . ' ]</b>';
  32. } else {
  33. echo '<a href="index.php?page='.($i+1).'">[ '.($i+1).' ]</a> ';
  34. }
  35. }
  36.  
  37. if ($page < floor($rows/DISPLAY)) {
  38. echo ' <a href="index.php?page='.($page+1).'">następne</a>';
  39. }
matuty
dzięki wielkie mordeczki biggrin.gif oto mi chodziło ale ten przeskok 0.15 do 15,30 idzie sam czy musze od nowa wpisywac komende?
kujol
Przeskok będzie automatycznie obliczany na podstawie danych zawartych w get i zmiennej.
Przykład:

  1. $iloscWynikowNaStrone = 15;
  2. $aktualnaStrona = $_GET['page']; //np. 2
  3.  
  4. $wynikiOd = ($aktualnaStrona - 1) * $iloscWynikowNaStrone; //wynik to 15
  5. $wynikiDo = $aktualnaStrona * $iloscWynikowNaStrone; //wynik to 30
  6.  
  7. $zapytanie = mysql_query("SELECT `id` FROM `tabela` LIMIT '".$wynikiOd."', '".$wynikiDo."'");
  8. while($rekord = mysql_fetch_array($zapytanie)){
  9. echo '<p>'.$rekord[0].'</p>';
  10. }
  11.  


Przy przeskoku na kolejną stronę wartość get się zmienia, a co za tym idzie także wyniki.
matuty
dzięki dzięki biggrin.gif wszyscy którzy sie udzielili dostali "pomógł" :3
pozdrawiam
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.