列表分頁展示和關鍵字搜索

本節我們來說下關於分頁顯示和關鍵字搜尋功能的做法。

做分頁功能我們同樣首先要連接資料庫,取得資料。大多數情況下我們可以將分頁和搜尋功能寫在同一個php頁面中。

接著我們來分析分頁功能的流程:

首先我們要設定每頁顯示多少條,一共有多少條數據,這樣我們就知道一共有多少頁,還有就是我們目前顯示在第幾頁。

下面我們對照程式碼來進行詳細講解:

<?php
//分页功能
$pageSize = 5; //每页显示多少条记录
$rowCount = 0; //共有多少条记录
$pageNow = 1; //希望显示第几页
$pageCount = 0; //一共有多少页
//根据分页链接来修改当前页的值
if (!empty($_GET['page'])) {
 $pageNow = $_GET['page'];
}
//这里是关键词的搜索
$key=isset($_GET['key'])?'':$_GET['key'];//判断前段页面传递过来的关键词是否存在
$cid=isset($_GET['cid'])?'':$_GET['cid'];
$condition='1=1';        //这个条件是保证在搜索栏中没有任何输入的时候能正常显示
if(!empty($key)){           
 $condition.=" and content LIKE '%{$key}%'";
}
if(!empty($cid)){
 $condition.=" and cid={$cid}";
}
//根据分页链接来修改 $pageNow的值。
$sql = "select count(*) from list WHERE {$condition}"; //根据$condition条件来进行查询
$res1 = mysqli_query($link,$sql);//将查询的结果赋值给$res1
//取出行数
if ($row = mysqli_fetch_row($res1)) {
 $rowCount = $row[0];
} //取得$rowCount,,进而我们就知道了$pageCount这两个数值了
//计算共有多少页
$pageCount = ceil($rowCount / $pageSize);
$pageStart = ($pageNow - 1) * $pageSize;
//发送带有分页的sql结果
//根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。
$sql = "select * from list WHERE {$condition} order BY id limit $pageStart,$pageSize";
$res2 = mysqli_query($link,$sql) or die('无法获取结果集' . mysqli_connect_error());
$prev = ($pageNow - 1 <= 0 )?1:$pageNow-1; //上一页
$next = ($pageNow + 1 > $pageCount)?$pageCount:$pageNow+1; //下一页
?>

我們將分頁,關鍵字搜尋放在了一個頁面當中。

在我們的前端頁面中,我們也需要進行一些改動:

    <a href="?page=<?php echo $prev;?>">上一页</a>         
    <?php for($i=1; $i<=$pageCount; $i++):?>
      <a href="?page=<?php echo $i;?> " <?php echo $i;?></a>
    <a href="?page=<?php echo $next;?>">下一页</a>

而搜尋功能需要將我們根據關鍵字所搜到的資料在前端頁面進行循環出來。

<li>
  <input type="text" placeholder="请输入搜索关键字" name="key" class="input" style="width:250px; line-height:17px;display:inline-block" value="<?php echo $_GET['key'];?>"/>
  <input type="submit" name="sub" class="button border-main icon-search" value="搜索" />
</li>

以上就是我們介紹的分頁和關鍵字搜索,如果有不明白的地方,可以留言,我會及時幫你們解答。

繼續學習
||
<?php session_start(); header("content-type:text/html;charset=utf-8"); require 'config.php'; //分页功能 $pageSize = 5; //每页显示多少条记录 $rowCount = 0; //共有多少条记录 $pageNow = 1; //希望显示第几页 $pageCount = 0; //一共有多少页 //根据分页链接来修改当前的值 if (!empty($_GET['page'])) { $pageNow = $_GET['page']; } $key=isset($_GET['key'])?'':$_GET['key']; $cid=isset($_GET['cid'])?'':$_GET['cid']; $condition='1=1'; if(!empty($key)){ $condition.=" and content LIKE '%{$key}%'"; } if(!empty($cid)){ $condition.=" and cid={$cid}"; } //根据分页链接来修改 $pageNow的值。 $sql = "select count(*) from list WHERE {$condition}"; $res1 = mysqli_query($link,$sql); //取出行数 if ($row = mysqli_fetch_row($res1)) { $rowCount = $row[0]; } //[取得$rowCount,,进而我们就知道了$pageCount这两个指标了。] //计算共有多少页 $pageCount = ceil($rowCount / $pageSize); $pageStart = ($pageNow - 1) * $pageSize; //发送带有分页的sql结果 //根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。 $sql = "select * from list WHERE {$condition} order BY id limit $pageStart,$pageSize"; $res2 = mysqli_query($link,$sql) or die('无法获取结果集' . mysqli_connect_error()); $prev = ($pageNow - 1 <= 0 )?1:$pageNow-1; //上一页 $next = ($pageNow + 1 > $pageCount)?$pageCount:$pageNow+1; //下一页 //我们引用的config.php文件(连接数据库的公共文件,之前提到过)这里没有,所以会在页面右边的显示栏中报错 ?>