Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql]problem ze stronicowaniem zapytania
Forum PHP.pl > Forum > PHP
jagwie
Witam potrzebuje zrobić stronicowane linków
znalazłem taki skrypt lecz nie wiem dlaczego wywala błąd w 14 wierszu
  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 20);
  3. /*
  4.  * połączenie z bazą, itp.
  5.  */
  6.  
  7. $SQL = "SELECT SQL_CALC_FOUND_ROWS link
  8. FROM miasta_lista
  9. WHERE id_miasto
  10. ORDER BY link ASC "
  11. .mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  12. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['porcja']*ILOSC_NA_STRONIE
  13. $RES = mysql_query($SQL); // wykonujemy zapytanie
  14. while($AFR = mysql_fetch_assoc($RES)){
  15. /*Wyświetlanie wyników, przykładowo:*/
  16. echo 'tytuł: '.$AFR['link'].'<br />';
  17. }
  18.  
  19. // w inny sposób pobieramy ilosc danych w bazie
  20. $SQL = "SELECT FOUND_ROWS() as Ilosc";
  21. $RES= mysql_query($SQL);
  22. list($iloscWpisow) = mysql_fetch_row($RES);
  23.  
  24. //Teraz wypadało by wyświetlić jakąś nawigację
  25.  
  26. //jeśli nie jesteśmy na pierwszej stronie
  27. if($_GET['porcja']>0){
  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. ?>
Fifi209
A podzielisz się z Nami tym błędem czy będziemy zgadywali ?

W zapytaniu brakuje limitu.
djgarsi
Łap mój kod którego uzywam.smile.gif działa na 100% więc nie będzie błędów.

  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 30);
  3.  
  4.  
  5. /*
  6.  * połączenie z bazą, itp.
  7.  */
  8.  
  9.  
  10. $SQL = "SELECT COUNT(*) FROM tabela"; // Zapytanie liczące ilość wpisów w bazie
  11. $RES = mysql_query($SQL);
  12. list($iloscWpisow) = mysql_fetch_row($RES);
  13.  
  14. $SQL = "SELECT *
  15. FROM tabela
  16. ORDER BY id DESC
  17. LIMIT ".mysql_escape_string((int)$_GET['strona']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  18. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['strona']*ILOSC_NA_STRONIE
  19. $RES = mysql_query($SQL); // wykonujemy zapytanie
  20. while($AFR = mysql_fetch_assoc($RES)){
  21. /*Wyswietlanie wyników, przykładowo:*/
  22. echo 'Pobran: '.$AFR['pobran'].'<br />';
  23. }
  24.  
  25. //Teraz wypadało by wyświetlić jakąś nawigację
  26.  
  27. //jesli nie jesteśmy na pierwszej stronie
  28. if($_GET['strona']>0){
  29. //wyswietlamy link do poprzedniej strony
  30. echo '<a href="?strona='.($_GET['strona']-1).'">Poprzednie</a> ';
  31. }
  32.  
  33. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  34. echo '<a href="?strona='.($i).'">[ '.($i+1).' ]</a> ';
  35. }
  36. //jeśli nie jesteśmy na ostatniej stronie
  37. if($_GET['strona']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  38. //wyswietlamy link do nastepnej strony
  39. echo ' <a href="?strona='.($_GET['strona']+1).'">następne</a>';
  40. }
  41.  
  42. ?>
robson_admin
Może spróbuj zamiast mysql_fetch_assoc użyć mysql_fetch_array
Fifi209
Cytat(robson_admin @ 12.01.2010, 10:18:09 ) *
Może spróbuj zamiast mysql_fetch_assoc użyć mysql_fetch_array


Może spróbuj użyć głowy i wejść na manual, aby zobaczyć czym się różnią ?
jagwie
Witam ponownie
Umieściłem stronicowanie na stronie wyświetlenie pierwszej podstrony jest ok
lecz jeśli klikam w kolejne podstrony to wyświetla się to samo co na pierwszej dodam że
strona jest w smarty
w pliku htaccess wstawiłem

RewriteRule ^_wiecej/$ index.php?dzial=wiecej [L]

RewriteRule ^_wiecej/([0-9]+)/$ index.php?dzial=wiecej&strona=$3 [L]
Jaki jest powód powtarzania się wyników
Działanie można zobaczyć na wejdz

  1. <?php
  2.  
  3. /* ------------------------------------------------------------------- */
  4.  
  5. if (eregi("wiecej.inc.php", $_SERVER['PHP_SELF'])) {
  6. Header("Location: index.php");
  7. die();
  8. }
  9.  
  10. define('ILOSC_WYNIKOW_NA_STRONIE', 30);
  11. $SQL = "SELECT COUNT(*) FROM miasta_lista WHERE id_miasto"; // Zapytanie liczące ilość wpisów w bazie
  12.  
  13. $RES = mysql_query($SQL);
  14.  
  15. list($iloscWpisow) = mysql_fetch_row($RES);
  16.  
  17. $SQL = "SELECT link
  18.  
  19. FROM miasta_lista
  20. WHERE id_miasto ORDER BY link ASC
  21.  
  22. LIMIT ".mysql_escape_string((int)$_GET['strona']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  23.  
  24. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['strona']*ILOSC_NA_STRONIE
  25.  
  26. $RES = mysql_query($SQL); // wykonujemy zapytanie
  27.  
  28. while($AFR = mysql_fetch_assoc($RES)){
  29.  
  30. /*Wyswietlanie wyników, przykładowo:*/
  31.  
  32. echo ''.$AFR['link'].'<br />';
  33.  
  34. }
  35. //Teraz wypadało by wyświetlić jakąś nawigację
  36.  
  37. //jesli nie jesteśmy na pierwszej stronie
  38.  
  39. if($_GET['strona']>0){
  40.  
  41. //wyswietlamy link do poprzedniej strony
  42.  
  43. echo '<a href="_wiecej/'.($_GET['strona']-1).'/">Poprzednie</a> ';
  44.  
  45. }
  46.  
  47. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  48.  
  49. echo '<a href="_wiecej/'.($i).'/">[ '.($i+1).' ]</a> ';
  50.  
  51. }
  52. //jeśli nie jesteśmy na ostatniej stronie
  53. if($_GET['strona']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  54. //wyswietlamy link do nastepnej strony
  55. echo ' <a href="_wiecej/'.($_GET['strona']+1).'/">następne</a>';
  56. }
  57.  
  58. ?>


prosiłbym o pomoc w rozwiązaniu problemu
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.