您好,登錄后才能下訂單哦!
PHP 常用模版-分頁顯示查詢所得結果
要點:
1.統計返回結果數
2.單頁顯示結果數
<?php
// 根據搜索結果呈現分頁效果
//函數1 查詢結果總數統計
function build_query($id) {
$search_query = "SELECT DISTINCT * FROM niao WHERE id = $id";
return $search_query;
}
//函數2 此函數基于當前頁和頁數生成導航頁鏈接
function generate_page_links($id, $cur_page, $num_pages) {
$page_links = '';
// 如果此頁不是第一頁,則生成“上一頁”鏈接
if ($cur_page > 1) {
$page_links .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . ($cur_page - 1) . '" aria-label="Previous><span aria-hidden="true">«</span></a></li>';
}
else {
$page_links .= '<li><span aria-hidden="true">«</span></li>';
}
// 循環瀏覽生成頁碼鏈接的頁面
//考慮頁數可能太多導致的導航鏈接層疊 $cur_page 當前頁碼
if($cur_page<8){//頁數少于5就從1~5排列頁鏈接
$i=1;
}
else{
$i= $cur_page-2; //大于5 考慮每頁保留前兩頁鏈接
}
$c_page = $cur_page;//當前頁
$z_page = $c_page+6;//最大呈現頁數控制
for ($i; $i <= $num_pages && $c_page<=$z_page; $i++,$c_page++) {
if ($cur_page == $i) {
$page_links .= '<li><a href="#">'.$i.'</a></li>';
}
else {
$page_links .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . $i . '"> ' . $i . '</a></li>';
}
}
// 如果此頁不是最后一頁,則生成“下一頁”鏈接
if ($cur_page < $num_pages) {
$page_links .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . ($cur_page + 1) . '" aria-label="Next"><span aria-hidden="true">»</span></a></li>';
}
else {
$page_links .= '<li><span aria-hidden="true">»</span></li>';
}
return $page_links;
}
// 主程序部分
//GET驗證 返回$id
require_once('get0.php');
// 計算分頁信息
//根據獲取的$_GET['page']判斷頁數,如果未獲取設定為第一頁
$cur_page = isset($_GET['page']) ? $_GET['page'] : 1;
$results_per_page = 15; // 每頁結果數
//計算結果頁上頁第一行行號
$skip = (($cur_page - 1) * $results_per_page);
// 鏈接數據庫
require_once('sql.php');
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die('Error connecting to MySQL server.');
// 查詢獲取結果總數
$query = build_query($id);
$result = mysqli_query($dbc, $query);
$total = mysqli_num_rows($result); //統計返回的結果總數
$num_pages = ceil($total / $results_per_page);//總數除以每頁結果數,計算得頁數,然后對結果向上取整數
//再次查詢獲取結果子集
$query = $query . " LIMIT $skip, $results_per_page";
$result = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($result)) {
#循環顯示內容
echo 'xxxx查詢結果';
}
// 判斷是否需要分頁
if ($num_pages > 1) {
echo'<nav aria-label="Page navigation">';
echo'<ul class="pagination">';
echo generate_page_links($id, $cur_page, $num_pages);
echo'</ul>';
echo'</nav>';
}
mysqli_close($dbc);
?>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。