Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Постраничный вывод

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: выборка из бд инфы
MadDen
Отправлено: 31 Января, 2008 - 09:45:07
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Авг. 2007  
Откуда: Аглы


Помог: -3 раз(а)




Подскажите как мне организовать нормальный не слишком сложный постраничный вывод по страницам.
Перерыл кучу информации ни чего не нашёл интересного и в общем то рабочего =(.
вот сам запрос в базу на вывод инфы из бд:
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM `mess` ORDER by `ltime` desc LIMIT 3");
  2. if (!mysql_num_rows($result))
  3.    echo("Сообщений нет.");
  4. else
  5.  {
  6.    while($row=mysql_fetch_array($result))
  7.    {
  8.       echo '<div class="quote_conteiner">';      
  9.       echo ''.date("[H:i] ",$row['ltime']);      
  10.       echo '<a href="ank_r.php?login='.$row['login'].'"><b>'.$row['login'].'</b></a>:';
  11.      
  12.       echo ' '.$row['msg'].'';
  13.       echo '</div>';
  14.    };
  15.  }


подскажите код пожалуйто, логику я понимаю но как писать не знаю =)
Логика такова что вместо limit 3 подставляется limit и переменные в которых записаны определённые значения. потом нужно методом гет разбить страницы у меня не получается это.


-----
Лучший способ убедиться, что меры предосторожности не понадобятся, это своевременно принять их.
 
 Top
evgenijj
Отправлено: 31 Января, 2008 - 11:10:33
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




 
 Top
Dastar
Отправлено: 31 Января, 2008 - 11:16:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)






-----
Не знаешь - молчи.
 
 Top
MadDen
Отправлено: 31 Января, 2008 - 12:53:30
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Авг. 2007  
Откуда: Аглы


Помог: -3 раз(а)




вот я сделал и почему то ошибка не могу понять где именно
PHP:
скопировать код в буфер обмена
  1.  // количество записей, выводимых на странице
  2.   $per_page=10;
  3.  
  4.   // получаем номер страницы
  5.   if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
  6.  
  7.   // вычисляем первый оператор для LIMIT
  8.   $start=abs($page*$per_page);
  9.   $zapros2 = "SELECT * FROM `mess` ORDER by `id`";  
  10.   $result2 = mysql_query($zapros2) or die('Невозможно сделать запрос');
  11.  
  12.   // составляем запрос и выводим записи
  13.   // переменную $start используем, как нумератор записей.
  14.   $q="SELECT * FROM `mess` LIMIT $start,$per_page";
  15.   $res=mysql_query($q) or die('Невозможно сделать запрос');
  16.  
  17.   $num = mysql_num_rows($result2);
  18.  
  19.   while ($row=mysql_fetch_array($res))
  20.        {
  21.          //echo ''.++$start.'';
  22.       echo '<div class="quote_conteiner">';      
  23.       echo ''.date("[H:i] ",$row['ltime']);      
  24.       echo '<a href="ank_r.php?login='.$row['login'].'"><b>'.$row['login'].'</b></a>:';
  25.      
  26.       echo ' '.$row['msg'].'';
  27.       echo '</div>';
  28.   }
  29.  
  30.   // дальше выводим ссылки на страницы:
  31.   $q="SELECT count(*) FROM `mess` ORDER by `id`";
  32.   $res=mysql_query($q) or die('Невозможно сделать запрос');
  33.   $row=mysql_fetch_row($res);
  34.   $total_rows=$row[0];
  35.  
  36.   $num_pages=ceil($total_rows/$per_page);
  37.  
  38.   for ($i=1;$i<=$num_pages;$i++)
  39.      {
  40.        if ($i-1 == $page)
  41.          {
  42.            echo $i." ";
  43.      } else {
  44.                echo '<a href="'.$_SERVER['PHP_SELF'].'&page='.$i.'">'.$i."</a> ";
  45.      }
  46.   }  
  47. ///

