Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2015, 21:33   #1
cyx
Пользователь
 
Регистрация: 09.03.2015
Сообщений: 37
По умолчанию Вывод новостей постранично, найти ошибкуне выводятся новости на другой странице

Помогите найти ошибку. В mysql имеется 7 записей новостей, 5 выводятся на 1-1 странице и две должны отобразиться при переходе на вторую страницу навигации, т.е. у меня определяется ссылками так на 1-й странице(с 1-5-я новость), на в 2-й странице(6-7). Однако, при переходе на вторую страницу 5 этих новостей остаются же, другие не выводятся. Сорри, если что не так, я слабо еще понимаю что да как.
PHP код:
require_once("config.php");
  
$page $_GET['page'];
  if(empty(
$page)) $page 1;
  
$begin = ($page 1)*$pnumber;
  
// Выясняем общее количество новостей в базе данных, для того чтобы
  // правильно отображать ссылки на последующие новости.
  
$tot mysql_query("SELECT count(*) FROM news WHERE hide='show' AND putdate <= NOW()");
  if (
$tot)
  {
    
$total mysql_result($tot,0);
   
  }
  else 
puterror("Ошибка при обращении к блоку новостей");
  
// Запрашиваем все видимые новости, т.е. те, у которых в базе данных hide='show',
  // если это поле будет равно 'hide', новость не будет отображаться на странице
  
$query "SELECT * FROM news 
            WHERE hide='show' AND putdate <= NOW()
            ORDER BY putdate DESC
            LIMIT 
$pnumber";
  
$new mysql_query($query);
  if(!
$newputerror("Ошибка при обращении к блоку новостей");
  if(
mysql_num_rows($new) > 0)
  {
    while(
$news mysql_fetch_array($new))
    {
      
// Выводим заголовок новости
      
echo "<h1 class=newsblockzag><b>".$news['name']."</b></h1>";
      
// Формируем анонс
      // Переменная $numchar содержит примерное
      // количество символов в анонсе
      
$pos strpos(substr($news['body'],$numchar), " ");
      
// Если новость длинная, то выводим троеточие...
      
if(strlen($news['body'])>$numchar$srttmpend "...";
      else 
$strtmpend "";
      
// Выводим анонс
      
echo "<div class=newsblock><div class=div_picture></div>".substr($news['body'], 0$numchar+$pos).$srttmpend;
      echo 
"<br><a class=anewsblock href=news.php?id_news=".$news['id_news'].">Подробнее</a></div><hr></hr>";
    }
  }
  
    
// Постраничная навигация
  
$pnumber 5;
  
$page_link 6;
  
$query "SELECT COUNT(*) FROM news WHERE hide='show' AND putdate <= NOW()";
  
$tot mysql_query($query);
 
  
$total mysql_result($tot,0);
  
$number = (int)($total/$pnumber);
  if((float)(
$total/$pnumber) - $number != 0$number++;
  echo 
"<br><table><tr><td><p>";
  
// Проверяем есть ли ссылки слева
  
if($page $page_link 1)
  {
    echo 
"<a href=$_SERVER[PHP_SELF]?page=1>[1-$pnumber]</a>&nbsp;&nbsp;...&nbsp;";
    
// Есть
    
for($i $page $page_link$i<$page$i++)
    {
        echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";
    }
  }
  else
  {
    
// Нет
    
for($i 1$i<$page$i++)
    {
        echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";
    }
  }
  
// Проверяем есть ли ссылки справа
  
if($page $page_link $number)
  {
    
// Есть
    
for($i $page$i<=$page $page_link$i++)
    {
      if(
$page == $i)
        echo 
"&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;";
      else
        echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";
    }
    echo 
"&nbsp;...&nbsp;<a href=$_SERVER[PHP_SELF]?page=$number>[".(($number 1)*$pnumber 1)."-$total]</a>&nbsp;";
  }
  else
  {
    
// Нет
    
for($i $page$i<=$number$i++)
    {
      if(
$number == $i)
      {
        if(
$page == $i)
          echo 
"&nbsp;[".(($i 1)*$pnumber 1)."-$total]&nbsp;";
        else
          echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i 1)*$pnumber 1)."-$total]</a>&nbsp;";
      }
      else
      {
        if(
$page == $i)
          echo 
"&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;";
        else
          echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
  }
  echo 
"</td></tr></table>"

Последний раз редактировалось cyx; 18.09.2015 в 21:36.
cyx вне форума Ответить с цитированием
Старый 18.09.2015, 21:59   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

В LIMIT надо указать начиная с какой записи делать выборку. Как-то так: LIMIT $begin, $pnumber
Arigato вне форума Ответить с цитированием
Старый 18.09.2015, 22:12   #3
cyx
Пользователь
 
Регистрация: 09.03.2015
Сообщений: 37
По умолчанию

Действительно. Большое спасибо за помощь)
cyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как делать новости на каждой странице aank10 HTML и CSS 3 22.11.2013 10:56
Как сделать вывод новостей в 2 колонки и постранично в wordpress? MrBrain WordPress и другие CMS 0 29.05.2013 16:35
Как на дле разных категориях выводить разное количество похожих новостей у новости? pq777pq PHP 1 02.07.2011 00:49
Архив новостей. Вывод титла новостей по категориям. Gauss PHP 12 10.03.2011 06:11
Данный выводятся на странице без обновления страницы darewangog JavaScript, Ajax 2 01.12.2010 12:53