Постраничный вывод

lamo

Постоялец
Регистрация
1 Июл 2008
Сообщения
51
Реакции
4
Искал темы подобные, но на нулледе не нашел :( извиняюсь если неправ.

Есть такая проблема: даны 2 переменные - количество выводимых объявлений на одной странице $num и текущая стартовая позиция вывода этих объявлений $a (например 10, т.е. вывдодится $num объявлений, начиная с $a позиции).

Постраничный вывод я реализовал, а вот сделать красивый вывод - немогу. Как сделать вывод такой, что бы выводилось $n количество страниц и в ходе листания по страницам предудущие страницы не вошедшие в диапазон $n не выводились... ну вобщем как это и реализовано на многих сайтах - красивый постраничный вывод... а то получается у меня 50 страниц и выводится 50 ссылок под него :(
 
$num колво выводимых страниц
$a позиция с которой начинается вывод

как я понял вопрос чтобы при листании на стринцу N
выводились ссылку не
если N=6 то
12345678910...50
а
78910...50
если так, то начинай вывод ссылок со страницы N
for($i=($n+1);$i<$kolvo;$i++)
{
}
 
$page=$_GET[p]*1;
$perpage=10;
$sql="select count(*) cnt from table";
$res=mysql_query($sql);
$arr=mysql_fetch_array($res);
$count=$arr[cnt];
$pages=ceil($count/$perpage);
$from=$page*$perpage;

for($j=0;$j<=$pages-1;$j++)
{
$i=$j+1;
$PAGER .= ($j==$page) ? "[$i] " : "<a href=$_SERVER[PHP_SELF]?p=$j>$i</a> ";
}


$sql="select * from table order by date desc, id desc limit $from, $perpage";
$res=mysql_query($sql);
while($arr=mysql_fetch_array($res)){
$list.="";
}



далее в нужном месте выводишь $list и страницы - $PAGES
 
Благодарю :ay: Разобрался и науонец то сделал себе постраничный вывод, в дополнении у меня над этим кодом стоит (a - текущая страница:(

Код:
 if (@ctype_digit ($_GET['a'])==true) { $a=($_GET['a']-1)*$num; $pg=$_GET['a']; } else { $a=0; $pg=1; }
....
$query = "SELECT * FROM board WHERE city='$city'".$query_dop." ORDER BY id DESC LIMIT $a,$num";
 
Есть неплохой класс из PEAR пакетов.
 
Благодарю :ay: Разобрался и науонец то сделал себе постраничный вывод, в дополнении у меня над этим кодом стоит (a - текущая страница:(
Код:
 if (@ctype_digit ($_GET['a'])==true) { $a=($_GET['a']-1)*$num; $pg=$_GET['a']; } else { $a=0; $pg=1; }
....
$query = "SELECT * FROM board WHERE city='$city'".$query_dop." ORDER BY id DESC LIMIT $a,$num";

Это не совсем правильный метод. Правда обращать внимание на это нужно только в случае, если количество записей (страниц) может быть очень объемным.

Проблема в конструкции LIMIT pos, length... Несмотря на то, что возвращается массив значений выбранной страницы, на сервере делается обзор всех всех записей до pos. Таким образом, если первая страница будет генерироваться мгновенно, то какая-нибудь 1002-ая уже будет куда серьезней грузить сервер.
 
  • Заблокирован
  • #10
в выборку добавляется LIMIT и всех делов

в codeignitere уже есть встроенный паджинэйшин
 
Назад
Сверху