Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Stronicowanie wyników
Forum PHP.pl > Forum > Przedszkole
nawasaqi
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.  
Pyton_000
Oświecisz nas co nie działa i z czym problem?
Tomplus
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
nawasaqi
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 ;/
Pyton_000
No to dla czego nie pójdziesz po sznurku do kłębka? Sprawdzaj od dołu do góry zmienną i sprawdzaj wyniki.
nawasaqi
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...
Pyton_000
var_dump($db->fetchRow($wynik));

i będziesz wiedział dla czego

PS. Zobacz też w Manualu jak działa list()
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.