постраничная навигация,нужна помощь

Print RSS
285

F
Author
Землянин
0
С помощью каких функций,строится самая простейшая постраничная навигация файла.Расскажите пожалуйста,или если можно пример простой навигации.А я попробую разобраться...
K

Транклюкаторщик
0
вот что я использую в своих скриптах. ну мне так удобнее:
<?
$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 сек.
надо будет проверить на ошибки код, и добавить в статью сюда )
Changed: KOZZ (20.02.2011 / 19:41)
F
Author
Землянин
0
2. Ботаник eGo, а можешь мне объяснить,зачем нужна функция rаngе() ато я пхп можно сказать только начал учить,и поэтому ещё плохо соображаю что и как.Я прочитал что она нужна для создания массива,содержащий диапазон элементов.Как это понять?И откуда ты взял переменную $p и $count ведь $p у тебя вообще нигде не задана а функция count($аrr) у тебя присвоена переменной $c.Или может я что то неправильно понял,или ты ошибся может?
Changed: Facecontrol (20.02.2011 / 23:45)
K

Транклюкаторщик
0
3. Facecontrol, автор, пройдись по http://php.su/lessons для начала
без этих основ с тобой в принципе не о чем разговаривать, а тупо тыкать носом в мануалы
F
Author
Землянин
0
Да я то читал,просто всё равно не могу понять,как этим переменным,передаются параметры?
Д

Малиновые штаны
0
F
Author
Землянин
0
if($p>1) {echo '<a href="?page='.($p-1).'">Назад</a> ';}
if($p!=$nav['pages']) {echo ' <a href="?page='.($p+1).'">Далее</a>';}
}
здесь гдето ошибка
Д

Малиновые штаны
0
7, что за ошибка хоть?
Д

Землянин
0
F
Author
Землянин
0
8. PаRaDoKs, ошибка в том что вместо $p надо $pаgе ставить в тех строках,ато ссылки назад и далее не работают.
Stickers / Tags / Rules / Top topics / Top Posts / Search