разбиение на страницы - 10 страниц за страницу

У меня есть сценарий разбиения на страницы, который отображает список всех страниц как так:
prev [1][2][3][4][5][6][7][8][9][10][11][12][13][14] next
Но я хотел бы только показать десять из чисел за один раз:
prev [3][4][5][6][7][8][9][10][11][12] next

Как я могу выполнить это? Вот мой код до сих пор:

<?php
/* Set current, prev and next page */
$page = (!isset($_GET['page']))? 1 : $_GET['page']; 
$prev = ($page - 1);
$next = ($page + 1);

/* Max results per page */
$max_results = 2;

/* Calculate the offset */
$from = (($page * $max_results) - $max_results);

/* Query the db for total results. 
   You need to edit the sql to fit your needs */
$result = mysql_query("select title from topics");

$total_results = mysql_num_rows($result);

$total_pages = ceil($total_results / $max_results);

$pagination = '';

/* Create a PREV link if there is one */
if($page > 1)
{
    $pagination .= '< a href="?page='.$prev.'">Previous</a> ';
}

/* Loop through the total pages */
for($i = 1; $i <= $total_pages; $i++)
{
    if(($page) == $i)
    {
        $pagination .= $i;
    }
    else
    {
        $pagination .= '< a href="index.php?page='.$i.'">'.$i.'</a>';
    }
}

/* Print NEXT link if there is one */
if($page < $total_pages)
{
    $pagination .= '< a hr_ef="?page='.$next.'"> Next</a>';
}

/* Now we have our pagination links in a variable($pagination) ready to
   print to the page. I pu it in a variable because you may want to
   show them at the top and bottom of the page */

/* Below is how you query the db for ONLY the results for the current page */
$result=mysql_query("select * from topics LIMIT $from, $max_results ");

while ($i = mysql_fetch_array($result))
{
    echo $i['title'].'<br />';
}
echo $pagination;
?> 
11
задан Carson Myers 14 June 2010 в 11:54
поделиться

2 ответа

10 следующих страниц

for($i = $page + 1; $i <= min($page + 11, $total_pages); $i++)

или если вы хотите 5 предыдущих и 5 следующих

for($i = max(1, $page - 5); $i <= min($page + 5, $total_pages); $i++)
30
ответ дан 3 December 2019 в 02:40
поделиться

Если вам просто нужно быстрое исправление, вы можете попробовать немного изменить цикл for . Например, вы не захотите начинать с 1, и вам не обязательно будет цикл while $ i <= $ total_pages .

Отображение нечетного количества ссылок на страницы может иметь больше смысла: вы бы отобразили текущую страницу, затем четыре слева от нее и четыре справа. Примерно так:

for($i = $page_number - 4; $i <= $page_number + 4; $i++) {

, но вам, очевидно, нужно сделать немного больше, чтобы убедиться, что вы не отображаете отрицательные числа или отображаете больше ссылок, чем страниц.

0
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: