За последние 24 часа нас посетил 34161 программист и 1742 робота. Сейчас ищут 977 программистов ...

Постраничная навигация

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 3 мар 2009.

  1. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Сделал вывод постраничной навигации, проблема в том что в страничной навигации выводится больше страниц чем должно быть, т.е. последние становятся просто пустыми.
    Вот код:
    PHP:
    1.  
    2.  
    3. <?php
    4.  
    5. $result77 = mysql_query("SELECT str FROM options", $db);
    6. $myrow77 = mysql_fetch_array($result77);
    7. $num = $myrow77["str"];
    8. @$page = $_GET['page'];
    9. $result00 = mysql_query("SELECT COUNT(*) FROM tabl WHERE id_bukva='$bukva' ");
    10. $temp = mysql_fetch_array($result00);
    11. $posts = $temp[0];
    12. $total = (($posts - 1) / $num)+1;
    13. $total =  intval($total);
    14. $page = intval($page);
    15. if(empty($page) or $page < 0) $page = 1;
    16.   if($page > $total) $page = $total;
    17. $start = $page * $num - $num;
    18.  
    19. $result = mysql_query ("SELECT * FROM xxx WHERE bukva='$bukva'   LIMIT $start, $num",$db);
    20. $myrow = mysql_fetch_array ($result);
    21.  
    22.  
    23. do {
    24.    $start++;
    25. printf ("    
    26.          <tr class='cwet_text_tabl'>
    27.            <td align='center'>%s</td>
    28.            <td>&nbsp; <a href='yyy.php?id=%s'>%s</a></td>
    29.            <td align='center'><strong>%s</strong></td>
    30.            <td align='center'><strong>%s</strong></td>
    31.          </tr>",
    32. $start, $myrow["id"],$myrow["1"],$myrow["2"],$myrow["3"]);
    33.     }
    34.    while ($myrow = mysql_fetch_array ($result));
    35.    printf ("</table>");
    36.  
    37. if ($page != 1) $pervpage = '<a href=view_bukva.php?bukva='.$bukva.'&page=1>Первая</a> | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 1) .'>Предыдущая</a> | ';
    38. if ($page != $total) $nextpage = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_bukva.php?bukva='.$bukva.'&page=' .$total. '>Последняя</a>';
    39. if($page - 5 > 0) $page5left = ' <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
    40. if($page - 4 > 0) $page4left = ' <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
    41. if($page - 3 > 0) $page3left = ' <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
    42. if($page - 2 > 0) $page2left = ' <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
    43. if($page - 1 > 0) $page1left = '<a href=view_bukva.php?bukva='.$bukva.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
    44. if($page + 5 <= $total) $page5right = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
    45. if($page + 4 <= $total) $page4right = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
    46. if($page + 3 <= $total) $page3right = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
    47. if($page + 2 <= $total) $page2right = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
    48. if($page + 1 <= $total) $page1right = ' | <a href=view_bukva.php?bukva='.$bukva.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
    49. if ($total > 1)
    50. {
    51. Error_Reporting(E_ALL & ~E_NOTICE);
    52. echo "<div class=\"pstrnav\">";
    53. echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
    54. echo "</div>";
    55.  
    56.  
    Не знаю уже что тут может быть. Все перепробовал(( Подскажите пожалуйста в чем ошибка?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1.  
    2. <?
    3.  
    4. # выдача страницного бара
    5. function OOPSPageBar($url,$num_rows,$page,$ROWS_ON_PAGE,$COL_ON_BAR,$class1="pageurl",$class2="pagesel") {
    6.     global $OOPSGlobal;
    7.  
    8.     if(!isset($page)) $page = 1;
    9.  
    10.     $ret = "";
    11.  
    12.     $pages = intval($num_rows / $ROWS_ON_PAGE);
    13.  
    14.     if($pages == 0) return '<a href="$SID_BEFOREPAGE=1" class=pagesel>1</a>';
    15.  
    16.     if($pages * $ROWS_ON_PAGE < $num_rows) $pages++;
    17.  
    18.     if($pages < $COL_ON_BAR*2+1)
    19.         $bar = intval($pages)-1;
    20.     else
    21.         $bar = $COL_ON_BAR;
    22.  
    23.     $page_left = $page - $bar;
    24.     $page_right = $page + $bar;
    25.     if($page_left < 1) {
    26.         $page_left = 1;
    27.         $page_right = $page_left + $bar*2;
    28.     }
    29.     if($page_right > $pages) {
    30.         $page_right = $pages;
    31.         $page_left = $page_right - $bar*2;
    32.         if($page_left < 1)
    33.             $page_left = 1;
    34.     }
    35.     if($page_left != 1)
    36.         $ret .= '<a href="'.$url.'PAGE=1" class=pageurl>«</a>';
    37.     for ($i = $page_left; $i <= $page_right ;$i++) {
    38.         if( $i == $page )
    39.             $ret .= '<span class=pagesel>'.$i.'</span>';
    40.         else
    41.             $ret .= '<a href="'.$url.'PAGE='.$i.'" class=pageurl>'.$i.'</a>';
    42.     }
    43.     if($page_right != $pages)
    44.         $ret .= '<a href="'.$url.'PAGE='.$pages.'" class=pageurl>»</a>';
    45.     return $ret;
    46. }
    47.  
    48. ?>
    49.  
    юзание

    PHP:
    1.  
    2. <?
    3.  
    4. print OOPSPageBar('/news/',$CNT,$PAGE,$ROWS_ON_PAGE,10,"pagesel","pageurl"));
    5.  
    6. ?>
    7.  
     
  3. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    В мемориз :) Прикрепить наверх :)
     
  4. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Все сделал)) Неправильно указал запрос к БД