Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

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

 

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

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

тема: постраничная навигация
 
 автор: lilu   (28.09.2006 в 09:38)   письмо автору
 
 

Объясните мне как чайнику, как сделать постраничный вывод
Например результат поиска из базы, и если найдено слишком много результатов, то лучше не скроллингом мотать, а разбить на страницы, как это вообще делается, если можно с примером.
Спасибо!!!!!!!!!

   
 
 автор: coloboc66   (28.09.2006 в 09:48)   письмо автору
 
   для: lilu   (28.09.2006 в 09:38)
 

http://www.softtime.ru/info/articlephp.php?id_article=33

   
 
 автор: mel_sasha   (28.09.2006 в 12:02)   письмо автору
 
   для: lilu   (28.09.2006 в 09:38)
 

я с талкивался с этой проблемой, можно выводить в цикле , а можно указывать в самом запросе сколько нужно выводить записейю я делал под сибейс:
select top $pagesize start at $low from ...
где $low тот указатель с которого закончили выводить , а $pagesize - количество выводимых записей

в цикле можно выводить тоже указывая на последнюю запись
а вот для отображения ссылок на страницы нужно писать второй скрипт

пример можно посмотреть на staff-ua.com

ели очень нужно, могу помочь пиши на support@sigma.org.ua

   
 
 автор: cheops   (28.09.2006 в 13:11)   письмо автору
 
   для: lilu   (28.09.2006 в 09:38)
 

Возможно вас заинтересуют темы
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3555
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15783

   
 
 автор: lilu   (28.09.2006 в 16:57)   письмо автору
 
   для: cheops   (28.09.2006 в 13:11)
 

http://www.softtime.ru/info/articlephp.php?id_article=33
Это всё очень интересно, вот я взяла за основу этот пример, но у меня выводится первая страница с правильным кол-вом записей и ссылки на другие страницы есть но при их открытии ничего не открывается, почему-то......
перед выводом страниц выводит общее кол-во строк в таблице, кол-во строк на странице, тек. номер страницы, кол-во страниц - всё верно..... посмотрите код пожалуйста, что -то я упустила и что...

