Отображение pagination php 5pages

Я использую разбиение на страницы, используя этот учебник .

Все в порядке, но я хочу изменить отображение номеров страниц.

Код учебника создает ссылки на страницы, как показано ниже.

For page 1 : [1] 2 3 4 > >> For page 6 : << < 3 4 5 [6] 7 8 9 > >> ( 3 pages range before and after). 

Я хочу изменить только 5 страниц.

 For page 1: [1] 2 3 4 5 > >> For page 3: 1 2 [3] 4 5 > >> For page 5: 1 2 3 4 [5] > >> For page 6: << < [6] 7 8 9 10 > >> For page 10: << < 6 7 8 9 [10] > >> 

Я думаю, что эту часть нужно изменить. Я пытался искать другие статьи, но я не мог найти их. что такое хорошая логика для изменения? Благодарю.

 // loop to show links to range of pages around current page for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) { // if it's a valid page number... if (($x > 0) && ($x <= $totalpages)) { // if we're on current page... if ($x == $currentpage) { // 'highlight' it but don't make a link echo " [<b>$x</b>] "; // if not current page... } else { // make it a link echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> "; } // end else } // end if } // end for 

Добавлено:

Последняя страница также в формате 5 страниц

 For page 1: [1] 2 3 4 5 > >> For page 3: 1 2 [3] 4 5 > >> For page 5: 1 2 3 4 [5] > >> For page 6: << < [6] 7 8 9 10 > >> For page 10: << < 6 7 8 9 [10] > >> For last page 12: << < 8 9 10 11[12] 

Я пытаюсь поставить 5 страниц чисел как группу в массиве, чтобы использовать ее с in_array. Пока нет успеха.

Добавлено:

Как-то я заставляю его работать … Но текущая страница всегда в центре, и я не хочу … 🙁

 // range of num links to show //$range = 3; $range = 2; .... // Added from here... if (($currentpage - $range) <= 1){ $start_x = 1; $end_x = 5; } else if ($currentpage >= ($totalpages - $range)){ $start_x = $totalpages - 4; $end_x = $totalpages; } else { $start_x = $currentpage - $range; $end_x = $currentpage + $range; } // Until here // loop to show links to range of pages around current page // for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) { for ($x = $start_x; $x < ($end_x + 1); $x++) { // if it's a valid page number... if (($x > 0) && ($x <= $totalpages)) { // if we're on current page... if ($x == $currentpage) { // 'highlight' it but don't make a link echo " [<b>$x</b>] "; // if not current page... } else { // make it a link echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> "; } // end else } // end if } // end for 

Результат:

 For page 1: [1] 2 3 4 5 > >> For page 3: 1 2 [3] 4 5 > >> For page 5: << < 3 4 [5] 6 7 > >> For page 6: << < 4 5 [6] 7 8 > >> For page 10: << < 8 9 [10] 11 12 > >> For last page 12: << < 8 9 10 11[12] 

Я все еще хочу как ..

 For page 1: [1] 2 3 4 5 > >> For page 3: 1 2 [3] 4 5 > >> For page 5: 1 2 3 4 [5] > >> For page 6: << < [6] 7 8 9 10 > >> For page 10: << < 6 7 8 9 [10] > >> For last page 12: << < 8 9 10 11[12] 

 // loop to show links to range of pages around current page for ($x = 1; $x <= ($totalpages); $x++) { // if it's a valid page number... if (($x > 0) && ($x <= $totalpages)) { //limit for each 5 pages if ($x % 5 == 0) { // if we're on current page... if ($x == $currentpage) { // 'highlight' it but don't make a link echo " [<b>$x</b>] "; // if not current page... } else { // make it a link echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> "; } // end else } } // end if } // end for