簡體   English   中英

如何限制頁面在PHP中的分頁

[英]How to limit pages in pagination in php

我想使頁面不超過10個,該代碼顯示頁面數

for ($page=1;$page<=$number_of_pages;$page++) {
 echo '<a href="m.search.php?page=' . $page . '">' . $page . '</a> ';
}`

這是輸出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

我想讓它像這樣

1 2 3 4 5 6 7 8 9 10 ...

如果第10頁上的即時消息會顯示如下

1 .. 10 11 12 13 14 15 16 17 18 19 20 ... 25

我不知道如何使這項工作

這就是來源

<?php
if(isset($_POST['search']))
{
unset($_SESSION['keyword']);
$KeyWord = $_POST['keyword'];
$_SESSION['keyword'] = $KeyWord;
}
$KW = $_SESSION['keyword'];
$results_per_page = 1;
$sql="SELECT * FROM books_data WHERE Book_Title LIKE '%$KW%' OR Book_Author         
LIKE '%$KW%' ORDER BY Book_Title";
$result = mysqli_query($connect, $sql);
$number_of_results = mysqli_num_rows($result);

$number_of_pages = ceil($number_of_results/$results_per_page);

if (!isset($_GET['page'])) {
  $page = 1;
} else {
  $page = $_GET['page'];
}

$this_page_first_result = ($page-1)*$results_per_page;
$sql="SELECT * FROM books_data WHERE Book_Title LIKE '%$KW%' OR Book_Author LIKE '%$KW%' ORDER BY Book_Title LIMIT $this_page_first_result,         $results_per_page";
$result = mysqli_query($connect, $sql);
$query = "SELECT * FROM books_data WHERE Book_Title LIKE '%$KW%' OR  Book_Author LIKE '%$KW%' ORDER BY Book_Title ASC";
$sql = mysqli_query($connect, $query);
$nurows = mysqli_num_rows($sql);
$numrows = $connect->query($query);
if($nurows == 0 OR $nurows == 1)
{
$restext = "result";
}
else
{
$restext = "results";
}
if(isset($_POST['search']))
{
$num = 0;
$desc = "result. Keyword is blank... Please try again.";
}
else
{
$num = '';
$desc = '';
}
?>
<p><strong><?php $num ?> </strong><?php $desc ?> </p>
<?php 
?> <p><strong><?php echo $nurows; ?> </strong> <?php echo $restext;?> for '<?php echo $KW; ?>'</p>
<?php
while($row = mysqli_fetch_array($result)) {

$bookid = $row['Book_ID'];
$booktitle = $row['Book_Title'];
$bookauthor = $row['Book_Author'];
$bookimg = $row['Book_IMG_Name'];

echo "<hr><a href=\"../../pass.php?id=$bookid&kw=$KW\"><img src='../../images/bookimg/$bookimg' class='bookimg'></a><h3><a href=\"../../pass.php?id=$bookid&kw=$KW\">$booktitle</a></hr><p><font style='font-size: 15px;'><font style='font-style: italic;'>by " . $bookauthor . '</p></font><br />';

}

for ($page=1;$page<=$number_of_pages;$page++) {
  echo '<a href="m.search.php?page=' . $page . '">' . $page . '</a> ';
}

嘗試以下方法:

function pageList($pages, $current_page)
{
    $output = '';
    $previous_page = 0;
    foreach($pages as $page)
    {
        if ($page - $previous_page > 2)
        {
            $output.= '... ';
        }
        else
        if ($page - $previous_page === 2)
        {
            $output.= '... ';
        }

        $output.= "<a href=\"m.search.php?page=$page\">$page</a> ";
        $previous_page = $page;
    }

    return $output;
}

function createPagination($current_page, $number_of_pages)
{
    $page_span = 5;
    $middle_min = max($current_page - $page_span, 1);
    $middle_max = min($current_page + $page_span, $number_of_pages);
    $pages = range($middle_min, $middle_max);
    if ($middle_min !== 1)
    {
        array_unshift($pages, 1);
    }

    if ($middle_max !== $number_of_pages)
    {
        $pages[] = $number_of_pages;
    }

    return pageList($pages, $current_page);
}

$current_page = isset($_GET['page']) ? $_GET['page'] : 1;
$number_of_pages = 25;
echo createPagination($current_page, $number_of_pages);

這將顯示所選頁面之前和之后的5個頁面。 只需編輯$page_span即可確定要顯示的頁面數。 這使用一個簡單的循環來循環從最小到最大范圍的值范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM