批改狀態(tài):合格
老師批語:
1)問答:分頁查詢的原理與偏移量的計算方法
答:所謂分頁就是將數(shù)據(jù)庫的數(shù)據(jù)按照頁面的固定顯示數(shù)量,分多次顯示。偏移量就固定的顯示數(shù)量乘以當(dāng)前頁數(shù)。
2)編程: 實現(xiàn)分頁查詢,要求有上一下,下一頁,直接跳到首頁和尾頁,中間頁的生成,以及快速頁碼跳轉(zhuǎn)功能
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>分頁查詢</title> <style> table,th,td { border: 1px solid black; } table th { background-color: lightskyblue; } table { border-collapse: collapse; width: 70%; margin: 30px auto; text-align: center; } table caption { font-size: 1.5rem; margin-bottom: 15px; } h3 { text-align: center; } h3 a { text-decoration: none; margin-left: 10px; border: 1px solid black; display: inline-block; height: 30px; min-width: 30px; padding: 0 10px; background-color: lightgreen; } h3 a:hover{ background-color: red; color: white; } </style> </head> <body> <?php //連接數(shù)據(jù)庫獲取到全部的記錄 $pdo = new PDO('mysql:host=localhost;dbname=php','root','root'); //$sql = "SELECT * FROM staff LIMIT 5, 5;"; //手工修改url中的get參數(shù)可以實現(xiàn)翻頁查詢 $page = isset($_GET['p']) ? $_GET['p'] : 1; $offset = ($page-1)*4; $sql = "SELECT * FROM `staff` LIMIT {$offset}, 4;"; $stmt = $pdo->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); //查看返回結(jié)果 // echo '<pre>'.print_r($rows,true).'</pre>'; /** * 獲取總頁數(shù)分2步: * 1.獲取總記錄數(shù) * 2.再除以每次的顯示數(shù)量,結(jié)果向上取整 */ $stmt = $pdo->prepare("SELECT COUNT(*) FROM `staff`"); $stmt->execute(); $total = $stmt->fetchColumn(0); $pages = ceil($total / 4); //獲取到總頁數(shù) $pages ?> <table> <caption>員工信息表</caption> <tr> <th>ID</th> <th>姓名</th> <th>年齡</th> <th>性別</th> <th>工資</th> </tr> <?php foreach ($rows as $row): ?> <tr> <td><?php echo $row['staff_id']; ?></td> <td><?php echo $row['name']; ?></td> <td><?php echo $row['age']; ?></td> <td><?php echo $row['sex']?'男':'女'; ?></td> <td><?php echo $row['salary']; ?></td> </tr> <?php endforeach;?> </table> <h3> <!-- 當(dāng)前是第一頁的時候,上一頁和首頁鏈接應(yīng)該不顯示--> <?php if($page != 1): ?> <a href="http://php.io/demo0910-1.php?p=1">首頁</a> <a href="http://php.io/demo0910-1.php?p= <?php // echo $page-1;//發(fā)現(xiàn)到第一頁就掛掉了,怎么辦?必須對$page=0進(jìn)行控制 echo (($page-1)==0)? 1 : ($page-1); ?>">上一頁</a> <?php endif; ?> <!--生成中間頁碼--> <!--將當(dāng)前頁碼的背景色鎖定:當(dāng)前頁碼等于GET中的參數(shù)p--> <?php for($i=1; $i<=$pages; $i++): ?> <a href="http://php.io/demo0910-1.php?p=<?php echo $i ?>" <?php echo ($i == $page) ? 'style="background-color: red;"' : ''; ?> > <?php echo $i ?> </a> <?php endfor; ?> <!--當(dāng)前已經(jīng)是最后一頁的時候,下一頁和最后一頁也應(yīng)該不顯示--> <?php if($page != $pages) :?> <a href="http://php.io/demo3.php?p= <?php //發(fā)現(xiàn)越界了,怎么辦?最大頁不能超過總頁數(shù)才可以. echo (($page+1)>$pages)?$pages:($page+1); ?>">下一頁</a> <a href="http://php.io/demo0910-1.php?p=<?php echo $pages; ?>">尾頁</a> <?php endif; ?> </h3> </body> </html>
點(diǎn)擊 "運(yùn)行實例" 按鈕查看在線實例
運(yùn)行效果圖:
總結(jié):分頁的這堂課徹底解決了公司的網(wǎng)站里面分頁的問題,原來看程序是半知半解,現(xiàn)在就一清二楚了。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號