(Добавление)
вот ещё как сделал:
PHP:
скопировать код в буфер обмена
  1. // Постраничная навигация
  2.  
  3.    $query = "SELECT COUNT(*) FROM `mess` ORDER by `id`";
  4.    $tot = mysql_query($query);
  5.    $total = mysql_result($tot,0);
  6.    $number = intval(($total - 1) / $number_post) + 1;
  7.  
  8.    if($page != 1) $pervpage = '<a href='.$_SERVER[PHP_SELF].'?page=1><<</a>
  9.                               <a href='.$_SERVER[PHP_SELF].'?page='. ($page - 1) .'><</a> ';
  10.  
  11. // Проверяем нужны ли стрелки вперед
  12.  
  13.    if($page != $number) $nextpage = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page + 1) .'>></a>
  14.                                     <a href='.$_SERVER[PHP_SELF].'?page=' .$number. '>>></a>';
  15.  
  16. // Находим две ближайшие станицы с обоих краев
  17.  
  18.    if($page - 2 > 0) $page2left = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page - 2) .'>...'. ($page - 2) .'</a> | ';
  19.    if($page - 1 > 0) $page1left = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  20.    if($page + 2 <= $number) $page2right = ' | <a href='.$_SERVER[PHP_SELF].'?page='. ($page + 2) .'>'. ($page + 2) .'...</a>';
  21.    if($page + 1 <= $number) $page1right = ' | <a href='.$_SERVER[PHP_SELF].'?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  22.  
  23.    echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'</p></td></tr></table>';

но вроде как я понял ошибка в фун-ии intval.
текст ошибки:
Warning: Division by zero in X:\home\localhost\www\t\room.php on line 43
___
з.ы. Пользуюсь денвером
(Добавление)
вот и проблема решена =)
PHP:
скопировать код в буфер обмена
  1. // Постраничная навигация
  2.    $queryset = "SELECT * FROM `mess`";  
  3.    $prtset = mysql_query($queryset);
  4.    $settings = mysql_fetch_array($prtset);
  5.  
  6.    if(empty($settings['number_post'])) $number_post = 10;
  7.    else $number_post = $settings['number_post'];
  8.  
  9.    $page = $_GET['page'];
  10.  
  11.    if(empty($page)) $page = 1;
  12.  
  13.    $begin = ($page - 1)*$number_post;
  14.    
  15.  
  16.    $result = mysql_query("SELECT * FROM `mess` ORDER by `ltime` desc LIMIT $begin, $number_post");
  17. if (!mysql_num_rows($result))
  18.    echo("Сообщений нет.");
  19. else
  20.  {
  21.    while($row=mysql_fetch_array($result))
  22.    {
  23.       echo '<div class="quote_conteiner">';      
  24.       echo ''.date("[H:i] ",$row['ltime']);      
  25.       echo '<a href="ank_r.php?login='.$row['login'].'"><b>'.$row['login'].'</b></a>:';
  26.      
  27.       echo ' '.$row['msg'].'';
  28.       echo '</div>';
  29.    };
  30.  }
  31.    
  32. // Постраничная навигация
  33.  
  34.    $query = "SELECT COUNT(*) FROM `mess` ORDER by `id`";
  35.    $tot = mysql_query($query);
  36.    $total = mysql_result($tot,0);
  37.    $number = intval(($total - 1) / $number_post) + 1;
  38.  
  39.    if($page != 1) $pervpage = '<a href='.$_SERVER[PHP_SELF].'?page=1><<</a>
  40.                               <a href='.$_SERVER[PHP_SELF].'?page='. ($page - 1) .'><</a> ';
  41.                                
  42. // Проверяем нужны ли стрелки вперед
  43.    if($page != $number) $nextpage = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page + 1) .'>></a>
  44.                                     <a href='.$_SERVER[PHP_SELF].'?page=' .$number. '>>></a>';                                    
  45.  
  46. // Находим две ближайшие станицы с обоих краев
  47.    if($page - 2 > 0) $page2left = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page - 2) .'>...'. ($page - 2) .'</a> | ';
  48.    if($page - 1 > 0) $page1left = '<a href='.$_SERVER[PHP_SELF].'?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  49.    if($page + 2 <= $number) $page2right = ' | <a href='.$_SERVER[PHP_SELF].'?page='. ($page + 2) .'>'. ($page + 2) .'...</a>';
  50.    if($page + 1 <= $number) $page1right = ' | <a href='.$_SERVER[PHP_SELF].'?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  51.  
  52.    echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'';
  53. ///

Спасибо всем, уважаю этот форум. Особенно кто на нём находится и помогает тким как я новичкам.


-----
Лучший способ убедиться, что меры предосторожности не понадобятся, это своевременно принять их.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB