Постраничная навигация кажись
1.
Ярослав (05.04.2010 / 21:25)
Вот написал я гостю и осталось дописать одну фичу.Типа есле на странице больше 10 сообщений то перекинуть на новую страницу.И чтобы с низу било типа на 1 страницу (кажись это називается постраничная навигация,хотя я не знаю).Подскажите как организовать?желательно примерчик.
2.
Игорь (05.04.2010 / 21:35)
Она самая=)
<?php
// Имя файла
$filename = "book.dat";
// Читаем содержимое файла построчно в массив $lines
$lines = file($filename);
$config['postbooks']="10";
// Сортируем массив
$lines = array_reverse($lines);
// Проверяем, передан ли номер текущей страницы
if(isset($_GET['page'])){ $page = $_GET['page'];
}else{ $page = 1;}
// Число страниц
$total = count($lines);
if($total<1){echo'<br><img src="../images/reload.gif" alt=""> <b>Сообщений нет!</b><br>';}
$number = (int)($total/$config['postbooks']);
if((float)($total/$config['postbooks']) - $number != 0) $number++;
$start = (($page - 1)*$config['postbooks']);
$end = $page*$config['postbooks'];
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++){
//действия над строками
}
// Постраничная навигация
for($i = 1; $i <= $number; $i++){
// Если это произвольная страница
if($i != $number){
if($page == $i){
echo "".(($i - 1)*$config['postbooks'] + 1)."-".$i*$config['postbooks']." ";
}else{
echo "<a href=./index.php?page=".$i.">".(($i - 1)*$config['postbooks'] + 1)."-".$i*$config['postbooks']."</a> ";}
}else{
// Если это последняя страница, заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
if($page == $i){
echo "".(($i - 1)*$config['postbooks'] + 1)."-".($total)." ";
}else{
echo "<a href=./index.php?page=".$i.">".(($i - 1)*$config['postbooks'] + 1)."-".($total)."</a> ";
}}}
3.
Ярослав (05.04.2010 / 21:57)
Блын,сложно это для меня.Можна как нибудь проще?я просто хочу понять как оно роботаит.
4.
Игорь (05.04.2010 / 22:18)
ММмммммм...Проще не знаю как(
5.
Удаленный (06.04.2010 / 02:20)
Гггг Vantuz зделай рейтинг одинаковых тем
"Постраничная навигация" - будет на первом месте
И уже с большим одставанием будет - "Помогите срочно"
6.
ramzes (06.04.2010 / 02:27)
#2, нет фильтрации, можно ронять сайт бесконечным циклом, и вообще работать не будет потому что ты из мотора скопировал код))
7.
Игорь (06.04.2010 / 02:30)
6.
ramzes, не с мотора))) в книжке был)
Переменные $config['postbooks'] не означают что мотор))
8.
Удаленный (06.04.2010 / 03:07)
2, Где такие книги продают в котых простейшие дыры?
9.
Игорь (06.04.2010 / 03:09)
Аля издатель БХВ-Петербург
10.
Игорь (06.04.2010 / 03:09)
Подскажите как ее "залатать"=)
11.
ramzes (06.04.2010 / 03:20)
#7 без разницы, используешь необьявленные переменные.
Работать не будет.
#10
<?php $page = isset($_GET['page']) ? abs(inval($_GET['page'])) : 0; ?>
не надо доверять книжкам, и код стоит понимать прежде чем использовать, а то можно и на дыру смотреть и не видеть
12.
Удаленный (06.04.2010 / 03:23)
Впринципе сетезных нету.
Но ето замени
<?
if(isset($_GET['page'])){ $page = $_GET['page'];
}else{ $page = 1;}
//на
if(isset(intval($_GET['page']))){ $page = (int)$_GET['page'];
}else{ $page = 1;}
При попадании лишнего в $_GET['page'] выдаст резултат $start=-10; $end=0;
13.
Удаленный (06.04.2010 / 03:25)
11.
ramzes, перегнал
14.
Игорь (06.04.2010 / 03:27)
Спасибо парни) Такой вопросик как сделать этот бесконечный цикл?)
15.
Удаленный (06.04.2010 / 03:28)
На фанке такая дирочка,
заходиш в приват а рам всего сообщений 32 показано 0 из 0
16.
ramzes (06.04.2010 / 03:30)
В моторе тоже когда то был такой баг
давно еще
17.
Игорь (06.04.2010 / 03:30)
=) Поставил page=-99999 и т.д. и генерация с 0.076 сек. поднялась до 3.322 сек.
18.
ramzes (06.04.2010 / 03:33)
Я полностью на хомяке сайты клал с тела минут на 10)) исключительно увеличивая цикл -999.... И пока не надоест
19.
Игорь (06.04.2010 / 03:33)
18.
ramzes, =) Еще раз спасибо)
20.
Игорь (06.04.2010 / 03:36)
Еще вопросик: ввожу в адресную ?page= ну и соответственно сообщения исчезают, это как лучше исправить?)
21.
Удаленный (06.04.2010 / 03:58)
Добавь if($page<1)$page=1;
22.
Удаленный (06.04.2010 / 04:00)
или поставь пост-12
23.
Игорь (06.04.2010 / 04:03)
у меня так изначально было)) этож кусок кода сверху была такая же проверка) теперь в самом верху стоит
<?php if(isset($_GET['page'])){ $page = abs(intval($_GET['page'])); }else{ $page = 1;}// и далее в коде
if($page<1)$page=1;
24.
Удаленный (06.04.2010 / 04:09)
И че?
25.
Удаленный (06.04.2010 / 04:10)
Блин сайтом надо заниматся но щас напишу
26.
Игорь (06.04.2010 / 04:11)
24.
TLENSi, все норм
все работает как надо)
Есть еще вопросик: реализована функция удаления\редактирования постов. Как лучше передать номер строки которую надо изменить\удалить? Если гет то подделав запрос можно изменить чужое сообщение.
27.
Удаленный (06.04.2010 / 04:35)
Дак сравнивай, посте добавляй автора. Совпало ок меняем, нет пшол нафиг
28.
Удаленный (06.04.2010 / 04:38)
Я когдато писал чат на файлах то добавлял ячейку ид чтобы было надежнее
29.
Игорь (06.04.2010 / 04:38)
27.
TLENSi, ок понял спасиб.
30.
Ярослав (06.04.2010 / 10:52)
Ех что же делать?
31.
Роман (06.04.2010 / 11:25)
30. Что делать... что делать... Сухари сушить! Те постраничный вывод из файлов надо или базы?
32.
Ярослав (06.04.2010 / 21:45)
31.
Taurus, из файла base.txt
URL:
https://visavi.net/topics/7846