постраничная навигация,нужна помощь
1.
Facecontrol (20.02.2011 / 19:17)
С помощью каких функций,строится самая простейшая постраничная навигация файла.Расскажите пожалуйста,или если можно пример простой навигации.А я попробую разобраться...
2.
KOZZ (20.02.2011 / 19:38)
вот что я использую в своих скриптах. ну мне так удобнее:
<?
$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 сек.
надо будет проверить на ошибки код, и добавить в статью сюда )
3.
Facecontrol (20.02.2011 / 23:37)
2.
Ботаник eGo, а можешь мне объяснить,зачем нужна функция rаngе() ато я пхп можно сказать только начал учить,и поэтому ещё плохо соображаю что и как.Я прочитал что она нужна для создания массива,содержащий диапазон элементов.Как это понять?И откуда ты взял переменную $p и $count ведь $p у тебя вообще нигде не задана а функция count($аrr) у тебя присвоена переменной $c.Или может я что то неправильно понял,или ты ошибся может?
4.
KOZZ (21.02.2011 / 06:49)
3.
Facecontrol, автор, пройдись по
http://php.su/lessons для начала
без этих основ с тобой в принципе не о чем разговаривать, а тупо тыкать носом в мануалы
5.
Facecontrol (21.02.2011 / 14:23)
Да я то читал,просто всё равно не могу понять,как этим переменным,передаются параметры?
6.
Ден (21.02.2011 / 14:25)
http://wepsik.ru/postranichnaya-navigaciya-phpmysql
7.
Facecontrol (21.02.2011 / 14:33)
if($p>1) {echo '<a href="?page='.($p-1).'">Назад</a> ';}
if($p!=$nav['pages']) {echo ' <a href="?page='.($p+1).'">Далее</a>';}
}
здесь гдето ошибка
8.
Ден (21.02.2011 / 15:15)
7, что за ошибка хоть?
9.
Денис (21.02.2011 / 17:55)
http://thiswap.com/2010/12/13/funkciya-postranichnoj-navigacii-phpmysql/
10.
Facecontrol (21.02.2011 / 18:22)
8.
PаRaDoKs, ошибка в том что вместо $p надо $pаgе ставить в тех строках,ато ссылки назад и далее не работают.
11.
Facecontrol (21.02.2011 / 19:27)
Так что кто сможет помочь?
12.
Денис (22.02.2011 / 00:29)
выше ссылку ведь дал
13.
Facecontrol (22.02.2011 / 09:19)
Там навигашка с мускулом,а мне бы без мускула для начала
14.
Facecontrol (23.02.2011 / 08:33)
Помогите,пытался сам написать навигацию,но где то есть ошибки,подскажите где и как исправить
<?
$arr=file('file.php');//помешаю файл в массив
$carr=count($arr);//считаю количество элементов
$collpage=1;//Количество элементов на станицу
$page = (isset($_GET['page']));//определяю страницу
$i=0;//первый элемент
$ot=$i*$collpage;//от которого выводить
$do=$ot*$coolpage;//до которого выводить
if(count($arr[]) =>$do)
{
echo $do;
}//дальше хочу сделать ссылки назад и далее:
if($page['pages']>1)
{
if($page>1)
{
echo '<a href="?page='.($page-1).">назад</a>';
}
if($page<=1['pages'])
{ //дальше где то ошибка в '=' я уже всё перепробовал:
echo '<a href="?page='.($page+1).">далее</a>';
}
}
?>
15.
Марсель (23.02.2011 / 08:39)
'.($page+1).
"
16.
Виталий (23.02.2011 / 11:36)
<?php
$start = (isset($_GET['start'])) ? (int)$_GET['start'] : 0;
$a = 10; # Количество элементов на страницу
$file = file("file.dat");
$total = count($file);
if ($start >= $total || $start < 0) {
$start = 0;
}
if ($total < $start + $a) {
$d = $total;
} else {
$d = $start + $a;
}
for ($i = $start; $i < $a; $i++) {
echo $file[$i].'<br />';
}
if ($start != 0) {
echo '<a href="test.php?start='.($start - $d).'&'.SID.'"><-Назад</a> ';
} else {
echo '<-Назад';
}
echo ' | ';
if ($total > $start + $d) {
echo '<a href="test.php?start='.($start + $d).'&'.SID.'">Далее-></a>';
} else {
echo 'Далее->';
}
?>
Должно работать, не проверял!
17.
Facecontrol (24.02.2011 / 17:41)
Так а с моим кодом кто нибудь может помочь?
18.
Facecontrol (02.03.2011 / 20:52)
CUl5-AJIb9lHC (23 Февраля 2011 / 10:36)
<?php
$start = (isset($_GET['start'])) ? (int)$_GET['start'] : 0;
$a = 10; # Количество элементов на страницу
$file = file("file.dat");
$total = count($file);
if ($start >= $total || $start < 0) {
$start = 0;
}
if ($total < $start + $a) {
$d = $total;
} else {
$d = $start + $a;
}
for ($i = $start; $i < $a; $i++) {
echo $file[$i].'<br />';
}
if ($start != 0) {
echo '<a href="test.php?start='.($start - $d).'&'.SID.'"><-Назад</a> ';
} else {
echo '<-Назад';
}
echo ' | ';
if ($total > $start + $d) {
echo '<a href="test.php?start='.($start + $d).'&'.SID.'">Далее-></a>';
} else {
echo 'Далее->';
}
?>
Должно работать, не проверял!
Странно как то он работает,сначала выводит 10 символов,потом 9,потом 8,потом 7 и т.д.Потом пустая станица с ссылками,это как исправить?
19.
Facecontrol (02.03.2011 / 23:53)
Ну что поможете?
20.
Facecontrol (03.03.2011 / 23:58)
Помогите пожалуйста
21.
Виталий (04.03.2011 / 06:14)
<?php
$start = (isset($_GET['start'])) ? (int)$_GET['start'] : 0;
$a = 10; # Количество элементов на страницу
$file = file("file.dat");
$total = count($file);
if ($start >= $total || $start < 0) {
$start = 0;
}
if ($total < $start + $a) {
$d = $total;
} else {
$d = $start + $a;
}
for ($i = $start; $i < $
d; $i++) {
echo $file[$i].'<br />';
}
if ($start != 0) {
echo '<a href="test.php?start='.($start - $d).'&'.SID.'"><-Назад</a> ';
} else {
echo '<-Назад';
}
echo ' | ';
if ($total > $start + $d) {
echo '<a href="test.php?start='.($start + $d).'&'.SID.'">Далее-></a>';
} else {
echo 'Далее->';
}
?>
вот так правильно будет работать
22.
Facecontrol (04.03.2011 / 14:06)
21.
CUl5-AJIb9lHC, спасибо всё правильно работает,теперь буду разбираться что и как,и пробовать что нибудь изменять.
23.
Facecontrol (06.03.2011 / 19:08)
Я тут код немного подправил,и изменил его так,чтоб выводились ссылки в виде цифр.Посмотрите пожалуйста,и подскажите какие есть ошибки?
<?
$start = (isset($_GET['start'])) ? (int)$_GET['start'] : 0;
$a = 4; # Количество элементов на страницу
$file = file("file.php");
$total = count($file);
$kolpage=ceil($total/$a);
if ($start >= $total || $start < 0) {
$start = 0;
}
if ($total < $start + $a) {$d=$total;}
else {$d = $start + $a;}
for ($i = $start; $i < $d; $i++)
{echo htmlspecialchars($file[$i]).'<br />';}
$c=0;while($c<=$kolpage) {echo '<a href="test.php?start='.($c+$i).'">'.$c.'</a>';$c++;}
?>
24.
Facecontrol (06.03.2011 / 23:25)
Так что скажете?
URL:
https://visavi.net/topics/18960