|
|
|
| Пытаюсь полностью забыть о не ООП программировании.
И хочу написать универсальную функцию постраничной навигации!
ДА я знаю что есть гугл и поиск.
Проблема обсуждалась и не раз!
Но повсюду бездумные ифы в большом количестве и собрание в кучу html и PHP кода!!!
Вид навигации стандартный
1 .. 6 7 8 .. 100
Хочу написать фунцию, которая выглядит так:
function page_link($now_page,$max_page,$obr_page){
#$now_page-страница на которой мы сейчас
#$max_page-максимальное количество страниц на сайте!
#$obr_page-страниц слева и справа от текущей!
#код функции
return array();
#возращаем массив типа
#ммассив в следующем блоке кода
}
|
массив страниц
Array
(
[1] => Array
(
[page] => 1
[url] => url
)
[2] => Array
(
[page] => ..
[url] =>
)
[3] => Array
(
[page] => 94
[url] => URL
)
[4] => Array
(
[page] => 95
[url] => URL
)
)
|
ну а дальше обрабатывать массив шаблонизатором.
но я никак не могу написать толковый алгоритм! помогите пожалуйста...слишком многа всяких ЕСЛИ.
Типа что будет если последняя, пред последняя, первая, вторая. Учесть где ставить разделители "..".
Просьба помочь именно с алгоритмом!!! код php то с легкостью напишу... | |
|
|
|
|
|
|
|
для: tricket
(28.09.2007 в 20:52)
| | Посмотрели бы что ли исходники данного форума. | |
|
|
|
|
|
|
|
для: Unkind
(28.09.2007 в 21:09)
| | смотрю, но сложно в чужом коде разобраться!
на базе того кода созревает алгоритм:
1)смотрим слева больше ли $now_page-$obr_page двух. если да то выводим 1 .. и колво страниц до $now_page в противном случае выводим все страницы от 1 до $now_page
2)выводим $now_page
3)аналогично с правой частью
но чтото слишком тупо получаецца... | |
|
|
|
|
|
|
|
для: tricket
(28.09.2007 в 21:34)
| | Чем? | |
|
|
|
|
|
|
|
для: tricket
(28.09.2007 в 21:34)
| | 1.Подобную функцию писали,думаю,ВСЕ,кто не тупо передирал код,а сам вникал в проблему
2.Вы даже не хотите придумать алгоритм,а ужо беретесь писать некий универсальный код... не задумывались над тем,что если кто то знает алгоритм,то уже давно реализовал вашу идею,или нет,убедившись в ее ненужности
3.При чем здесь ООП ??? Здесь элементарная функция... | |
|
|
|
|
|
|
|
для: Ralph
(28.09.2007 в 22:51)
| | И что значит "куча бездумных ифов","слишком много ЕСЛИ" ? К сожалению,"волшебных" операторов,позволяющих в две строки решить этот вопрос,еще не придумали...И как вы вообще собрались без проверки условий решать это ? | |
|
|
|
|
|
|
|
для: tricket
(28.09.2007 в 20:52)
| | Если уж берётесь за ООП, то создайте создавайте действительно объектно-ориентированные системы, которые смогут обеспечить постраничной навигацией и файл, и директорию с файлами и базу данных. Для этого создайте класс (можно абстрактный) с постраничной навигацией, в которой источник данных, количество позиций в источнике будут возвращаться при помощи виртуальных функций, которые реализуются в классах-наследниках. Тогда, один класс будет определять постраничную навигацию для множества источников, для каждого из которых можно унаследовать свой собственный класс.
PS Такая система описывается в нашей новой книге "Объектно-ориентированное программирование на PHP". | |
|
|
|