PHP Pagination для каждых десяти страниц без SQL, MYSQL

php pagination

65 просмотра

2 ответа

1 Репутация автора

Я искал свою проблему через Интернет, но я не нашел удовлетворительного решения.

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

Я не php кодер, и мой основной код здесь ...

function Pagination($TotalPage)
{
$PageName= substr(basename ( $_SERVER['PHP_SELF'] ) , 0, (strlen(basename ( $_SERVER['PHP_SELF'] ) )-3));

for ($x = 1; $x <= $TotalPage; $x++)
{
echo ltrim((sprintf('<a href="%s_%03d">%03d</a>&nbsp;&nbsp;&nbsp;', $PageName, $x, $x)));
}
}

(Я получаю ссылку на страницу из имени файла и увеличиваю их по одному)

Когда этот код запускается, он показывает все страницы, подобные этой (ниже страницы): http://www.mcuma.com/doku.php/mesnevi/birinci_cilt_001

Если кто-нибудь поможет изменить код в соответствии с моими потребностями, я буду очень рад.

С уважением,

Мета

Автор: mcuma Источник Размещён: 18.07.2016 10:10

Ответы (2)


0 плюса

4981 Репутация автора

Для нумерации страниц вы должны знать, на какой странице вы находитесь. Это последние три цифры, если я правильно понимаю. Так:

$currentpage = substr($_SERVER['PHP_SELF'], -3);

Теперь это зависит от того, что вы хотите сделать. Если вы хотите презентацию, как на скриншоте. Так как обрезка и sprintf слишком длинные, чтобы я мог печатать, я просто напишу link(pagename, number, caption)и предположу, что такая функция существует

$first = 1; // this is a magic var.
$range = 3; // as is this.

$prev = max($currentpage-1, $first);            // find prev
$low = max($currentpage-$range, $first+1);      // clip low
$high = min($currentpage+$range, $TotalPage-1); // clip high
$next = min($currentpage+1, $TotalPage);        // find next

link($PageName, $prev, '&laquo;');
link($PageName, $first, $first);
if ($low-1 != $first) { echo '...'; }
for($x = $low; $x <= $high; $x++) {
  link($PageName, $x, $x);
}
if ($high+1 != $TotalPage) { echo '...'; }
link($pageName, $TotalPage, $TotalPage);
link($PageName, $next, '&raquo;');
Автор: Jakumi Размещён: 19.07.2016 03:00

0 плюса

1 Репутация автора

Большое спасибо, Jakumi , согласно вашему поучительному ответу, я изменил только функцию link () в вашем коде, потому что мой релиз PHP не поддерживает функцию link ().

Это может быть долго и не умно, но это прекрасно работает для меня. Еще раз спасибо, мой друг Джакуми .

function PG($TP)
{
$PN= substr(basename ( $_SERVER['PHP_SELF'] ) , 0, (strlen(basename (      $_SERVER['PHP_SELF'] ) )-3)); // page name  
$currentpage = intval(substr($_SERVER['PHP_SELF'], -2)); // page number as integer 

$first = 1; // this is a magic var.
$range = 10; // as is this. 

$prev = max($currentpage-1, $first);       // find prev
$low = max($currentpage-$range, $first+1); // clip low
$high = min($currentpage+$range, $TP-1); // clip high
$next = min($currentpage+1, $TP);        // find next

echo ltrim(sprintf('<a href="%s_%02d">&laquo;</a>&nbsp;&nbsp;&nbsp;', $PN,  $prev, $prev)); 
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $first, $first));   

if ($low-1 != $first) { echo '... &nbsp;&nbsp;&nbsp;'; }
for($x = $low; $x <= $high; $x++) {
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $x, $x));   
 }
 if ($high+1 != $TP) { echo '... &nbsp;&nbsp;&nbsp;'; }

 echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $TP, $TP));    
 echo ltrim(sprintf('<a href="%s_%02d">&raquo;</a>&nbsp;&nbsp;&nbsp;', $PN, $next, $next)); 
 }
Автор: mcuma Размещён: 17.09.2016 01:08
Вопросы из категории :
32x32