X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Улучшить паджинатор
gaaarfild
gaaarfild
Topic Starter сообщение 4.12.2010, 18:02; Ответить: gaaarfild
Сообщение #1


Я написал функцию паджинатора. Очень давно. Но он выводит вообще все страницы. И когда их очень много, то это выглядит немного непрезентабельно.

Как можно улучшить ее с теми же входными параметрами, чтобы например он выводил только диапазон страницпо три в обе стороны и многоточия. Ну или как-то так?

[php]function page_list($whole, $limit, $link) {
if ($limit < $whole) {
$pages = ceil($whole/$limit);
$do = isset($_GET['do']) ? '&do='.$_GET['do'].'' : '';
$pg = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
if ($pages > 1) {
echo "<br />".__PAGE." <b>".$pg."</b><br />";
}
for ($i=0; $i<$pages; $i++) {
$page = $i+1;
if($pg==$page) {
echo '&nbsp;<span class="pagesel">'.$page.'</span>&nbsp;';
} else {
echo '&nbsp;<a href="'.$link.$do.'&page='.$page.'" class="pages">'.$page.'</a> ';
}
}
}
}[/php]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 5.12.2010, 0:36; Ответить: ZiTosS
Сообщение #2


gaaarfild, всё достаточно просто, напишу на коленке:
[php]<?php

function page_start($cur_page, $limit_pages)
{
return ($cur_page - $limit_pages) > 0 ? $cur_page - $limit_pages : 0;
}

function page_end($cur_page, $total_pages, $limit_pages)
{
return ($cur_page + $limit_pages) < $total_pages ? $cur_page + $limit_pages : $total_pages;
}

function page_list($whole, $limit, $link, $limit_pages=3)
{
if ($limit < $whole) {
$pages = ceil($whole/$limit);
$do = isset($_GET['do']) ? '&do='.$_GET['do'].'' : '';
$pg = (isset($_GET['page'])) ? intval($_GET['page']) : 1;

$page_start = page_start($pg, $limit_pages); // с какой страницы выводить
$page_end = page_end($pg, $pages, $limit_pages); // до какой страницы выводить

if ($pages > 1) {
echo "<br />".__PAGE." <b>".$pg."</b><br />";
}
for ($i=$page_start; $i<$page_end; $i++) { // здесь немного изменили условия и инициализацию цикла
$page = $i+1;
if($pg==$page) {
echo '&nbsp;<span class="pagesel">'.$page.'</span>&nbsp;';
} else {
echo '&nbsp;<a href="'.$link.$do.'&page='.$page.'" class="pages">'.$page.'</a> ';
}
}
}
}

?>[/php]
Ну а уж как дописать троеточия или что либо другое при выводе это твоя задача xD Кстати, выкладывал ведь на форуме хороший класс навигации по страницам. Вот где-где а здесь самое оно применить ООП.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 5.12.2010, 17:58; Ответить: gaaarfild
Сообщение #3


Ух отлично))

Именно то, что надо и ничего лишнего. НА последнее и первое сам доделал)) Спасибо большое)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКак улучшить запись голоса
0 k0ttee 5901 6.8.2020, 18:59
автор: k0ttee
Открытая тема (нет новых ответов) Требуется улучшить дизайн сайта
0 Sostavitel 2335 2.6.2017, 18:40
автор: Sostavitel
Открытая тема (нет новых ответов) Помогите пожалуйста улучшить сайт!
4 Avtoplast 37621 2.4.2015, 0:33
автор: -ЛЕРА-


 



RSS Текстовая версия Сейчас: 19.4.2024, 10:50
Дизайн