С Новым годом всех))
---------------------------
А теперь приступим к делу
Есть у меня код вывода поста:
<?php
$sql = "SELECT d.id, d.title, d.home_img, d.author, d.date, d.description, d.views, c.title as cat_title, c.id as cat_id FROM data d INNER JOIN connections con ON(d.id = con.pid) INNER JOIN categories c ON(con.cid=c.id) ORDER BY id DESC LIMIT $start_pos, $perpage";
$result = mysqli_query($connection, $sql);
if (!$result)
{
echo "ERROR!!";
exit (mysqli_error());
}
if (mysqli_num_rows($result) > 0)
{
$ar = array();
while ($myrow = mysqli_fetch_array($result)){
if(!isset($ar[$myrow['id']])){
$ar[$myrow['id']] = $myrow;
}
$ar[$myrow['id']]['cat_arr'][] = array('id'=>$myrow['cat_id'], 'title'=>$myrow['cat_title']);
}
foreach($ar as $p){
$hrefs = '<a><b>Категория:</b></a> ';//кстати, что это?
$hrefArr = array();
foreach($p['cat_arr'] as $a){
$hrefArr[] = "<a href='view_category.php?category={$a['id']}'> {$a['title']} </a>";
}
$hrefs .= implode(', ', $hrefArr);
$output.="<div class='post'>
<div class='post_title'><a href='view_post.php?id={$p['id']}'> {$p['title']} </a></div>
<div class='home_img'><a href='view_post.php?id={$p['id']}'><img src='{$p['home_img']}' title='{$p['title']}'></a></div>
<div class='post_author'><a><b>Автор:</b> {$p['author']} </a></div>
<div class='post_date'><a><b>Опубликовано:</b> {$p['date']} </a></div>
<div class='post_views'> {$hrefs} </div>
<div class='brief_description'> {$p['description']} </div>
<div class='more'><a>Просмотров: {$p['views']} </a> <a class='moo' href='view_post.php?id={$p['id']}'> Подробнее </a></div>
</div>";
}
echo $output;
}
else
{
echo "ERROR!!";
exit();
}
?>
/*вывод постраничной навигации*/
<?php if( $count_pages > 1 ): ?>
<div class='pagination'> <?php echo $pagination; ?> </div>
<?php endif; ?>
/**************************/
Все посты хранятся в таблице data.
И есть код постраничной навигации:
<?php
---- ПАГИНАЦИЯ ----
####-- КОЛИЧЕСТВО СООБЩЕНИЙ НА СТРАНИЦУ --####
$perpage = 6;
####-- ОПРЕДЕЛЯЕМ ОБЩЕЕ КОЛИЧЕСТВО СООБЩЕНИЙ --####
$sql6 = "SELECT COUNT(*) FROM data";
$result6 = mysqli_query($connection, $sql6);
$temp = mysqli_fetch_array($result6);
$count_goods = $temp[0];
####-- НЕОБХОДИМОЕ КОЛИЧЕСТВО СТРОНИЦ --####
$count_pages = ceil($count_goods / $perpage);
####-- МИНИМУМ 1 СТРАНИЦА --####
if( !$count_pages ) $count_pages = 1;
####-- ПОЛУЧЕНИЕ ТЕКУЩЕЙ СТРАНИЦЫ --####
if( isset($_GET['page']) ){
$page = (int)$_GET['page'];
if( $page < 1 ) $page = 1;
}else{
$page = 1;
}
####-- ЕСЛИ ЗАПРОШЕННАЯ СТРАНИЦА БОЛЬШЕ МАКСИМУМА --####
if( $page > $count_pages ) $page = $count_pages;
####-- НАЧАЛЬНАЯ ПОЗИЦИЯ ДЛЯ ЗАПРОСА --####
$start_pos = ($page - 1) * $perpage;
$pagination = pagination($page, $count_pages);
####-- ВЫБИРАЕМ $perpage СООБЩЕНИЙ --####
####-- НАЧИНАЯ С НОМЕРА $start_pos --####
---- ПОДКЛЮЧАЕМ НАВИГАЦИОННЫЕ ЭЛЕМЕНТЫ ----
function pagination($page, $count_pages){
## << < 4 5 6 7 8 > >>
## $page - АКТИВНАЯ ССЫЛКА
## $back - ССЫЛКА НАЗАД
## $forward - ССЫЛКА ВПЕРЕД
## $startpage - ССЫЛКА В НАЧАЛО
## $endpage - ССЫЛКА В КОНЕЦ
## $page2left - вторая страница слева
## $page1left - первая страница слева
## $page2right - вторая страница справа
## $page1right - первая страница справа
$uri = "?";
####-- ЕСЛИ ЕСТЬ ПАРАМЕТРЫ В ЗАПРОСЕ --####
if( $_SERVER['QUERY_STRING'] ){
foreach ($_GET as $key => $value) {
if( $key != 'page' ) $uri .= "{$key}=$value&";
}
}
if( $page > 1 ){
$back = "<a class='nav-link' href='{$uri}page=" .($page-1). "'><</a>";
}
if( $page < $count_pages ){
$forward = "<a class='nav-link' href='{$uri}page=" .($page+1). "'>></a>";
}
if( $page > 3 ){
$startpage = "<a class='nav-link' href='{$uri}page=1'>«</a>";
}
if( $page < ($count_pages - 2) ){
$endpage = "<a class='nav-link' href='{$uri}page={$count_pages}'>»</a>";
}
if( $page - 2 > 0 ){
$page2left = "<a class='nav-link' href='{$uri}page=" .($page-2). "'>" .($page-2). "</a>";
}
if( $page - 1 > 0 ){
$page1left = "<a class='nav-link' href='{$uri}page=" .($page-1). "'>" .($page-1). "</a>";
}
if( $page + 1 <= $count_pages ){
$page1right = "<a class='nav-link' href='{$uri}page=" .($page+1). "'>" .($page+1). "</a>";
}
if( $page + 2 <= $count_pages ){
$page2right = "<a class='nav-link' href='{$uri}page=" .($page+2). "'>" .($page+2). "</a>";
}
return $startpage.$back.$page2left.$page1left.'<a class="nav-active">'.$page.'</a>'.$page1right.$page2right.$forward.$endpage;
}
?>
Как видите
####-- КОЛИЧЕСТВО СООБЩЕНИЙ НА СТРАНИЦУ --####
$perpage = 6;
постраничная навигация должна выводить мне на страницу по 6 постов.
Но почему то у меня выводит по 3 поста, а где то даже и по 4.
Кто знает в чем же дело? Что мне мешает выводить по 6 постов?