Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Stronicowanie wyników
nawasaqi
post 12.05.2016, 08:49:15
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Witam serdecznie próbuję zrobić sobie stronicowanie i za chiny ludowe coś mi nie wychodzi... Jakby ktoś mógł podpowiedzieć co robię nie tak z góry dziękuję za pomoc.

  1. <?php
  2.  
  3. define('ILOSC_WYNIKOW_NA_STRONIE', 25);
  4. $db = new mysqli('localhost', 'root', 'pass', 'lekcja20')or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysqli_error());;
  5. $db -> query("SET CHARSET utf8");
  6. $db -> query("SET NAMES 'UTF-8' COLLATE 'utf8_polish_ci'");
  7. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty malejąco, zaczynając od $_GET['porcja']*ILOSC_NA_STRONIE
  8. $zapytanie = "SELECT * FROM dane ORDER BY ID DESC LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  9. $wynik = $db->query($zapytanie); // wykonujemy zapytanie
  10.  
  11.  
  12. #Wyświetlanie wyników
  13. while ($baza = $wynik->fetch_assoc())
  14. {
  15. echo $link = ($baza['link'].'<br />');
  16.  
  17. }
  18.  
  19.  
  20. //pobieramy ilosc danych w bazie
  21. $zapytanie = "SELECT COUNT(*) FROM dane";
  22. $wynik = $db->query($zapytanie);
  23. list($iloscWpisow) = $db->fetchRow($wynik);
  24.  
  25. //jeśli nie jesteśmy na pierwszej stronie
  26. if($_GET['porcja']>0)
  27. {
  28. //wyswietlamy link do poprzedniej strony
  29. echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  30. }
  31.  
  32. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  33. echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
  34. }
  35. //jeśli nie jesteśmy na ostatniej stronie
  36. if($_GET['porcja']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  37. //wyświetlamy link do nastepnej strony
  38. echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
  39. }
  40.  
  41.  
  42.  
  43.  


Ten post edytował nawasaqi 12.05.2016, 08:51:15
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2016, 08:51:54
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Oświecisz nas co nie działa i z czym problem?
Go to the top of the page
+Quote Post
Tomplus
post 12.05.2016, 09:24:20
Post #3





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Skrypt działa jeżeli w URL masz informację o "porcja"

A ogólnie:
mysql_escape_string - jest wycofane, więc lepiej zrobić np.: ".is_numeric($_GET['porcja'])?$_GET['porcja']:1."

sprawdz czy masz jakiś wynik w $iloscWpisow
Go to the top of the page
+Quote Post
nawasaqi
post 12.05.2016, 13:32:44
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Cytat(Pyton_000 @ 12.05.2016, 09:51:54 ) *
Oświecisz nas co nie działa i z czym problem?



Zwraca mi 25 rekordów tak jak chce ale np. nie mam w ogóle linków do następnych stron (nawigacyjnych linków). Wartość dla zmiennej $iloscWpisow jest pusta. I nie wiem gdzie jest błąd ;/
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2016, 13:40:00
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


No to dla czego nie pójdziesz po sznurku do kłębka? Sprawdzaj od dołu do góry zmienną i sprawdzaj wyniki.
Go to the top of the page
+Quote Post
nawasaqi
post 12.05.2016, 13:57:55
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Wychodzi mi, że nie pobiera mi ilości danych z bazy, nie zlicza ich...
  1. //pobieramy ilosc danych w bazie
  2. $zapytanie = "SELECT COUNT(*) FROM dane";
  3. $wynik = $db->query($zapytanie);
  4. list($iloscWpisow) = $db->fetchRow($wynik);


Ale dlaczego nie mam pojęcia...

Zapytanie do bazy w phpmyadmin wykonuje prawidłowo z SQL wynik podaje prawidłowy...
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2016, 14:04:01
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


var_dump($db->fetchRow($wynik));

i będziesz wiedział dla czego

PS. Zobacz też w Manualu jak działa list()

Ten post edytował Pyton_000 12.05.2016, 14:14:08
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: 8.07.2025 - 01:07