Разбивка на страницы через цикл for

Webage

Новичок
Разбивка на страницы через цикл for

Добрый вечер уважаемые пользователи. Требуется ваша подсказка. Есть вот такой код:

PHP:
for($i = 1; $i <= $max_pages; $i++){
    	$pp = ($i == $this_page) ? $pp = $this_page_patt : $pp = str_replace('%url%', $url_pattern, $other_pages_patt);
        $pp = str_replace('%num%', $i, $pp);
		$pages_html .= $pp;
	}
С помощью его формируется разбивка на страницы. И вот, что выходит если $max_pages допустим 1000 то выводиться вся полотнянка из 1000 странниц, вернее навигация из 1000 ссылок. Можно ли как то модифицировать этот кусок кода чтоб было красиво как на яндексе или гугле. Т.е. 1-2-3-4-5….6-7-8-9…1000-1001
 

HraKK

Мудак
Команда форума
Webage
Затруднит. Что конкретно у тебя не получается? Что делал?
 

Webage

Новичок
Я подумал, что можно вставить условие если I =5 то присвоить pp значение допустим “…”
PHP:
	for($i = 1; $i <= 100; $i++){
    	 if ($i=5) {
        $pp="..";
        $i=6;
}
else {
        $pp = ($i == $this_page) ? $pp = $this_page_patt : $pp = str_replace('%url%', $url_pattern, $other_pages_patt);
        $pp = str_replace('%num%', $i, $pp);
        }

             $pages_html .= $pp;

    }
но вот как дальше я не допетрю. как в цикле предусмотреть начало т.е от первой до пятой страницы, потом от 100 до 105 и конец это от 999 до 1000:(
 

Adelf

Administrator
Команда форума
Могу предложить два варианта.

Первый простой и как раз для тебя. Незачем показывать последнюю страницу(кому она нужна то? :) погляди внизу например на http://habrahabr.ru - там первые пять страниц и все).
Поэтому смотрим - например если число страниц меньше или равно 9(например), то показываем все. Если нет, то показываем ближайшие 5 с каждой "стороны" к текущей странице и "..." если с той стороны еще есть страницы. Ну можно также показать страницу номер 1... если далеко зашли.. чтобы вернуться можно было.

Второй сложный. Такой какой ты и хочешь. Но тут будет куча условий и некрасивостей(делал так... слишком сложно получается). Может выбрать первый?

P.S. Я иногда не очень внятно объясняю. Но если вчитаться - все можно понять.
 

Webage

Новичок
Первый способ конечно лучше!! Но как написать условие:( т.е условия написать имея только максимальное кол-во страниц и все.
 

HraKK

Мудак
Команда форума
Webage
Зная что у тебя максимум Х записей, что на странице Y записей, что сложного узнать сколько у тебя будет страниц или какие записи на какой странице выводить?
 

vovanium

Новичок
Webage
Ну народ пошел обычная ж математика
F - первая страница, С - текущая, L - последняя
если L меньше 10 страниц выводим все
иначе от F до F+2 ... от С-1 до С+1 ... от L-2 до L
для красоты если 1-й и 2-й или 2-й и 3-й пересекаются или соприкасаются (чтобы не было 1 2 3 ... 4 5 6), то увеличиваем соответсвенно 1 или 3 диапазон и убирая 2-й диапазон.
 

HraKK

Мудак
Команда форума
vovanium
я сомневаюсь что он поймет, но на будущее на этом форуме готовые решения не поощряются, мог бы уяснить за это время.
 
Сверху