Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Stronicowanie
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, mam funkcje która odpowiedzialna jest za stronicowanie wyswietlanych danych.

Funkcja wygląda nastepująco:

  1. <?
  2. function pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s) {
  3. $stron = ceil($rekordow/$na_stronie);
  4. if ($s<1) $s=1;
  5. if ($s>$stron) $s=$stron;
  6. $koniec = $s+$na_pasku;
  7. if ($s<=$na_pasku) $koniec = $na_pasku*2+1;
  8. if ($koniec>$stron) $koniec = $stron;
  9. $start = $koniec-$na_pasku*2;
  10. if ($start<1) $start=1;
  11. if ($s>1) $p = "<a href='$skrypt".($s-1)."'>&lt;&lt;&lt;</a>";
  12. else $p = "<span style='color:gray'>&lt;&lt;&lt;</span>";
  13. if ($s<$stron) $n = "<a href='$skrypt".($s+1)."'>&gt;&gt;&gt;</a>";
  14. else $n = "<span style='color:gray'>&gt;&gt;&gt;</span>";
  15. for ($i=$start; $i<=$koniec; $i++) {
  16. if ($i==$s) $l .= "&nbsp;<span style='color:#cc0000;'><b>$i</b></span>&nbsp;";
  17. else $l .= "&nbsp;<a href='$skrypt$i'>$i</a>&nbsp;";
  18. }
  19. if ($rekordow<1) $wynik = "brak informacji spełniających kryteria wyszukiwania";
  20. else $wynik = "znalezionych: $rekordow, strona $s z $stron<br />";
  21. if ($stron>1) $wynik .= "$p&nbsp; - $l - &nbsp;$n";
  22. return $wynik;
  23. }
  24.  
  25. $s = ($_GET["s"]>1)?number_format($_GET["s"], 0, "", ""):1; // numer strony
  26. $na_stronie = 10; // liczba rekordow widocznych na stronie
  27. $na_pasku = 5; // liczba odpowiedzi/2 na pasku
  28. $skrypt = "?strona=ogloszenia&pokaz=wszystkie&s="; // skrypt do wysyłania danych
  29.  
  30. if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
  31. and mysql_select_db($sql_baza)) {
  32.  
  33. $start = ($s-1)*$na_stronie;
  34. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS *
  35. FROM tabela LIMIT $start, $na_stronie
  36. ");
  37. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  38.  
  39. // ponownie szuka, gdy ktos celowo wpisze "s" większe od ilości stron:
  40. // możesz pominąć, służy do estetycznej obsługi danych
  41. $stron = ceil($rekordow/$na_stronie);
  42. if ($s>$stron and $rekordow>0) {
  43. $start = ($stron-1)*$na_stronie;
  44. $wynik = mysql_query("SELECT *
  45. FROM tabela LIMIT $start, $na_stronie
  46. ");
  47. }
  48.  
  49. }
  50.  
  51. echo "<p style='text-align:center;'>";
  52. echo pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s);
  53. echo "</p>";
  54.  
  55. while($wynik and $dane = mysql_fetch_assoc($wynik)) {
  56. echo "<p>";
  57. foreach($dane as $pole) echo " [$pole] ";
  58. // lub echo $dane["id"], itd...
  59. echo "</p>";
  60. }
  61. ?>


W tym ostatnim while umieściłem to co ma się stronocować czyli:

  1. $zapytanie = mysql_query("SELECT * FROM `ogloszenia` WHERE `stan` = '1' order by id ASC") or die(mysql_error());
  2. $wykonaj = mysql_num_rows($zapytanie);
  3. while($rekord=mysql_fetch_array($zapytanie))
  4. {
  5. <table border=\"0\" width=\"100%\" align=\"center\"><tr><td><img src=\"./img/mini/".$rekord['obrazek'].".jpg\" align=\"middle\" border=\"0\"></td><td>
  6. <table summary=\"Opis ogłoszenia\" class=\"servicesT\" cellspacing=\"0\" width=\'100%\">
  7. <tr><td colspan=\"2\" class=\"servHd\">Opis ogłoszenia</td></tr>
  8. <tr>
  9. <td>Marka</td>
  10. <td class=\"servBodL\">".$rekord['marka']."</td>
  11. </tr>
  12. <tr>
  13. <td>Model</td>
  14. <td class=\"servBodL\">".$rekord['model']."</td>
  15. </tr>
  16. <tr>
  17. <td>Rok produkcji:</td>
  18. <td class=\"servBodL\">".$rekord['rocznik']."</td>
  19. </tr>
  20. <tr>
  21. <td>Cena:</td>
  22. <td class=\"servBodL\">".$rekord['cena']." zł</td>
  23. </tr>
  24. <tr><td colspan=\"2\" class=\"servHd\"><a href=\"?strona=pokaz&id=".$rekord['id']."\">Pokaż więcej informacji</a></td></tr>
  25. </table></tr>
  26. </table><br>";
  27. }


Porobiło strony, tylko że wyniki pomnożyły się i na każdej stronie wyświetliły sie taka sama ilość

Prosiłbym o pomoc
Kshyhoo
No co się dziwisz, zrobiłeś ponownie zapytanie. Powinieneś wykorzystać pierwszy kod, szczególnie od 52 linii. Zmodyfikuj do wedle uznania...
Barcelona
@Kshyhoo dzięki za rade, już działa.

Wywaliłem tego ostatniego while i zamiast niego dałem moje zapytanie z parametrem LIMIT, i już działa. Wielkie dzieki
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.