Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: постраничная навигация - универсальная функкция function
 
 автор: tricket   (28.09.2007 в 20:52)   письмо автору
 
 

Пытаюсь полностью забыть о не ООП программировании.
И хочу написать универсальную функцию постраничной навигации!
ДА я знаю что есть гугл и поиск.
Проблема обсуждалась и не раз!
Но повсюду бездумные ифы в большом количестве и собрание в кучу 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 то с легкостью напишу...

   
 
 автор: Unkind   (28.09.2007 в 21:09)   письмо автору
 
   для: tricket   (28.09.2007 в 20:52)
 

Посмотрели бы что ли исходники данного форума.

   
 
 автор: tricket   (28.09.2007 в 21:34)   письмо автору
 
   для: Unkind   (28.09.2007 в 21:09)
 

смотрю, но сложно в чужом коде разобраться!
на базе того кода созревает алгоритм:
1)смотрим слева больше ли $now_page-$obr_page двух. если да то выводим 1 .. и колво страниц до $now_page в противном случае выводим все страницы от 1 до $now_page
2)выводим $now_page
3)аналогично с правой частью
но чтото слишком тупо получаецца...

   
 
 автор: Unkind   (28.09.2007 в 22:00)   письмо автору
 
   для: tricket   (28.09.2007 в 21:34)
 

Чем?

   
 
 автор: Ralph   (28.09.2007 в 22:51)   письмо автору
 
   для: tricket   (28.09.2007 в 21:34)
 

1.Подобную функцию писали,думаю,ВСЕ,кто не тупо передирал код,а сам вникал в проблему
2.Вы даже не хотите придумать алгоритм,а ужо беретесь писать некий универсальный код... не задумывались над тем,что если кто то знает алгоритм,то уже давно реализовал вашу идею,или нет,убедившись в ее ненужности

3.При чем здесь ООП ??? Здесь элементарная функция...

   
 
 автор: Ralph   (28.09.2007 в 22:56)   письмо автору
 
   для: Ralph   (28.09.2007 в 22:51)
 

И что значит "куча бездумных ифов","слишком много ЕСЛИ" ? К сожалению,"волшебных" операторов,позволяющих в две строки решить этот вопрос,еще не придумали...И как вы вообще собрались без проверки условий решать это ?

   
 
 автор: cheops   (30.09.2007 в 02:43)   письмо автору
 
   для: tricket   (28.09.2007 в 20:52)
 

Если уж берётесь за ООП, то создайте создавайте действительно объектно-ориентированные системы, которые смогут обеспечить постраничной навигацией и файл, и директорию с файлами и базу данных. Для этого создайте класс (можно абстрактный) с постраничной навигацией, в которой источник данных, количество позиций в источнике будут возвращаться при помощи виртуальных функций, которые реализуются в классах-наследниках. Тогда, один класс будет определять постраничную навигацию для множества источников, для каждого из которых можно унаследовать свой собственный класс.

PS Такая система описывается в нашей новой книге "Объектно-ориентированное программирование на PHP".

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования