помогите с разбивкой по страницам - PullRequest
1 голос
/ 28 января 2010

Привет, ребята, я использую эту вторую часть сценария нумерации страниц, чтобы показать нумерацию страниц;

<?
if ($pageno == 1) {
   echo "<li class='previous-off'>«« İlk Sayfa</li> <li class='previous-off'>« Önceki Sayfa</li> ";
} else {
   echo " <li><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=1'>«« İlk Sayfa</a></li> ";
   $prevpage = $pageno-1;
   echo "<li> <a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$prevpage'>« Önceki Sayfa</a> </li>";
} // if
echo " <li class='active'>$pageno</li>";
if ($pageno == $lastpage) {
   echo " <li class='previous-off'>«« Sonraki</li> <li class='previous-off'>« Son Sayfa</li> ";
} else {
   $nextpage = $pageno+1;
   echo " <li class='next'><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$nextpage'>Sonraki »</a></li> ";
   echo " <li class='next'><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$lastpage'>Son Sayfa »»</a></li> ";
} // if
?>

как вы видите здесь: echo " <li class='active'>$pageno</li>"; я могу показать только первую, предыдущую, активную страницу, следующую, последнюю страницу ..

мой вопрос: я хочу показать больше страниц рядом с активной страницей .. как я могу это сделать?

Я имею в виду стиль нумерации страниц:

ПЕРВЫЙ ПРЕДЫДУЩАЯ 1 СЛЕДУЮЩАЯ ПОСЛЕДНЯЯ

я хочу

ПЕРВЫЙ ПРЕДЫДУЩИЙ 1 2 3 4 5 6 7 СЛЕДУЮЩИЙ ПОСЛЕДНИЙ

спасибо

Ответы [ 3 ]

2 голосов
/ 28 января 2010

Просто добавьте цикл, который проходит от первого до последнего номера страницы:

for($page_number = 1; $page_number <= $amount_of_pages; $page_number++)
    if($page_number == $pageno)
        echo " <li class='active'>$page_number (active)</li>";
    else
        echo " <li class='active'><a href="...">$page_number</a></li>";

Чтобы разрешить эту работу, вам нужно найти максимальное количество элементов и поделить его на количество элементов на странице:

$result = mysql_query("SELECT COUNT(*) FROM table");
$row = mysql_fetch_row($result);
$amount_of_items = $row[0];
$amount_of_pages = $amount_of_items / 10; // 10 items on a page

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

0 голосов
/ 28 января 2010
<?
if ($pageno == 1) {
   echo "<li class='previous-off'>«« İlk Sayfa</li> <li class='previous-off'>« Önceki Sayfa</li> ";
} else {
   echo " <li><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=1'>«« İlk Sayfa</a></li> ";
   $prevpage = $pageno-1;
   echo "<li> <a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$prevpage'>« Önceki Sayfa</a> </li>";
} // if
for($page_number = 1; $page_number <= $lastpage; $page_number++)
if($page_number == $pageno) {
echo "<li class='active'>$pageno</li>";
}
else {
echo "<li><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$page_number'>$page_number</a></li>";
}

if ($pageno == $lastpage) {
   echo " <li class='previous-off'>«« Sonraki</li> <li class='previous-off'>« Son Sayfa</li> ";
} else {
   $nextpage = $pageno+1;
   echo " <li class='next'><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$nextpage'>Sonraki »</a></li> ";
   echo " <li class='next'><a href='{$_SERVER['PHP_SELF']}?isim=$kid&sayfa=$lastpage'>Son Sayfa »»</a></li> ";
} // if
?>

это исправленная версия. отлично работает.

0 голосов
/ 28 января 2010

Между частью, которая отображает ссылки на предыдущую страницу, и частью, которая отображает ссылки на следующую страницу, необходим цикл между 1 и общим числом страниц.

<?php
$currentPage = 3;
$totalPages = 10;
?>

<a href="">First page</a>
<a href="">Prev page</a>

<?php
for ($i = 0; < $totalPages; $i++) {
    printf('<a href="%s?page=%d" class="%s">Page %d</a>', $_SERVER['PHP_SELF'], $i, ($i == $currentPage ? 'active' : ''), $i);
}
?>

<a href="">Next page</a>
<a href="">Last page</a>
...