之前查詢留言記錄的時候只是簡單的記錄輸出痛侍,當留言人數(shù)多的時候怎么呢朝氓?一次性輸出成千上百條記錄是不現(xiàn)實的魔市,第一用戶體驗差,第二影響服務器性能赵哲;所以這個時候就需要分頁待德。
- 關鍵詞:
LIMIT
,本節(jié)運用到的知識點還是之前的SQL查詢語句枫夺,在第二步驟中我們只需要將查詢記錄的SQL語句改造一下将宪。
<?php
// 查詢所有id=3的記錄
$sql = "SELECT * FROM feedback WHERE id = 3";
// 查詢前10條記錄
$sql = "SELECT * FROM feedback WHERE id = 3 LIMIT 0, 10";
相信大家已經(jīng)看出有什么不同了。
效果圖:
完整代碼:
<?php
include 'config.php';
$page = !empty($_GET['page'])?intval($_GET['page']):1;
$pagesize = 1;
// 統(tǒng)計總記錄數(shù),便于計算出總頁數(shù)
$sql = "SELECT * FROM feedback";
$result = mysqli_query($mysqli, $sql);
$total = mysqli_affected_rows($mysqli);
$total_page = ceil($total/$pagesize); // 進一法取整獲取總頁數(shù)
// 開始分頁查詢扒最,根據(jù)page計算偏移量
$offset = ($page - 1) * $pagesize;
$sql = "SELECT * FROM feedback LIMIT {$offset}, {$pagesize}";
$result = mysqli_query($mysqli, $sql);
$lists = array();
while($rows = mysqli_fetch_array($result)){
$lists[] = $rows;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>列表_留言板_科科分享</title>
<!-- 2.新建css樣式文件并根據(jù)效果圖編寫css代碼 -->
<link rel="stylesheet" href="feedback.css">
</head>
<body>
<!-- 工作區(qū)丑勤,呈現(xiàn)給用戶看的 -->
<!-- 1.開始搭建腳手架 -->
<div class="container_box">
<div class="up">
<h3 class="title">留言板</h3>
<h5 class="subtitle">LIST</h5>
</div>
<div class="down list">
<ul>
<?php
foreach($lists as $item){
?>
<li>姓名:<?php echo $item['name']?> 聯(lián)系方式:<?php echo $item['contact']?> 內(nèi)容:<?php echo $item['content']?></li>
<?php
}
?>
</ul>
<div class="pages">
<ul>
<?php
for($p = 1; $p<=$total_page; $p++){
?>
<li <?php echo ($page == $p)?'class="active"':'';?>><a href="?page=<?php echo $p?>"><?php echo $p?></a></li>
<?php
}
?>
</ul>
</div>
</div>
</div>
</body>
</html>
config.php
<?php
$localhost = '127.0.0.1'; // 數(shù)據(jù)庫地址
$user = 'root'; // 數(shù)據(jù)庫用戶名
$password = 'root'; // 數(shù)據(jù)庫密碼
$dbname = 'php_course'; // 數(shù)據(jù)庫名
$mysqli = mysqli_connect($localhost, $user, $password, $dbname);
if(mysqli_connect_errno()){
echo '連接數(shù)據(jù)庫失敗:'.mysqli_connect_error();
exit;
}
mysqli_query($mysqli, "SET NAMES UTF8");
feedback.css新增分頁樣式
/* 分頁 */
.pages{margin: 0 auto;}
.pages ul{list-style: none;}
.pages ul li{padding: 0 8px; border: 1px solid #e1e1e1;float: left;display: block;margin:0 4px;}
.pages ul li.active{background-color: #63637f;}
.pages ul li.active a{color: #fff;}
- 分頁的要點在于計算總頁碼數(shù)及計算分頁偏移量吧趣;
這里要說明一下的是偏移量(每一頁的分界記錄數(shù))法竞,比如每頁顯示10條,那么第一頁的偏移量就是0再菊,第二頁是10爪喘,第三頁是20,以此類推纠拔;
得出公式就是(當前頁數(shù)-1)* 每頁顯示記錄數(shù)秉剑;
正如我們所看到的$offset = ($page - 1) * $pagesize;
值得注意的是三元運算符
echo ($page == $p)?'class="active"':'';
相當于if($page == $p){echo 'class="active"';}else{echo '';}
最后只需把查詢出來的數(shù)據(jù)集輸出展示出來了。還是那句話稠诲,如果想要掌握記得要動手試試侦鹏,實踐是驗證真理的最好方法。如有什么講解錯誤或者不明白的地方臀叙,歡迎留言略水!