a.page |  |
a.page -- Библиотека функций для распределения большого количества информации по страницам
Описание | |
Библиотека функций page предназначена для распределения
большого количества информации по страницам.
Управляющие константы
Для корректной работы библиотеки Вы должны определить следующие константы:
CMS_TEMPLATE_PAGE_NEAR
-
Константа может принимать одно из двух значений: 0 или 1.
Определяет, показывать ли в списке ссылок на страницы
ссылки на предыдущую и на следующую страницу.
Если значение этой константы равно 0, то ссылки на следующую и предыдущую страницу не показываются.
Если значение этой константы равно 1, то ссылки на следующую и предыдущую страницу будут добавлены в список ссылок.
Ссылка на предыдущую страницу всегда показывается самой первой.
Ссылка на следующую страницу всегда показывается самой последней.
CMS_TEMPLATE_PAGE_SIDE
-
Количество ссылок на страницы, которые находятся рядом с текущей страницей.
Определяет максимальное количество ссылок на предыдущие и следующие страницы.
Если, например, значение этой константы равно 3, и текущая страница - 10,
то в ссылки на страницы будут включены ссылки на 7, 8, 9, 10, 11, 12 и 13 страницы:
добавлены ссылки на три страницы до десятой и три страницы после десятой.
Исходный текст | |
<?php
// libs/page/page.php
// (c) Yuri Popoff, Sep 2004, yuri@popoff.donetsk.ua
// A set of functions to manage pages
function page_create()
{
return array(
'count-page' => 0,
'count-single' => 1,
'count-total' => 0,
'current' => 0
);
}
function page_item($page,$index)
{
if($index<0) return 1;
return floor($index/$page['count-single'])+1;
}
function page_limit(&$page)
{
$page['limit-from']=($page['current']-1)*$page['count-single'];
return $page['limit-from'].','.$page['count-single'];
}
function page_list($page,$count_sides=CMS_TEMPLATE_PAGE_SIDE)
{
$Pages=array();
if(CMS_TEMPLATE_PAGE_NEAR&&$page['current']>1)
$Pages[]=array('page' => $page['current']-1,'is-previous' => true);
if($page['current']-$count_sides>1)
$Pages[]=array('page' => 1);
for($i=max(1,$page['current']-$count_sides);$i<=min($page['current']+$count_sides,$page['count-page']);$i++)
$Pages[]=array('page' => $i,'is-selected' => $i==$page['current']);
if($page['current']+$count_sides<$page['count-page'])
$Pages[]=array('page' => $page['count-page']);
if(CMS_TEMPLATE_PAGE_NEAR&&$page['current']<$page['count-page'])
$Pages[]=array('page' => $page['current']+1,'is-next' => true);
return $Pages;
}
function page_load(&$page)
{
if(empty($page['current'])||!is_numeric($page['current'])) $page['current']=1;
if(empty($page['count-total']))
$page['count-page']=0;
else
$page['count-page']=floor(($page['count-total']-1)/$page['count-single'])+1;
if($page['current']>$page['count-page']) $page['current']=$page['count-page'];
if($page['current']<=0) $page['current']=1;
}
?>
Пример использования | |
<?php
include('inc.php');
define('CMS_TEMPLATE_PAGE_NEAR',1);
define('CMS_TEMPLATE_PAGE_SIDE',5);
lib_include_once('mysql.startup');
lib_include_once('page');
//Заполнение массива значениями по умолчанию
$page=page_create();
//Общее число элементов
$page['count-total']=mysql_query_single(“select count(*) from TStatWords”);
//Количество элементов на одной странице
$page['count-single']=25;
//Номер текущей страницы
if(!empty($_GET['page']))
$page['current']=$_GET['page'];
//Проверка корректности исходных данных и дополнительные вычисления
page_load($page);
$Items=array();
if($page['count-total'])
{ //Загрузка данных, которые будут отображены на текущей странице
$r=mysql_query_log(“
select
dt,s_who,s_words
from
TStatWords
order by
dt desc,s_words
limit
”.page_limit($page));
for($i=0;$i<mysql_num_rows($r);$i++)
{
$f=mysql_fetch_assoc($r);
//Номер элемента в общей последовательности элементов
$f['index']=$i+$page['limit-from']+1;
$Items[]=$f;
}
}
//Подготовка ссылок на другие страницы
$Pages=page_list($page);
for($i=0;$i<count($Pages);$i++)
$Pages[$i]['url']='?page='.$Pages[$i]['page'];
// ***** ДАННЫЕ ГОТОВЫ ******
if(count($Items))
{
// Вывод ссылок на другие страницы
echo «<p><b>Слова, по которым находили этот сайт</b></p>»;
echo «<p>Страницы (“.$page['count-page'].”): “;
for($i=0;$i<count($Pages);$i++)
{
if($i) echo ” »;
if(!empty($Pages[$i]['is-previous']))
echo '<a href=“'.$Pages[$i]['url'].'”>«</a>';
elseif(!empty($Pages[$i]['is-next']))
echo '<a href=“'.$Pages[$i]['url'].'”>»</a>';
elseif(!empty($Pages[$i]['is-selected']))
echo '<b>['.$Pages[$i]['page'].']</b>';
else
echo '<a href=“'.$Pages[$i]['url'].'”>'.$Pages[$i]['page'].'</a>';
}
//Вывод собственно данных
echo «</p><p><table><tr>
<td><b>N</b></td>
<td><b>Дата</b></td>
<td><b>Поисковик</b></td>
<td><b>Фраза</b></td></tr>»;
for($i=0;$i<count($Items);$i++)
echo “<tr>
<td>”.$Items[$i]['index'].“</td>
<td><nobr>”.$Items[$i]['dt'].“</nobr></td>
<td>”.$Items[$i]['s_who'].“</td>
<td><nobr>”.$Items[$i]['s_words'].“</nobr></td></tr>”;
echo “</table></p>”;
}
else
{
echo «Нет ни одного элемента для отображения.»;
}
?>
Смотрите также | |
Попробовать приведённый выше пример
В примере выводится список поисковых фраз, по которым был найден этот сайт.
Этот список разбит на страницы при помощи модуля a.page.
Последняя модификация: 12.08.08 14:42 q Не проходите мимо! Оставьте Ваш комментарий в форуме! >>> Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт. [Ссылки] Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище! (c) Yuri Popoff, 2004 - 2008, popoff.donetsk.ua, style.donetsk.ua |
|