|
 56 байт |
|
| Здраствуйте, прикрутил пагинацию к php сайту, все работает нормально, но есть одна проблема, при выводе новостей добавляются пустые поля, к примеру если задан вывовод 10 новостей на страницу, но в базе всего 8 новостей, скрипт всеравно выведет 10: 8 новостей и 2 пустые. Сильно прошу не пинать, php изучаю недавно, поетому и прошу вашей помощи.
P.S: Ссылка на скрипт во вложении, скрипт с етого сайта | |
|
|
|
|
|
|
|
для: melomaniac
(04.02.2012 в 11:08)
| | хз что там может не работать, у меня так
<?
$num = 5;
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных. Это нужно для того чтобы посчитать колличество страниц
$result00 = mysql_query("SELECT COUNT(*) FROM comments WHERE place='$id' AND moderator='1'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_select.php?id='.$id.'&page=1&click5>Первая</a> <a href=view_select.php?id='.$id.'&page='. ($page - 1) .'&click5>Предыдущая</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href=view_select.php?id='.$id.'&page='. ($page + 1) .'&click5>Следующая</a> <a href=view_select.php?id='.$id.'&page=' .$total. '&click5>Последняя</a>';
// Находим пять ближайших станиц с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_select.php?id='.$id.'&page='. ($page - 5) .'&click5>'. ($page - 5) .'</a> ';
if($page - 4 > 0) $page4left = ' <a href=view_select.php?id='.$id.'&page='. ($page - 4) .'&click5>'. ($page - 4) .'</a> ';
if($page - 3 > 0) $page3left = ' <a href=view_select.php?id='.$id.'&page='. ($page - 3) .'&click5>'. ($page - 3) .'</a> ';
if($page - 2 > 0) $page2left = ' <a href=view_select.php?id='.$id.'&page='. ($page - 2) .'&click5>'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = ' <a href=view_select.php?id='.$id.'&page='. ($page - 1) .'&click5>'. ($page - 1) .'</a> ';
if($page + 5 <= $total) $page5right = ' <a href=view_select.php?id='.$id.'&page='. ($page + 5) .'&click5>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' <a href=view_select.php?id='.$id.'&page='. ($page + 4) .'&click5>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' <a href=view_select.php?id='.$id.'&page='. ($page + 3) .'&click5>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' <a href=view_select.php?id='.$id.'&page='. ($page + 2) .'&click5>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a href=view_select.php?id='.$id.'&page='. ($page + 1) .'&click5>'. ($page + 1) .'</a>';
if ($total > 1)
{
echo "<div class='pstrnav2'>";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<span class=page>'.$page.'</span>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
$result000 = mysql_query("SELECT * FROM comments WHERE place='$id' AND moderator='1' ORDER BY id DESC LIMIT $start, $num");
$myrow000 = mysql_fetch_array($result000);
?>
|
ссылки/запросы подправить и все готово | |
|
|
|
|
|
|
|
для: ladan
(04.02.2012 в 11:13)
| | Я не говорю что не работает, все работает, но выводятся пустые значения, как говорил выше, если выводим 10 новостей на страницу к примеру, но в базе физически всего 2 новости, то всеравно получим на странице 10 новостей 2новости+8 пустых значений, вот в чем прикол...
P.S: спасибо за помощь | |
|
|
|
|
|
|
|
для: melomaniac
(04.02.2012 в 11:23)
| | наверно где-то ошибку в скрипте допустили, выше скрипт под себя сделайте и все будет хорошо :) | |
|
|
|
|
|
|
|
для: ladan
(04.02.2012 в 11:26)
| | Да вроде все перерыл, ошибок быть не должно...
Только что скопировал оригинал с сайта, изменил только название таблицы, откуда делать выборку, тоже самое, так что проблема скрипта скорее...
Вот пример того о чем я говорю, там где есть значение он его выводит, если значения нет , выводится пустая форма:
Новостей на страницу 10
просмотров :9
просмотров :6
просмотров :20
просмотров :90
просмотров :69
просмотров :52
просмотров :17
просмотров :5
просмотров :
просмотров : | |
|
|
|
|
|
|
|
для: melomaniac
(04.02.2012 в 11:31)
| | выполняйте проверку на пустоту текста поста функцией empty(). | |
|
|
|
|
|
|
|
для: alexander95
(07.02.2012 в 10:53)
| | А в виде кода можно пожалуйста как ето организовать, куда етот empty() я тока не прописывал, ничего не выходит, хоть убейте...
P.S: исходник кода могу предоставить если надо, хотя отличие между моим кодом и оригиналом только в названии таблиц и колонок БД..... | |
|
|
|
|
|
|
|
для: melomaniac
(11.02.2012 в 00:26)
| | странно что и мой исходный код у вас неправильно работает.. а вы создайте новую таблицу с 1 ячейкой в бд и по эксперементируйте, сделайте 20 записей и навигацию прикрутите. Если будет работать, то уже думаю увидите где у вас ошибка была | |
|
|
|
|
|
|
|
для: melomaniac
(11.02.2012 в 00:26)
| | на странице, которую вы прикрепляли, есть цикл for (он там единственный). В нем есть что-то врolt $postrow[$i]['text'] - это переменная с текстом сообщения. В самом начале цикла for (внутри) впишите следующее:
if(empty($postrow[$i]['text']))
break; | |
|
|
|
|
|
|
|
для: alexander95
(11.02.2012 в 00:41)
| | ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО !!!!!!!! работает :)
Еще раз всем спасибо за помощь !!!!!!! | |
|
|
|