Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

разбивка на страницы на пхп

393
09 июня 2004 года
Couger
128 / / 13.04.2003
Не могу никак собрать рабочую подпрограммку для разбивки на страницы результата вывода БД.

Т.е. в результате у меня, например, 53 группы значений, а мне их надо разбить так, чтоб на странице выводилось по 20.
И получилось что-то типа: 1-20 20-40 40-53

Подскажите!
7.7K
10 июня 2004 года
i.p.
5 / / 10.06.2004
Цитата:
Originally posted by Couger
Не могу никак собрать рабочую подпрограммку для разбивки на страницы результата вывода БД.

Т.е. в результате у меня, например, 53 группы значений, а мне их надо разбить так, чтоб на странице выводилось по 20.
И получилось что-то типа: 1-20 20-40 40-53

Подскажите!



Здравствуйте, уточните в чем конкретно проблема? В написании соотв. SQL - запросов или в чем?

ip

393
10 июня 2004 года
Couger
128 / / 13.04.2003
Цитата:
Originally posted by i.p.


Здравствуйте, уточните в чем конкретно проблема? В написании соотв. SQL - запросов или в чем?

ip



Да нет, запрос и вывод результатов - не проблема.

Если у меня есть какое-то кол-во данных (уже обработанных) - они выводятся все на одной странице, а я хочу сделать, чтобы результат разбился на определенное кол-во "данных" и выводился постранично..., т.е. из бд я достаю данные и в цикле последовательно выполняю какие-то действия с ними (например: вывожу в виде таблички) и мне надо, чтобы определенное кол-во (например: 20 табличек) было на первой странице, следующии 20 на следующей и т.д.

А, например, внизу страницы, должны автоматически выстроиться ссылки на страницы с результатами (пример: из БД достал 46 "результатов", ссылки должны быть такие: 1-20 21-40 41-46).

291
10 июня 2004 года
gufy
703 / / 08.01.2003
вначале ты каким-то образом :) определяешь кол-во записей в таблице(у тебя - 46). например SELECT COUNT(поле) FROM table или как-то еще.
далее ты считываешь из URL номер страницы, переданный тебе параметром.
 
Код:
$p=HTTP_GET_VARS["p"];
if(!isset($p)){
  $p=1;
}

после этого ты выбираешь из базы записи, нужные тебе, т.е. от (p-1)*20+1 до p*20, если ты выводишь по 20 сообщений:
 
Код:
SELECT FROM table WHERE id BETWEEN ($p-1)*20+1 AND ($p*20);

после этого ты считаешь кол-во страниц. пусть $k-кол-во записей в базе(46)
 
Код:
if (floor($k/20)==($k/20)){ //сообщений ровно 20n
$numPages=floor($k/20);
} else{ //иначе нужна дополнительная неполная страница
$numPages=floor($k/20)+1;
}

теперь запускаем цикл по страницам и выводим ссылку на очередную страницу и ее номер, не не забывая опустить ссылку на текущуу страницу:
 
Код:
for($i=1;$i<=$numPages;$i++){
if ($i==$p){ //текущая страница
   echo($i);
   echo("");
} else{ //какая-то другая страница
   echo("<A HREF='script.php?p=$i'>");
   echo($i);
   echo("</A>$nbsp;");
}
}

вот что-то такое. в HTML оформишь сам, на работоспособность код, конечно, не проверял - писал прямо в окошке форума
393
11 июня 2004 года
Couger
128 / / 13.04.2003
Цитата:
Originally posted by gufy
вначале ты каким-то образом :) определяешь кол-во записей в таблице(у тебя - 46). например SELECT COUNT(поле) FROM table или как-то еще.
далее ты считываешь из URL номер страницы, переданный тебе параметром.
 
Код:
$p=HTTP_GET_VARS["p"];
if(!isset($p)){
  $p=1;
}

после этого ты выбираешь из базы записи, нужные тебе, т.е. от (p-1)*20+1 до p*20, если ты выводишь по 20 сообщений:
 
Код:
SELECT FROM table WHERE id BETWEEN ($p-1)*20+1 AND ($p*20);

после этого ты считаешь кол-во страниц. пусть $k-кол-во записей в базе(46)
 
Код:
if (floor($k/20)==($k/20)){ //сообщений ровно 20n
$numPages=floor($k/20);
} else{ //иначе нужна дополнительная неполная страница
$numPages=floor($k/20)+1;
}

теперь запускаем цикл по страницам и выводим ссылку на очередную страницу и ее номер, не не забывая опустить ссылку на текущуу страницу:
 
Код:
for($i=1;$i<=$numPages;$i++){
if ($i==$p){ //текущая страница
   echo($i);
   echo("");
} else{ //какая-то другая страница
   echo("<A HREF='script.php?p=$i'>");
   echo($i);
   echo("</A>$nbsp;");
}
}

вот что-то такое. в HTML оформишь сам, на работоспособность код, конечно, не проверял - писал прямо в окошке форума



Да, на счет того, чтобы записи считывать не все сразу, а по определенным частям, что-то не подумал \:

А что такое floor?

291
11 июня 2004 года
gufy
703 / / 08.01.2003
RTFM :)
floor - аналог паскалевского trunc
берет целую часть от числа
floor(2.012)=2
7.7K
21 июня 2004 года
i.p.
5 / / 10.06.2004
Цитата:
Originally posted by Couger


Да, на счет того, чтобы записи считывать не все сразу, а по определенным частям, что-то не подумал \:

А что такое floor?



Кстати, если база - MySql то запрашивать часть данных можно с помощью ключевого слова LIMIT.

i.p.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог