Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyniki zapytania SQL podzielone na strony
Forum PHP.pl > Forum > PHP
oximus
Witam,
mam dosyć sporo danych pobranych z bazy w dwóch słupkach.
Jest jakiś fajny sposób, by przeglądać je tak jak wyniki wyszukiwania google?
Czyli następna strona, poprzednia strona na przykład po 5 wyników na stronkę?
Pozdrawiam.
sobstel
wpisz w googlach albo w wyszukiwarce na forum "stronnicowanie", na pewno znajdziej wiele ciekawych rzeczy na ten temat.
militis
wszystko co ci potrzebne to:

-SQL: LIMIT x,y
-dynamiczne generowanie zapytan
-dobre checi
-google
oximus
Dzięki już mam, nie wiedziałem, że to się zwie stronicowanie.

Może mi ktoś powiedzieć, jak w następnej stronie wyniku zapamiętać dane z formularza bo się gubią i następna strona nie pokazuje już wyniku.

  1. <?php
  2.  
  3. echo'<form method=\"GET\">';
  4. echo &#092;"Wprowadź datę 'OD'/ Input date 'FROM' \";
  5. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_rok SIZE=4 VALUE=$rok maxlength=4>\";
  6. echo'-';
  7. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_mc SIZE=2 VALUE=$mc maxlength=2>\";
  8. echo'-';
  9. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_dzien SIZE=2 VALUE=$dzien2 maxlength=2>\";
  10. echo&#092;" \";
  11. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_godz SIZE=2 VALUE=00 maxlength=2>\";
  12. echo':';
  13. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_min SIZE=2 VALUE=00 maxlength=2>\";
  14.  
  15.  
  16. echo'<BR>';
  17. echo'<BR>';
  18. echo &#092;"Wprowadź datę 'DO'/ Input date 'TO' \";
  19. echo&#092;"<INPUT TYPE=text NAME=data_all_errors_rok_koniec SIZE=4 VALUE=$rok maxlength=
  20. >\";
  21. echo'-';
  22. echo\"<INPUT TYPE=text NAME=data_all_errors_mc_koniec SIZE=2 VALUE=$mc maxlength=2>\";
  23. echo'-';
  24. echo\"<INPUT TYPE=text NAME=data_all_errors_dzien_koniec SIZE=2 VALUE=$dzien maxlen
  25. th=2>\";
  26. echo\" \";
  27. echo\"<INPUT TYPE=text NAME=data_all_errors_godz_koniec SIZE=2 VALUE=00 maxlength=2>\";
  28. echo':';
  29. echo\"<INPUT TYPE=text NAME=data_all_errors_min_koniec SIZE=2 VALUE=00 maxlength=2>\";
  30.  
  31. echo\"<INPUT TYPE=hidden NAME=lista1 VALUE=$lista1>\";
  32. ?>


.
.
.
.
  1. <?php
  2. $search_all_errors=$_GET['search_all_errors'];
  3.  
  4. $query=&#092;"SELECT Whenl, Text FROM Events WHERE Crossing_Id='$lista1' AND Whenl>'($data_all_errors_rok-$data_all_errors_mc-$data_all_errors_dzien $data_all_errors_godz:$data_all_errors_min)' AND Whenl<'($data_all_errors_rok_koniec-$data_all_errors_mc_koniec-$data_all_errors_dzien_koniec $data_all_errors_godz_koniec:$data_all_errors_min_
    koniec)' ORDER BY Whenl DESC\";
  5.  
  6. $result=mysql_query($query) or die (mysql_error());
  7. $rekordy=mysql_num_rows($result);
  8. if ($rekordy==0){
  9. echo'<center><table width=80% border=0><tr><td align=\"center\">';
  10. echo'<b><Font color=\"#FF6600\"><Font size=\"4\">';
  11. echo &#092;"Brak danych / No data\";
  12. echo'</td></tr></table><br><br></font></font></b>';
  13. }
  14.  
  15. $max_poz = 10;
  16.  
  17. echo &#092;"<p align=center>\";
  18.  
  19. // jeśli wchodzimy bez parametru $page pierwsza strona
  20. // ustawia się jako pierwsza i pętla startuje od cyfry 0
  21.  
  22. If ($page==&#092;"\")
  23.  {
  24. $page=1;
  25. $start=0;
  26.  }
  27.  
  28. else
  29.  
  30. // jeśli wchodzimy z parametrem pierwsza strona
  31. // ustawia się z podanego parametru $page i pętla startuje od parametru $page
  32.  
  33.  {
  34. $start=$page*$max_poz;
  35. $start=$start-$max_poz;
  36.  }
  37.  
  38. $stron = ceil ($rekordy/$max_poz);  // instrukcja ceil zaokrągla ułamki w górę do pełnej liczby
  39.  
  40. // wykonujemy pętelki z podziałem na odnośniki do poszczególnych stron
  41.  
  42. If ($page>1)
  43.  {
  44. $strona=$page-1;
  45. echo &#092;"<a href='pobor_zdarzen.php?page=$strona&search_all_errors=$search_all_errors'>poprzednie</a> &nbsp; \";
  46.  }
  47.  
  48. For ($index=1;
  49.  $index <= $stron;
  50.  $index++)
  51.  {
  52. If (($page==$index) and ($stron!=1))
  53.  {
  54. echo&#092;"<font color=red><b>$index</b></font> | \";
  55. $next=$page+1;
  56.  }
  57. elseif ($stron!=1)
  58.  echo&#092;" <b><a href='pobor_zdarzen.php?page=$index&search_all_errors=$search_all_errors'>$index</a></b> | \";
  59.  
  60. If (($page>0) and ($index==$stron) and ($page<$stron))
  61.  echo &#092;" &nbsp; <a href='pobor_zdarzen.php?page=$next&search_all_errors=$search_all_errors'>następne</a>\";
  62.  }
  63.  
  64. // pobierasz sobie z bazy dane w zakresie oznaczonym $start, $max_poz (czyli z aktualnej strony na której jesteś)
  65.  
  66. $zapytanie=&#092;"SELECT Whenl, Text FROM Events WHERE Crossing_Id='$lista1' AND Whenl>'($data_all_errors_rok-$data_all_errors_mc-$data_all_errors_dzien $data_all_errors_godz:$data_all_errors_min)' AND Whenl<'($data_all_errors_rok_koniec-$data_all_errors_mc_koniec-$data_all_errors_dzien_koniec $data_all_errors_godz_koniec:$data_all_errors_min_
    koniec)' ORDER BY Whenl DESC LIMIT $start, $max_poz\";
  67.  $result = mysql_query($zapytanie);
  68.  
  69. while(list($Whenl, $Text)=mysql_fetch_row($result)){.....
  70. ?>
sobstel
mozesz umiescic w adresie i pobierac za pomoca metody get. tak najczesciej jest to rozwiazane np. na google tez (podejrzyj jakie sa linki)
militis
cookie/sesja/get/input type=hidden

Wybierz sobie któreś.
oximus
Mam teraz taki problem, że w wyniku zapytania dostaję ponad 1000 stron, po 10 wyników na kazdą. Od 1 do 1000 to sporo miejsca na stronie a wyswietlaja sie wszystkie wyniki.
Da sie w jakiś prosty sposób przerobić powyższy kod na taki, żeby wyświetlał np takie coś:

1,2,3,4,5,6,7,8,9,10,.... 11-50,50-100, itd?
a1EL
Ja znalazlem tutaj niewiem czy dziala http://forum.php.pl/index.php?showtopic=27...l=stronicowanie
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.