вот что я использую в своих скриптах. ну мне так удобнее:
<?
$arr = range(0,500); // допустим, это массив каких - то данных, а этом случае - массив чисел от 0 до 500
$c = count($arr); // количество элементов
$onpage = 10; // количество элементов на страницу
// теперь напишем простейшую функцию для подсчета стартовой и конечной позиций постраничной навигации
function navigation($p,$onpage,$count){
#p - номер страницы
#onpage - количество элементов на траницу
#count - количетво элементов всего
$pages = (int) ceil($count / $onpage); # всего страниц
$start = (int) ($p-1) * $onpage; # стартовая позиция
$end = (int) ($p * $onpage); # конечная позиция
$end = ($end<=0) ? $end=1 : $end; # обрабатываем конечную позицию, чтобы она была больше 0, иначе могут совпасть стартовая и конечная позиции, и будет ошибка
return array('start'=>$start,'end'=>$end,'pages'=>$pages);
}
// функция возвращает массив с ключами start, end и pages
//теперь посмотрим функцию в действии:
$page = (isset($_GET['page'])) ? abs(intval($_GET['page'])) : 1; // $_GET параметр номера страницы (чтобы обращаться так: http://site.ru/script.php?page=10)
$nav = navigation($page,$onpage,$c); // собираем данные которые возвратит функция в переменную $nav
for($i=$nav['start'];$i<=$nav['end'];$i++){ // цикл перебирает все значение от $nav['start'] до $nav['end']
if(array_key_exists($page,$arr)){ // если существует такой элемент в массиве - выводим его на экран, если нет - пишем ошибку
echo $arr[$page].'<br/>';
} else {echo 'error';}
}
if($nav['pages']>1){ // если страниц больше одной - выводим ссылки назад / далее
if($p>1) {echo '<a href="?page='.($p-1).'">Назад</a> ';}
if($p!=$nav['pages']) {echo ' <a href="?page='.($p+1).'">Далее</a>';}
}
?>
Добавлено через 04:20 сек.
надо будет проверить на ошибки код, и добавить в статью сюда )
Изменил: KOZZ (20.02.2011 / 19:41)