распечатка страниц, усечение большого количества страниц в переполнении стека

У меня есть php-скрипт Photo Gallery … с реальным скриптом, у меня проблема, потому что я протестировал его и обнаружил, что если в разделе разбивки на страницы большое количество страниц, у скрипта возникают проблемы с отображением количества страниц, когда более 25 страниц … Я хотел бы обрезать показанные страницы, сохраняя только первые текущие страницы (например, сохраняя текущие 10 страниц, если общее количество страниц превышает 10, или сохраняя меньше текущих страниц, если общее количество страниц меньше 10) и сохраняя предыдущую и следующую ссылки без изменений … спасибо!

Пример:

если общее количество страниц> 10

< 1 2 3 4 5 6 7 8 9 10>

если общее количество страниц> 100 и я просматриваю страницу 12

< 3 4 5 6 7 8 9 10 11 12>

если общее количество страниц> 100 и я просматриваю страницу 52

< 43 44 45 46 47 48 49 50 51 52>

и так что …

но если общее количество страниц меньше 10, показывается нормальное разбиение на страницы …

< 1 2 3 4 5 6 7>

так должно быть:

предыдущая + 10 + следующая

или если меньше 10

предыдущая + всего страниц + следующая

Моя фотогалерея с предыдущими / актуальными / следующими страницами:

http://i.stack.imgur.com/TIeMB.jpg

Здесь вы можете увидеть проблему:

http://i.stack.imgur.com/svoHf.jpg

Вот часть основного скрипта … есть ли способ обрезать страницы до 25 элементов?

  // display pagination
function print_pagination($numPages,$currentPage) {
$p = htmlentities($p, ENT_QUOTES);
$currentPage = htmlentities($currentPage, ENT_QUOTES);
echo 'Pagina '. $currentPage .' di '. $numPages;
if ($numPages > 1) {
echo '&nbsp;&nbsp;';
if ($currentPage > 1) {
$prevPage = $currentPage - 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $prevPage.'" class="direction">&#8678;</a>';
}
for ($e = 0; $e < $numPages; $e++ ) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
echo '<a class="'. $class .'" href="'. $_SERVER['PHP_SELF'] .'?p='. $p .'">'. $p .'</a>';
}
if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $nextPage.'" class="direction">&#8680;</a>';
}
}
}

с правкой, предложенной HD, я получаю:

// display pagination
function print_pagination($numPages,$currentPage) {
$p = htmlentities($p, ENT_QUOTES);
$currentPage = htmlentities($currentPage, ENT_QUOTES);
echo 'Pagina '. $currentPage .' di '. $numPages;
if ($numPages > 1) {
echo '&nbsp;&nbsp;';
if ($currentPage > 1) {
$prevPage = $currentPage - 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $prevPage.'" class="direction">&#8678;</a>';
}
for ($e = 0; $e < $numPages; $e++ ) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
if ($currentPage == $p) {
echo ' <a class="'. $class .'" href="'. $_SERVER['PHP_SELF'] .'?p='. $p .'">'. $p .'</a> ';
break;
}
}
if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $nextPage.'" class="direction">&#8680;</a>';
}
}
}

Моя галерея с усеченными номерами страниц: Pagina 45 di 59 ⇦ 45 ⇨

другие страницы отсутствуют …

Спасибо!

0

Решение

Вы можете просто break; от for цикл после 10 итераций.

for ($e = 0; $e < $numPages; $e++) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
echo '<a class="' . $class . '" href="' . $_SERVER['PHP_SELF'] . '?p=' . $p . '">' . $p . '</a>';

if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="' . $_SERVER['PHP_SELF'] . '?p=' . $nextPage . '" class="direction">&#8680;</a>';
}//Come out of the loop after 10 pages...
if (($currentPage + 10) == $p) {
break;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]