<?
$num 
5;  //кол-во объявлений на странице
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM full");  
$posts mysql_fetch_row($result);
echo 
$posts[0];
// Находим общее число страниц  
$total intval(($posts[0] - 1) / $num) + 1;  
// Определяем начало сообщений для текущей страницы  
$page intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page 0$page 1;  
  if(
$page $total$page $total;  
// Вычисляем начиная к какого номера  
// следует выводить сообщения  
$start $page $num $num
echo 
"page=".$page."<br>num=".$num."<br>total=".$total;
// Выбираем $num сообщений начиная с номера $start  
$result mysql_query("SELECT * FROM full LIMIT $start$num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result))  
//////////////////////
echo "<table>";  
for(
$i 0$i $num$i++)  
{  
 echo 
"<tr> <td>".$postrow[$i]['data']."</td></tr> 
         <tr><td>"
.$postrow[$i]['text']."</td></tr> 
       <tr><td colspan=\"2\">"
.$postrow[$i]['kontact']."</td></tr>
       <tr><td>-------------------</td></tr>"
;  
}  
echo 
"</table>"

// Проверяем нужны ли стрелки назад  
if ($page != 1$pervpage '<a href= ./page?page=1><<</a>  
                               <a href= ./page?page='
. ($page 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total$nextpage ' <a href= ./page?page='. ($page 1) .'>></a>  
                                   <a href= ./page?page=' 
.$total'>>></a>';  

// Находим две ближайшие станицы с обоих краев, если они есть  
if($page 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | ';  
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | ';  
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>';  
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?>

   
 
 автор: cheops   (28.09.2006 в 22:46)   письмо автору
 
   для: lilu   (28.09.2006 в 16:57)
 

Приведите дамп таблицы full (структуру таблицы и пару записей), если не сложно, чтобы можно было воспроизвести ситуацию?

   
 
 автор: lilu   (29.09.2006 в 09:50)   письмо автору
 
   для: cheops   (28.09.2006 в 22:46)
 

Да конечно...
id_full (int 2)
text varchar(250)
kontact varchar(80)
data date

пример:
1 рпарпарпа 4575421 2006-29-09
2 оооооорпрпорп ропорп орпрпо 854128787 2006-28-09 и т.д.
всего таких записей аж 46
Перед выводом первых пяти сообщений на странице, выводится сколько строк в таблице =46, сколько на каждой странице должно выводится=5, и всего страниц=10 всё верно, вот только первая страгица открывается....внизу написано 1 2 3 > >> и нажимая на любую циферку или стрелочку - ничего.....

   
 
 автор: elenaki   (29.09.2006 в 09:58)   письмо автору
 
   для: lilu   (29.09.2006 в 09:50)
 

и нажимая на любую циферку или стрелочку - ничего.....
==============================================

а что вы видите в строке состояния, когда подводите курсор к ссылке?

   
 
 автор: cheops   (29.09.2006 в 12:00)   письмо автору
 
   для: lilu   (29.09.2006 в 09:50)
 

Вам вот такой вариант не подойдёт?
<?php
  
// Элемент постраничной навигация
  
if(empty($_GET['page'])) $page 1;
  else 
$page $_GET['page'];

  
// Число ссылок в постраничной навигации
  
$page_link 3;
  
// Число позиций на странице
  
$pnumber 2;
  
// Постраничная навигация
  
$first = ($page 1)*$pnumber;

  
// Определяем общее число уже созданных почтовых ящиков
  
$query "SELECT COUNT(*) 
            FROM full"
;
  
$num mysql_query($query);
  if(!
$num) exit("Ошибка при подсчёте количества записей");
  
// Ввыводим ссылки на другие страницы
  
$total mysql_result($num,0);

  
$query "SELECT * FROM full
            LIMIT 
$first$pnumber";
  
$acb mysql_query($query);
  if(!
$acb) exit("Ошибка при обращении к таблице full");
  if(
mysql_num_rows($acb) > 0)
  {
    echo 
"<table>";
    while(
$postrow mysql_fetch_array($acb))
    {
      echo 
"<tr> <td>".$postrow['data']."</td></tr>  
            <tr><td>"
.$postrow['text']."</td></tr>  
            <tr><td colspan=\"2\">"
.$postrow['kontact']."</td></tr> 
            <tr><td>-------------------</td></tr>"
;   
    }
    echo 
"</table><br>";
    
// Постраничная навигация
    
pager($page$total$pnumber$page_link"");
  }

  function 
pager($page$total$pnumber$page_link$parameters
  { 
    
// Вычисляем число страниц в системе 
    
$number = (int)($total/$pnumber); 
    if((float)(
$total/$pnumber) - $number != 0$number++; 
    
// Проверяем есть ли ссылки слева 
    
if($page $page_link 1
    { 
      echo 
"<a class=menu href=$_SERVER[PHP_SELF]?page=1{$parameters}>[1-$pnumber]</a>&nbsp;&nbsp;...&nbsp;&nbsp;"
      
// Есть 
      
for($i $page $page_link$i<$page$i++) 
      { 
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;"
      } 
    } 
    else 
    { 
      
// Нет 
      
for($i 1$i<$page$i++) 
      { 
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($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;<em class=menu>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</em>&nbsp;"
        else 
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;"
      } 
      echo 
"&nbsp;...&nbsp;&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$number{$parameters}>[".(($number 1)*$pnumber 1)."-$total]</a>&nbsp;"
    } 
    else 
    { 
      
// Нет 
      
for($i $page$i<=$number$i++) 
      { 
        if(
$number == $i
        { 
          if(
$page == $i
            echo 
"&nbsp;<em class=menu>[".(($i 1)*$pnumber 1)."-$total]</em>&nbsp;"
          else 
            echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i 1)*$pnumber 1)."-$total]</a>&nbsp;"
        } 
        else 
        { 
          if(
$page == $i
            echo 
"&nbsp;<em class=menu>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</em>&nbsp;"
          else 
            echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;"
        } 
      } 
    } 
    echo 
"<br><br>"
  }
?>

   
Rambler's Top100
вверх

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