[Закрыть]
 
popoff.donetsk.ua
Жизнь - трагедия для того, кто чувствует, и комедия для того, кто мыслит. /Ж. Лабрюйер/
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Статьи - Программирование - Модули - a - a.page
Я это делаю
Персональное меню
Голосование
Деньги, либо любимое занятие? Постоянный адрес этого вопроса
Деньги, но неинтересная работа и невозможность уделить время семье
Интересная работа, возможность саморазвиваться, но нищенский заработок
Ваш возраст (не обязательно)
Почему? (не обязательно)

Голосование закрыто.

Поиск по сайту
Реклама
Программное обеспечение любой сложности
koins.com.ua
Статистика

a.page

Постоянный адрес статьи

a.page -- Библиотека функций для распределения большого количества информации по страницам

Общее описание библиотеки a.page
Исходный текст библиотеки 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'].'>&laquo;</a>';
    elseif(!empty(
$Pages[$i]['is-next']))
      echo
'<a href='.$Pages[$i]['url'].'>&raquo;</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

Не проходите мимо! Оставьте Ваш комментарий в форуме! >>>