Так что я делаю это на PHP, но это логическая проблема, поэтому я постараюсь написать ее как можно больше.Проблема с разбивкой по страницам [PHP]
Для начала вот как это разбиение на страницах скрипт работает:
- для (рисовать первую три страницы ссылку)
- если (ничья многоточие (...) если есть страницы между страницами # 1 в и # 3 странички)
- для (нарисовать текущую страницу и две страницы на каждой стороне она связывает)
- если (рисовать elipsis (...) если есть страницы между # 3-х страниц и # 5 страничек)
- для (рисовать последних трех страницах ссылки)
Проблема заключается в том, что, когда есть небольшие количества страниц (я заметил это, когда число страниц было в 10), должен быть многоточие, но ни один не нарисован.
Onto кода:
$page_count = 10; //in actual code this is set properly
$current_page = 1; //in actual code this is set properly
for ($i = 1;$i <= 3;$i++)
{
if ($page_count >= $i)
echo $i;
}
if ($page_count > 3 && $current_page >= 7)
echo "...";
for ($i = $current_page - 2;$i <= current_page + 2;$i++)
{
if ($i > 3 && $i < $page_count - 2)
echo $i;
}
if ($page_count > 13 && $current_page < $page_count - 5)
echo "...";
for ($i = $page_count - 2;$i <= $page_count;$i++)
{
if ($page_count > 3)
echo $i;
}
Так что я полагаю, лучшая идея будет заключаться в изменении одного из два многоточия, если заявления включать дела, как это, однако я пытался, и я в тупике.
Также обратите внимание, что я конденсируется этот код ради читаемости поэтому, пожалуйста, не дают советов, как «те, для петель неэффективны, потому что они будут пересчитывать current_page - 2 для каждой итерации», потому что я знаю :)
Для тех, кто хочет увидеть разбивку того, как работает эта логика, вот пример вывода (измененный) с итерированием $ page_count и $ current_page. http://rafb.net/p/TNa56h71.html
Это не проблема PHP! Не добавляйте тег PHP, поскольку пример кода даже не написан на PHP! – 2008-11-21 06:32:17
Возможно, вы захотите указать * рабочий код примера, чтобы люди, которые хотят протестировать вашу логику, не должны повторно реализовывать ваш код «psuedo» на своем родном языке, чтобы они могли проверить, что он что-то делает. – 2008-11-21 06:37:22