Постраничная навигация кажись

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']."&nbsp;";
}else{
echo "<a href=./index.php?page=".$i.">".(($i - 1)*$config['postbooks'] + 1)."-".$i*$config['postbooks']."</a>&nbsp;";}
}else{
// Если это последняя страница, заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
if($page == $i){
echo "".(($i - 1)*$config['postbooks'] + 1)."-".($total)."&nbsp;";
}else{
echo "<a href=./index.php?page=".$i.">".(($i - 1)*$config['postbooks'] + 1)."-".($total)."</a>&nbsp;";
}}}


3. Ярослав (05.04.2010 / 21:57)
Блын,сложно это для меня.Можна как нибудь проще?я просто хочу понять как оно роботаит.

4. Игорь (05.04.2010 / 22:18)
ММмммммм...Проще не знаю как(

5. Удаленный (06.04.2010 / 02:20)
Гггг Vantuz зделай рейтинг одинаковых тем smile
"Постраничная навигация" - будет на первом месте D
И уже с большим одставанием будет - "Помогите срочно"
D

6. ramzes (06.04.2010 / 02:27)
#2, нет фильтрации, можно ронять сайт бесконечным циклом, и вообще работать не будет потому что ты из мотора скопировал код))

7. Игорь (06.04.2010 / 02:30)
6. ramzes, не с мотора))) в книжке был) smile Переменные $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; ?>
не надо доверять книжкам, и код стоит понимать прежде чем использовать, а то можно и на дыру смотреть и не видетьsmile

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, перегнал smile

14. Игорь (06.04.2010 / 03:27)
Спасибо парни) Такой вопросик как сделать этот бесконечный цикл?)

15. Удаленный (06.04.2010 / 03:28)
На фанке такая дирочка,
заходиш в приват а рам всего сообщений 32 показано 0 из 0

16. ramzes (06.04.2010 / 03:30)
В моторе тоже когда то был такой багsmile давно ещеsmile

17. Игорь (06.04.2010 / 03:30)
=) Поставил page=-99999 и т.д. и генерация с 0.076 сек. поднялась до 3.322 сек.

18. ramzes (06.04.2010 / 03:33)
Я полностью на хомяке сайты клал с тела минут на 10)) исключительно увеличивая цикл -999.... И пока не надоестsmile

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, все норм smile все работает как надо)
Есть еще вопросик: реализована функция удаления\редактирования постов. Как лучше передать номер строки которую надо изменить\удалить? Если гет то подделав запрос можно изменить чужое сообщение. sad

27. Удаленный (06.04.2010 / 04:35)
Дак сравнивай, посте добавляй автора. Совпало ок меняем, нет пшол нафиг

28. Удаленный (06.04.2010 / 04:38)
Я когдато писал чат на файлах то добавлял ячейку ид чтобы было надежнее

29. Игорь (06.04.2010 / 04:38)
27. TLENSi, ок понял спасиб. smile

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