Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.


 
ФорумФорум  Последние изображенияПоследние изображения  ПоискПоиск  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
Функции постраничного вывода в PHP Emptyавтор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
Функции постраничного вывода в PHP Emptyавтор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
Функции постраничного вывода в PHP Emptyавтор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
Функции постраничного вывода в PHP Emptyавтор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
Функции постраничного вывода в PHP Emptyавтор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
Функции постраничного вывода в PHP Emptyавтор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
Функции постраничного вывода в PHP Emptyавтор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
Функции постраничного вывода в PHP Emptyавтор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
Функции постраничного вывода в PHP Emptyавтор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Май 2024
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

 

 Функции постраничного вывода в PHP

Перейти вниз 
АвторСообщение
Admin
Admin



Сообщения : 74
Очки : 71
Дата регистрации : 2010-08-23

Функции постраничного вывода в PHP Empty
СообщениеТема: Функции постраничного вывода в PHP   Функции постраничного вывода в PHP EmptyПт Сен 10, 2010 3:34 am

Здравствуйте уважаемые читатели, сегодня хотелось бы обсудит проблему постраничного вывода в PHP и привести возможные пути решения. В этой статье я приведу довольно уникальную функцию с точки зрения её возможностей.

Часто при создании динамических сайтов (отсутствуют страницы как таковые) на базе данных или на файлах возникает вопрос о постраничном выводе информации будь - то статьи, архив новостей или что нибудь другое содержащие довльно большое количество страниц.
Поэтому мы начинаем (если сами не сообразим или кто-нибудь не поможет) рыскать по Интернету в поисках нужного кода, но приличный постраничный вывод найти тяжело. Так что попробуем сделать сегодня что нибудь хорошее, а главное рабочее.

Ниже будет приведён код простейшей функции постраничного вывода, эту функцию можно использовать на небольших сайтах. Все комментарии будут приведены в самой функции, я думаю Вы разберётесь.
Код:
/*Простейшая функция постраничного вывода, назавём её просто PagePrint*/
function PagePrint($start, $count) {
$HrefPage='';//----Создаём переменную которая будет содержать постраничный вывод
$number=10;//----Количество записей на странице
/*Подсчитываем количество страниц, где $count - общее количество записей, $number - количество записей на странице*/
$CountPage=(int)(($count+$number-1)/$number);
 /*Перебираем в цикле все страницы*/
 for($link=1; $link <= $CountPage; $link++):
 $PageStart=($link - 1) * $number;//----Рассчитываем точку выборки из базы данных
 $HrefPage=$HrefPage."<a href=".getenv('PHP_SELF')."?start=".$PageStart." target=_parent>".$link."</a>";//--Формируем ссылки
 endfor;
return $HrefPage;
}
Вы видите, что функция имеет два входных параметра $start - точка выборки из базы данных и $count - количество данных, в файле либо в базе данных. Эта функция самая простая, так что на неё мало надежды при использовании на крупных сайтах где много информации.

Рассмотрим более сложную функцию, но имеющую больше функциональности.
Код:

