Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с пагинацией
 
 автор: melomaniac   (04.02.2012 в 11:08)   письмо автору
56 байт
 
 

Здраствуйте, прикрутил пагинацию к php сайту, все работает нормально, но есть одна проблема, при выводе новостей добавляются пустые поля, к примеру если задан вывовод 10 новостей на страницу, но в базе всего 8 новостей, скрипт всеравно выведет 10: 8 новостей и 2 пустые. Сильно прошу не пинать, php изучаю недавно, поетому и прошу вашей помощи.

P.S: Ссылка на скрипт во вложении, скрипт с етого сайта

  Ответить  
 
 автор: ladan   (04.02.2012 в 11:13)   письмо автору
 
   для: 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 0$page5left ' <a href=view_select.php?id='.$id.'&page='. ($page 5) .'&click5>'. ($page 5) .'</a>  ';
if(
$page 0$page4left ' <a href=view_select.php?id='.$id.'&page='. ($page 4) .'&click5>'. ($page 4) .'</a>  ';
if(
$page 0$page3left ' <a href=view_select.php?id='.$id.'&page='. ($page 3) .'&click5>'. ($page 3) .'</a>  ';
if(
$page 0$page2left ' <a href=view_select.php?id='.$id.'&page='. ($page 2) .'&click5>'. ($page 2) .'</a>  ';
if(
$page 0$page1left ' <a href=view_select.php?id='.$id.'&page='. ($page 1) .'&click5>'. ($page 1) .'</a>  ';

if(
$page <= $total$page5right '  <a href=view_select.php?id='.$id.'&page='. ($page 5) .'&click5>'. ($page 5) .'</a>';
if(
$page <= $total$page4right '  <a href=view_select.php?id='.$id.'&page='. ($page 4) .'&click5>'. ($page 4) .'</a>';
if(
$page <= $total$page3right '  <a href=view_select.php?id='.$id.'&page='. ($page 3) .'&click5>'. ($page 3) .'</a>';
if(
$page <= $total$page2right '  <a href=view_select.php?id='.$id.'&page='. ($page 2) .'&click5>'. ($page 2) .'</a>';
if(
$page <= $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);    


?>


ссылки/запросы подправить и все готово

  Ответить  
 
 автор: melomaniac   (04.02.2012 в 11:23)   письмо автору
 
   для: ladan   (04.02.2012 в 11:13)
 

Я не говорю что не работает, все работает, но выводятся пустые значения, как говорил выше, если выводим 10 новостей на страницу к примеру, но в базе физически всего 2 новости, то всеравно получим на странице 10 новостей 2новости+8 пустых значений, вот в чем прикол...

P.S: спасибо за помощь

  Ответить  
 
 автор: ladan   (04.02.2012 в 11:26)   письмо автору
 
   для: melomaniac   (04.02.2012 в 11:23)
 

наверно где-то ошибку в скрипте допустили, выше скрипт под себя сделайте и все будет хорошо :)

  Ответить  
 
 автор: melomaniac   (04.02.2012 в 11:31)   письмо автору
 
   для: ladan   (04.02.2012 в 11:26)
 

Да вроде все перерыл, ошибок быть не должно...

Только что скопировал оригинал с сайта, изменил только название таблицы, откуда делать выборку, тоже самое, так что проблема скрипта скорее...

Вот пример того о чем я говорю, там где есть значение он его выводит, если значения нет , выводится пустая форма:

Новостей на страницу 10

просмотров :9

просмотров :6

просмотров :20

просмотров :90

просмотров :69

просмотров :52

просмотров :17

просмотров :5

просмотров :

просмотров :

  Ответить  
 
 автор: alexander95   (07.02.2012 в 10:53)   письмо автору
 
   для: melomaniac   (04.02.2012 в 11:31)
 

выполняйте проверку на пустоту текста поста функцией empty().

  Ответить  
 
 автор: melomaniac   (11.02.2012 в 00:26)   письмо автору
 
   для: alexander95   (07.02.2012 в 10:53)
 

А в виде кода можно пожалуйста как ето организовать, куда етот empty() я тока не прописывал, ничего не выходит, хоть убейте...

P.S: исходник кода могу предоставить если надо, хотя отличие между моим кодом и оригиналом только в названии таблиц и колонок БД.....

  Ответить  
 
 автор: ladan   (11.02.2012 в 00:32)   письмо автору
 
   для: melomaniac   (11.02.2012 в 00:26)
 

странно что и мой исходный код у вас неправильно работает.. а вы создайте новую таблицу с 1 ячейкой в бд и по эксперементируйте, сделайте 20 записей и навигацию прикрутите. Если будет работать, то уже думаю увидите где у вас ошибка была

  Ответить  
 
 автор: alexander95   (11.02.2012 в 00:41)   письмо автору
 
   для: melomaniac   (11.02.2012 в 00:26)
 

на странице, которую вы прикрепляли, есть цикл for (он там единственный). В нем есть что-то врolt $postrow[$i]['text'] - это переменная с текстом сообщения. В самом начале цикла for (внутри) впишите следующее:

if(empty($postrow[$i]['text']))
break;

  Ответить  
 
 автор: melomaniac   (11.02.2012 в 01:13)   письмо автору
 
   для: alexander95   (11.02.2012 в 00:41)
 

ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО !!!!!!!! работает :)
Еще раз всем спасибо за помощь !!!!!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования