Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Stronicowanie, Problem z wyświetleniem danych
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No co się dziwisz, zrobiłeś ponownie zapytanie. Powinieneś wykorzystać pierwszy kod, szczególnie od 52 linii. Zmodyfikuj do wedle uznania...

Ten post edytował Kshyhoo 23.06.2010, 20:09:06
Go to the top of the page
+Quote Post
Barcelona
post
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


@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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:31