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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> постраничный вывод, постраничный вывод 
:(
    Опции темы
постраничный вывод
Дата 15.1.2004, 18:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как сделать постраничный вывод?
Как правило, выводить нужно часть массива, скажем по 20 строк. Потом ссылка на следующие 20 строк, и т.д.



  Вверх
Skywalker
Дата 15.1.2004, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 17.11.2003
Где: Днепропетровск, У краина

Репутация: нет
Всего: 2



как я думаю и делаю: создаешь функцию, которая принимает перемунную $from (например), которая:
1)берет $from и умножает на кол-во строк на странице(в нашем случае это 20)
2)выводит значения массива с $from
3)в конце выводит ссылки на сбея+?from=номер страницы
вот.


--------------------
"Мы в ответе за тех, кого приручили" Антуан де Сент Экзюпери, Маленький принц
PM MAIL WWW ICQ   Вверх
Secandr
Дата 15.1.2004, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


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

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



for ($i=($n-1)*20;$i<=$n*20;$i++){
echo $mas[$i]
}

Пойдёт?


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


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

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



Вот упрощенная схема постраничного вывода с использованием библиотеки PEAR. Пишу из головы, возможны незначительные ошибки. Важен сам алгоритм.
Код
require_once('DB.php'); // http://pear.php.net/package/DB
require_once('Pager/Sliding.php'); // http://pear.php.net/package/Pager_Sliding

// Производим подключение к базе данных:
$dsn = "mysql://$db_user:$db_pass@$db_host/$db_name";
$db  = DB::connect($dsn);
DB::isError($db) and die($db->getMessage());

// Считаем общее колличество новостей:
$sql = 'SELECT COUNT(`id`) AS `count` FROM `table` WHERE 1';
$total_items = $db->getOne($sql);
DB::isError($total_items) and die($total_items->getMessage());

// Считаем, какую страницу отображать:
$per_page = 10; // Кол-во новостей на странице.
isset($_REQUEST['page']) ? $page = (int) abs($_REQUEST['page']) : $page = 1; // Текущая страница.
$last_page = $total_items % $per_page;
$all_pages = ($total_items - $last_page) / $per_page;
$last_page != 0 and $all_pages++;
$page > $all_pages and $page = $all_pages;
$from = ($page - 1) * $settings['per_page'];
$from < 0 and $from = 0;
$to = $per_page;

// Получаем содержимое новостей:
$sql = 'SELECT * FROM `table` WHERE  1 ORDER BY `date` DESC, `id` DESC LIMIT ' . $from . ', ' . $to;
$res = $db->query($sql);
DB::isError($res) and die($res->getMessage());

// Получаем нумерованный массив новостей:
$i = 0;
$contents = Array();
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
   foreach ($row as $key => $value) {
       $contents[$i][$key] = $value;
   }
   $i++;
}

// Отключаемся от базы:
$db->disconnect();

// Задаем параметры класса Pager_Sliding (RTFM по приведенной выше ссылке):
$params = array(
   'totalItems' => $total_items,
   'perPage' => $per_page,
   'delta' => 2,
   'expanded' => true,
   'append' => false,
   'path' => $_SERVER['PHP_SELF'],
   'fileName' => '?page=%d',
   'urlVar' => 'page',
   'altPrev' => 'Назад',
   'altNext' => 'Вперед',
   'altPage' => 'Страница',
   'prevImg' => ' << ',
   'nextImg' => ' >> ',
   'separator' => '',
   'spacesAfterSeparator' => 1,
   'spacesBeforeSeparator' => 1,
   'firstPagePre' => '',
   'firstPageText' => 'Первая',
   'firstPagePost' => '',
   'lastPagePre' => '',
   'lastPageText' => 'Последняя',
   'lastPagePost' => '',
   'clearIfVoid' => true
);

// Создаем экземпляр Pager_Sliding:
$pager =& new Pager_Sliding($params);
// Получаем массив с <a href="index.php?page=1">1</a> и т.д.:
$links = $pager->getLinks();
// И выщемляем нужное нам значение:
$links  = $links['all'];

// Смотрим на получившиеся дампы, и думаем, что с ними делать дальше:
?><pre><?php
var_dump($contents);
echo $links;
?></pre>
inlove.gif


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
MuToGeN
Дата 16.1.2004, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


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

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



В FAQ кой-что имеется по SUBJу


--------------------
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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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