Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбиени PHP запроса на странцы 
:(
    Опции темы
G-Exorcist
Дата 29.6.2004, 19:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди подскажите, как разбить на страницы мою таблицу (как это например Гугл делает и дрю поисковики....).
С ног сбился (точнее с лавочки перед монитором)
  Вверх
Secandr
Дата 30.6.2004, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



А что не получается?
Всё просто делаешь ссылку my.php?page=1
В сприпте читаешь чему равна page и пропусткаешь page*10 записей, печатаешь на экран 10 следующих.
(страницы считаются с нуля smile.gif)

Если нужен более конкретный ответ, задавайте чёткий вопрос.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Master
Дата 30.6.2004, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Разеснений по этой теме на форуме скрывается в нескольких однообразно-подобных этому топиках

Последний раз привожу пример реализации постраничной навигации с использованием MySQL

Код
# Список
if (!isset($_GET['page'])) {$_GET['page'] = '1';}

$to_page = 4;
$p = ($_GET['page'] * $to_page) - $to_page;

$query = "SELECT * FROM table LIMIT ".$p.",".$to_page;
$result = mysql_query($query);

while ($goods = mysql_fetch_assoc($result)) {
   # Вывод
}


# Навигация

$query = "SELECT COUNT(*) FROM table";
$result = mysql_query($query);
$count = mysql_result($result,0,'COUNT(*)');

$pages_links = 4;
$pages_links_view_max = 0;
$pages_links_view_min = 0;

if (ceil($count / $to_page) - $_GET['page'] >= $pages_links) {
   $to_max = $_GET['page'] + 3;
   $pages_links_view_max = 1;
} else {
   $to_max = ceil($count / $to_page);
}

if ($_GET['page'] > $pages_links) {
   $to_min = $_GET['page'] - 3;
   $pages_links_view_min = 1;
} else {
   $to_min = 1;
}

if ($pages_links_view_min == 1) {
   echo ' <A href="?page=1"> К началу</A>';
}

if ($_GET['page'] > 1) {
   echo ' <A href="?page='.($_GET['page']-1).'"> &lt;&lt;</A>';
}

if ($pages_links_view_min == 1) {
   echo ' ...';
}

for ($p = $to_min; $p <= $to_max; $p++) {
   if ($_GET['page'] == $p) {
       echo ' <B>['.$p.']</B>';
   } else {
       echo ' <A href="?page='.$p.'">['.$p.']</A>';
   }
}

if ($pages_links_view_max == 1) {
    echo ' ...';
}

if ($_GET['page'] < ceil($count / $to_page)) {
   echo ' <A href="?page='.($_GET['page']+1).'"> &gt;&gt;</A>';
}

if ($pages_links_view_max == 1) {
   echo ' <A href="?page='.ceil($count / $to_page).'"> Последняя ['.ceil($count / $to_page).']</A>';
}



--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
MuToGeN
Дата 30.6.2004, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



В FAQ кой-что по сабжу валяется


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 30.6.2004, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Упрщенный вариант:

Цитата
<?php
/* $dbrow = array('a','b','c','d','e','f','g'); */

$RowOnPage = 5;
    // Максимальное количество выводимых строк записей.
$SizeAllRow = sizeof($dbrow);
    // Количество записей извлеченных из DB.
$SizeAllPages = ceil($SizeAllRow / $RowOnPage);
    // Количество страниц.
$OffsetPage = (isset($_GET['offset'])) ? intval($_GET['offset']) : 0;
    // Текущая позиция страницы. (в строке адреса в offset равен номеру страницы.
$OffsetRow = $OffsetPage * $RowOnPage;
    // Текущая позиция записей. Вычесляется по значению offset * максимальное количество выводимых данных.
$NextPage = ($OffsetPage + 1 >= $SizeAllPages) ? $OffsetPage : $OffsetPage + 1;
    // Вычесляется номер следующей страницы. Если предел: возвращает текущую.
$PrevPage = ($OffsetPage - 1 < 0) ? 0 : $OffsetPage - 1;
    // Вычисляется номер предыдущей страницы. Если это первая: возвращает ноль.
$EndPoint = ($OffsetRow + $RowOnPage < $SizeAllRow) ? $OffsetRow + $RowOnPage : $OffsetRow + $RowOnPage - $SizeAllRow + $OffsetRow;
    // Вычисление конечной записи.
    // Выводим записи:
while($OffsetRow < $EndPoint) {
    echo $dbrow[$OffsetRow].'<br />';
    $OffsetRow++;
}
echo '<a href="?offset='.$PrevPage.'">предыдущая</a> || <a href="?offset='.$NextPage.'">следующая</a><br />';
?>

Пример


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.