[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничная навигация, про*лема с выводом
Страницы: 1, 2
Earl
Здравствуйте дорогие друзья!
С Новым годом всех))
---------------------------

А теперь приступим к делу

Есть у меня код вывода поста:

<?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 постов?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.