Affichage de la...LOGIN

Affichage de la pagination de la liste et recherche par mot-clé

Dans cette section, nous parlerons des fonctions d'affichage de pagination et de recherche par mot clé.

Pour faire la fonction de pagination, il faut d'abord se connecter à la base de données et obtenir les données. Dans la plupart des cas, nous pouvons écrire des fonctions de pagination et de recherche dans la même page php.

Ensuite, analysons le processus de la fonction de pagination :

Nous devons d'abord définir le nombre d'éléments affichés sur chaque page et le nombre de données au total, afin de savoir combien de pages il y a au total et sur quelle page nous sommes actuellement affichés.

Expliquons-le en détail en fonction du code :

<?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; //下一页
?>

Nous avons mis la pagination et la recherche par mot-clé sur une seule page.

Dans notre page front-end, nous devons également apporter quelques modifications :

    <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>

La fonction de recherche doit parcourir les données que nous avons recherchées en fonction des mots-clés sur la page front-end.

<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>

Ce qui précède est la recherche par pagination et par mot clé que nous avons introduite. S'il y a quelque chose que vous ne comprenez pas, vous pouvez laisser un message et je vous aiderai à y répondre à temps.

<?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文件(连接数据库的公共文件,之前提到过)这里没有,所以会在页面右边的显示栏中报错 ?>
soumettreRéinitialiser le code
chapitredidacticiel