Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronnicowanie nie działa za dobrze
Forum PHP.pl > Forum > PHP
szmerak
Mam tutaj taką funkcję która jest odpowiedzialna za wyświetlanie oraz dzielenie na strony wyników jak widać zmienna $perPage jest ustawiona na 8. Cały problem polega na tym że coś jest nie tak ze stronnicowaniem, gdy 2 ostatnie wyniki przypadają na ostatnią strone nie wyświetla Następna strona zakładając że strony idą tak 8|8|8|2 skrypt w tym wypadku << wyświetli tylko 123 a 4 strony nie wyświetli dopiero po dodaniu jednego wyniku więcej 8|8|8|3 wyświetli wszystkie podstrony. Nie wiem gdzie mam błąd. Mam nadzieje że zrozumiale wytłumaczyłem problem.

  1. function showLinks()
  2. {
  3. $subpage = $_GET['page'];
  4. $perPage = 8;
  5. if (!empty($_GET['subpage']) && (is_numeric($_GET['subpage'])))
  6. {
  7. $subpage = (int) $_GET['subpage'];
  8. }
  9. if ($subpage < 1)
  10. {
  11. $subpage = 1;
  12. }
  13. $start = ($subpage - 1) * $perPage;
  14. $sql = "SELECT id, nazwa, data, godzina, nick, opis, views from filmiki order by id DESC limit $start,$perPage";
  15. $query = mysql_query($sql);
  16. $max_zapytanie = "SELECT * FROM filmiki";
  17. $max_idzapytania = mysql_query($max_zapytanie);
  18. if(mysql_real_escape_string((!isset($_GET['id'])) or empty($_GET['id'])))
  19. {
  20. echo '<table border=1 cellpadding=2 cellspacing=0 width=500>';
  21. while ($row = mysql_fetch_array($query))
  22. {
  23. <tr>
  24. <td width=70 height=70><img src=youtube-icon.png width=70 height=70>
  25. <td width=500 height=70 align=left valign=top style="margin: 4px;"><a href="video.php?id='.$row[0].'" class="link">'.$row[1].'</a>
  26. <br>Opis: <font color=brown>'.$row[5].'</font><br>Dodał: <b>'.$row[4].'</b> || Data: '.$row[2].' || Godzina: '.$row[3].'<br>
  27. Liczba odsłon: <b>'.$row[6].'</b></td>
  28. </tr>
  29. ';
  30. }
  31. echo '</table>';
  32. }
  33. $prev = $subpage - 1;
  34. $next = $subpage + 1;
  35. $prevLink = 'index.php?page='.$prev;
  36. $nextLink = 'index.php?page='.$next;
  37. $ilosc_wierszy = mysql_num_rows($max_idzapytania);
  38. if($subpage > 1)
  39. echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
  40. $stron=round($ilosc_wierszy/$perPage);
  41. for($i=1; $i<=$stron; ++$i)
  42. {
  43. if($i==$subpage)
  44. echo $i;
  45. else
  46. echo '<a style="text-decoration: none;" href="index.php?page='.$i.'">'.$i.' </a>';
  47. }
  48. if($subpage < $stron)
  49. echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
  50.  
  51. }
CuteOne
  1. if($subpage > 1) {
  2.  
  3. echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
  4. }
  5.  
  6. $stron = ceil($ilosc_wierszy/$perPage); // wydaje mi sie ze tu tkwil blad ;)
  7. for($i=1; $i<=$stron; $i++)
  8. {
  9. if($i==$subpage)
  10. echo $i;
  11. else
  12. echo '<a style="text-decoration: none;" href="index.php?page='.$i.'">'.$i.' </a>';
  13. }
  14.  
  15. if($subpage < $stron) {
  16.  
  17. echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
  18. }
  19.  
  20. }
szmerak
Dzięki ci wielkie!!!!!!!!!! głowie sie z tym od dłuższego czasu!!!
nospor
A ja mam jeszcze takie zadanie pomocnicze (tak wiem ze problem jest juz "rozwiazany").
Wygeneruj sobie powiedzmy 500tys rekordow filmikow (z byle jaka trescia) a nastepnie odpal swoj skrypt. Zwroc uwage na czas wykonania oraz zajetosc pamieci (o ile serwer ci nie padnie)

szmerak
To jak to zoptymalizować? wsumie to myślałem że dobrze jest ten kod napisany, ja żadnych innych pomysłów już nie mam.

Może klasy?
nospor
liczbe rekordow nie pobiera sie przez
$max_zapytanie = "SELECT * FROM filmiki";
$max_idzapytania = mysql_query($max_zapytanie);
$ilosc_wierszy = mysql_num_rows($max_idzapytania);

A poprzez
select count(*) from filmiki
szmerak
Dzięki wielkie zapomniało mi się o count. Teraz będzie ładnie śmigało ;]
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.