function PagePrint($variable) {
global $beginPage, $endPage;//------Объявляем глобальные переменные, отвечающие за ссылку на первую и последнюю страницу
 $href='';//-----Перемменная содержащая в себе постраничный вывод
 $separator=' ';//-----Переменная задающая разделитель между ссылками, по умолчанию пробел
 $style='style="text-decoration:none" style="color:orange" style="font-weight:bold"';//-------Задаёт стиль текущей страницы
 $stylePage='style="text-decoration:none" style="color:blue" style="font-weight:bold"';//------Задаёт стиль ссылки на первую и последнюю страницу
 if(is_array($variable))://------Проверяем тип array
 #Перебираем массив и присваиваем $number - количество записей, $start - точка извлечения, $pageCount - количество записей, $andere - другие свойства ссылки, $class - стиль для ссылок, $showLink - количество ссылок на странице
 list($number, $start, $pageCount, $andere, $class, $showLink)=$variable;
 #Обрабатывам $start
 if(empty($start) && !is_int($start) && !is_numeric($start)) $start=0;
 else $start=$start;
 #Обрабатываем $number
 if(empty($number) && !is_int($number) && !is_numeric($number)) $number=10;
 else $number=$number;


 $page=(($start/10)+1);//-------Рассчитывавем номер страницы
 $count=ceil($pageCount/$number);//------Количество страниц

 #Вывод сслыки на первую и последнюю страницы
 if($count!==1) :
 $beginPage="<a href="".getenv('PHP_SELF')."?start=0".$andere."" ".$stylePage.">перв</a>";//--------Первая страница
 $endPage="<a href="".getenv('PHP_SELF')."?start=".(($count-1)*10).$andere."" ".$stylePage.">посл</a>";//-----Последняя страница
 else: FALSE;
 endif;

 if($pageCount==10): return False;
 else:
 #Постраничный вывод
 $begin=$page - intval($showLink/2);//------Определяет номер страницы с которой выводить
 for($j=0; $j<=$showLink; $j++):
 $i=$begin+$j;//------Номер страницы
 #Защищает скрипт если $<0, будет до тех пор увеличивать пока $showPage=1
 if($i<1):
 $showLink++;
 continue;
 endif;
 #Постраничный вывод
 if($i>$count) break;//-----Защита если количество $i>возможных записей
 if($i==$page) $href=$href." <a ".$style." >".$i."</a>";//------Вывод текущей страницы
 else $href=$href." <a href="".getenv('PHP_SELF')."?start=".(($i - 1)*10).$andere."" ".$class.">".$i."</a> ";//------Вывод следующих страниц
 endfor;
 return $href;
 endif;
 endif;
}


Входным параметром функции является массив из шести элементов:

$number - количество отображаемых сообщений на странице
$start - точка извлечения из базы данных, т.е номер сообщения с которого начинается зивлечение данных
$pageCount - общее количество записей, т.е сколько всего содержит база записей
$andere - другие параметры ссылки, будь то новые переменные или что-либо ещё
$class - данный параметр задаёт внешний вид ссылок, т.е ссылки на страницы
$showLink - количество ссылок на странице
Первый параметр может быть передан через метод @$_GET['number'], только в том случае, если Вы захотите чтобы пользователь мог изменять количество сообщений на странице.
Второй параметр обязательно передаётся в массив методом @$_GET['start'], так как параметр $start всё время меняется когда пользователь кликает по ссылке на страницу.

Если, Вы вдруг не захотите, передавать первый, третий, четвёртый, пятый элемент массива вместо них необходимо передать пустоту - '', без пробела между кавычками.

Как Вы можете видеть функция сильно расширяет возможности при создании постраничного вывода. Теперь Вы можете разместить свой постраничный вывод на маленьком участке страницы, регулируя количество отображаемых ссылок параметром $showLink. Всё это удобно при создании галлерей, поиска по каталогу сайта или чего-нибудь ещё.
Ниже будут приведены примеры вызова функции:

PagePrint('', @$_GET['start'], 90, '', '', 10) - Всего записей в базе 90, постраничный вывод будет отображать по десять ссылок

PagePrint(@$_GET['number'], @$_GET['start'], 90, '', '', 10) - Всего записей в базе 90, постраничный вывод будет отображать по десять ссылок и есть возможность изменять количество отображаемых записей на странице

PagePrint(@$_GET['number'], @$_GET['start'], 90, '&category=1', '', 10) - Всего записей в базе 90, постраничный вывод будет отображать по десять ссылок, есть возможность изменять количество отображаемых записей на странице и ссылка передаёт дополнительную переменную category со значением 1

PagePrint(@$_GET['number'], @$_GET['start'], 90, '&category=1', 'style="color:black"', 10) - Всего записей в базе 90, постраничный вывод будет отображать по десять ссылок, есть возможность изменять количество отображаемых записей на странице, ссылка передаёт дополнительную переменную category со значением 1 и ссылки на странице будут чёрного цвета.
Надеюсь приведённые ниже объяснения и комментарии внутри функции помогут разобраться Вам с принципом работы функции.
Вернуться к началу Перейти вниз
https://easy-sugarcrm.forum2x2.ru
 
Функции постраничного вывода в PHP
Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: PHP - статьи, советы-
Перейти: