Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błędne działanie, powodujące źle działającą paginację
Forum PHP.pl > Forum > Przedszkole
Mody23
Mam problem z paginacją:

  1. if ( isset($_GET['read_news']) && !(isset($_POST['submit'])) )
  2. {
  3. $id_newsa = intval($_GET['read_news']);
  4. $sql = "SELECT * FROM `comments` WHERE comment_news_id = ".$id_newsa." AND comment_approve = 0";
  5. $result = mysql_query($sql)
  6. or die('Nie udało sie pobrac danych');
  7. $znaleziono = mysql_num_rows($result);
  8. $perPage = board_config('comments_per_page');
  9. if (is_numeric($_REQUEST['page']))
  10. {
  11. $page = (int) $_REQUEST['page'];
  12. if ($page < 1)
  13. {
  14. $page = 1;
  15. }
  16. }
  17. else
  18. {
  19. $page = 1;
  20. }
  21. $block_pagination = $znaleziono/($page*$perPage);
  22. if ( !isset($_GET['page']) || isset($_GET['page']) && ( $block_pagination == 1 || $block_pagination > 1 ) )
  23. {
  24. $pag_next_on = ( ($page * $perPage) < $znaleziono ) ? TRUE : FALSE;
  25. $pag_back_on = ( ($page > 1 ) ) ? TRUE : FALSE;
  26. $separator = ( $pag_next_on == TRUE && $pag_back_on == TRUE ) ? ' | ' : '';
  27. $start = ($page - 1) * $perPage;
  28. $sql = "SELECT * FROM `comments` WHERE comment_news_id = ".$id_newsa." AND comment_approve = 0 LIMIT $start, $perPage";
  29. $result = mysql_query($sql)
  30. or die('Nie udało sie pobrac danych');
  31. $ile_wynikow = mysql_num_rows($result);
  32. if ( $ile_wynikow > 0 )
  33. {
  34. while($row = mysql_fetch_assoc($result))
  35. {
  36. $message = prep_message(htmlspecialchars($row['comment_text']));
  37. $czasik = date('d.m.Y, H:i', $row['comment_date']);
  38. $author_nick = $row['comment_from_userid'] == 0 ? '<b>' . $row['guest_nick'] . '</b>' : '<a href="loginek.php?admin=viewprofile&id=' . $row['comment_from_userid'] . '"><b>' . get_username($row['comment_from_userid']) . '</b></a>';
  39. $tabela_comments .= '<table border="1"><tr><td>Autor: ' . $author_nick . '</td></tr><tr><td>Data dodania: ' . $czasik . '</td></tr><tr><td>Tresc komenatrza:<br>' . $message . '</td></tr></table>';
  40. }
  41. }
  42. else
  43. {
  44. $tabela_comments = '<table border="1"><tr><td>BRAK KOMENTARZY</td></tr></table>';
  45. }
  46. $session_type = $_SESSION['admin'] == NULL ? '<input type="post" name="guest_nick" maxlength="25">' : '<input type="post" readonly="readonly" value="' . $userdata['nick'] . '" maxlength="25">';
  47. $tabela_add_comment = '<form action="loginek.php?read_news=' . $id_newsa . '" method="post"><table border="1"><tr><td>Autor: ' . $session_type . '</td></tr><tr><td>Komentarz:<br><textarea name="comment_message" rows="5" cols="30" tabindex="3" class="post"></textarea></td></tr><tr><td><input type="submit" name="submit" value="Wyslij"></table></form>';
  48. $newsa_id = intval($_GET['read_news']);
  49. $sql = "SELECT * FROM `news` WHERE id = ".$newsa_id."";
  50. $result = mysql_query($sql)
  51. or die('Nie udało sie pobrac danych');
  52. $ile = mysql_num_rows($result);
  53. $prev = $page - 1;
  54. $next = $page + 1;
  55. $prevLink = $_SERVER['PHP_SELF'] . '?read_news=' . $newsa_id . '&page=' . $prev;
  56. $nextLink = $_SERVER['PHP_SELF'] . '?read_news=' . $newsa_id . '&page=' . $next;
  57. $link_pagin_next = ( $pag_next_on == TRUE ) ? $link_pagin_next = '<a href="' . $nextLink . '">Next Page</a>' : '';
  58. $link_pagin_back = ( $pag_back_on == TRUE ) ? $link_pagin_back = '<a href="' . $prevLink . '">Wstecz</a>' : '';
  59. if ( $ile > 0 )
  60. {
  61. $row = mysql_fetch_assoc($result);
  62. $tresc = prep_message($row['news_text']);
  63. $title = $row['news_subject'];
  64. $newsman_name = get_username($row['newsman_id']);
  65. $czas = date('d.m.Y, H:i', $row['news_date']);
  66. $edytowany = $row['edit_newsman_id'] > 0 && $userdata['user_newsman'] == 1 ? $edytowany = '<br><br>-------------------<br>News byl ostatnio edytowany przez <a href="loginek.php?admin=viewprofile&id=' . $row['edit_newsman_id'] . '">' . get_username($row['edit_newsman_id']) . '</a>, dnia ' . date('d.m.Y, H:i', $row['edit_time_news']) . '<br>-------------------' : $edytowany = '';
  67.  
  68. $meta_keywords = board_config('meta_keywords') . ', ' . meta_tags($title);
  69. require_once('page_header.php');
  70. $body = '<table border="1"><tr><td>Dodane przez: ' . $newsman_name . '</td></tr><tr><td>Data dodania: ' . $czas . '</td></tr><tr><td>Tytul newsa: ' . $title . '</td></tr><tr><td>Tresc newsa:<br>' . $tresc . $edytowany . '</td></tr></table><br>' . $tabela_comments . $link_pagin_back . $separator . $link_pagin_next . $tabela_add_comment . '';
  71. echo $body;
  72. require_once('page_footer.php');
  73. }
  74. else
  75. {
  76. require_once('page_header.php');
  77. echo "Taki news nie istnieje!";
  78. require_once('page_footer.php');
  79. }
  80. }
  81. else
  82. {
  83. require_once('page_header.php');
  84. echo "Link jest niepoprawny!";
  85. require_once('page_footer.php');
  86. }
  87. }


Problem jest z tym fragmentem:

  1. $block_pagination = $znaleziono/($page*$perPage);
  2. echo $block_pagination;
  3. if ( !isset($_GET['page']) || isset($_GET['page']) && ( $block_pagination == 1 || $block_pagination > 1 ) )


Chodzi o to że mam ustawione iż na jedną stronę ma wyświetlać 2 komentarze. I teraz:
- Jeśli mam 4 newsy, to wszystko się ładnie wyświetla na dwóch stronach, natomiast jeśli mam 3 newsy - warunek się nie spełnia i wyrzuca mi że adres jest niepoprawny. Co jest nie tak w tym działaniu, a może w samym warunku? ;/
wookieb
Temat: Jak poprawnie zatytulowac watek
nospor
Nie działa ci dla strony nr 2? No to chyba logiczne:

$block_pagination = $znaleziono/($page*$perPage);
czyli
$block_pagination = 3/(2*2);
No i jaki jest wynik dla 3 podzilić przez 4? Czy ten wynik pasuje do warunku:
$block_pagination == 1 || $block_pagination > 1
?
wookieb
Użyj porzadnego narzędzia a nie...
https://github.com/whiteoctober/Pagerfanta
Mody23
hmm...naprawde nie da sie jakos ulozyc warunku do tego co podałem? Mam w ten sposób paginację zrobioną w wielu miejscach i po prostu sporo roboty by było teraz przy podmianie wszystkiego.
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.