Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] podział wyświetlanej treści na strony [1][2]...
-matuty-
post 2.05.2014, 16:41:52
Post #1





Goście







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
Go to the top of the page
+Quote Post
ZaXaZ
post 2.05.2014, 17:26:06
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Poczytaj o Paginacji/Stronicowaniu.


--------------------
Go to the top of the page
+Quote Post
kujol
post 2.05.2014, 17:28:22
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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

Ten post edytował kujol 2.05.2014, 17:32:51


--------------------
;)
Go to the top of the page
+Quote Post
maxil
post 2.05.2014, 21:36:55
Post #4





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


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. }
Go to the top of the page
+Quote Post
-matuty-
post 3.05.2014, 11:05:00
Post #5





Goście







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?
Go to the top of the page
+Quote Post
kujol
post 3.05.2014, 11:58:03
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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.


--------------------
;)
Go to the top of the page
+Quote Post
-matuty-
post 3.05.2014, 13:13:36
Post #7





Goście







dzięki dzięki biggrin.gif wszyscy którzy sie udzielili dostali "pomógł" :3
pozdrawiam

Ten post edytował matuty 3.05.2014, 17:08:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 09:55