Maison >développement back-end >tutoriel php >PHP implémente une pagination de type Baidu

PHP implémente une pagination de type Baidu

小云云
小云云original
2018-03-17 09:57:341754parcourir

Cet article partage principalement avec vous un exemple d'utilisation de PHP pour imiter la pagination Baidu. J'espère que cela pourra vous aider. Jetons d'abord un coup d'œil aux rendus.

Stratégie de base

1, Tout d'abord, interrogez le nombre total d'enregistrements

2, Définissez le nombre affiché sur chaque page et calculez le nombre total de pages

3. Ajoutez une valeur get num pour représenter la page actuellement consultée. S'il n'y a pas de valeur get pour num, la page actuelle par défaut doit être définie sur la première page !

4. Prenez une chaîne pour enregistrer le lien du numéro de page. Cette chaîne est également appelée chaîne du numéro de page !

5. Lors de l'interrogation, vous devez utiliser la clause limite pour la restriction (principe de pagination de la clause limite)

Fonction de pagination complète de type Baidu

Exigences de pagination

1, Lorsque la page actuelle est constituée des 3 premières pages, la page initiale affichée par $startNum est 1, et la dernière page affichée $endNum est 5

2. Lorsque la page actuelle est la page 4, $startNum vaut 2, $endNum = $startNum +4 Lorsque la page actuelle est la page 5, $startNum vaut 3, et ainsi de suite

3, le numéro de page. La position de départ ne peut excéder le nombre total de pages $pages – 4 ;


Le code est le suivant :

Code

//应该加载视图文件之前和提取帖子的结果集之前进行分页
//以下的代码都和分页相关
//(1)定义当前选中的页码数
$pageNum = isset($_GET['num'])?$_GET['num']: 1;
//(2)定义每一页显示的记录数
$rowsPerPage = 5;
//(3)查询总记录
$sql="select count(*) as sum frompublish";
$result = my_query($sql);
$row = mysql_fetch_assoc($result);
$rowCount = $row['sum'];//得到总记录数
//(4)计算总页数
$pages = ceil($rowCount/$rowsPerPage);//得到总页数
//(5)拼凑页码字符串
$strPage = '';//页码字符串
//拼凑出首页
$strPage .= "<ahref=&#39;./list_father.php?num=1&#39;>首页</a>";
//拼凑出上一页
$preNum = $pageNum == 1 ? 1 : $pageNum-1;
$strPage .= "<ahref=&#39;./list_father.php?num=$preNum&#39;>上一页</a>";
 
//确定显示的初始页$startNum
if($pageNum<=3){
         $startNum= 1;
}else{
         $startNum= $pageNum - 2;
}
//确定显示的初始页$startNum的最大值
if($startNum > $pages- 4){
         $startNum= $pages-4;
}
//防止页码出现复制
if($startNum<=1){
         $startNum=1;
}
//确定显示的最后一页 $endNum
$endNum=$startNum+4;
//防止最后一页越界;
if($endNum>=$pages){
         //$endNum=$pageNum;//错误
         $endNum=$pages;
}
//拼凑出中间的页码
for($i=$startNum;$i<=$endNum;$i++){
         //如果$i刚好是选中的当前页,标红
         if($i==$pageNum){
                   $strPage.= "<a href=&#39;./list_father.php?num=$i&#39;><fontcolor=&#39;red&#39;>$i</font></a>";
         }else{
                   $strPage.= "<a href=&#39;./list_father.php?num=$i&#39;>$i</a>";
         }
         //$strPage.= "<a href=&#39;./list_father.php?num=$i&#39;>$i</a>";
 
        
}
/*for($i=1;$i<=$pages;$i++){
         $strPage.= "<a href=&#39;./list_father.php?num=$i&#39;>$i</a>";
}*/
 
 
////拼凑出下一页
$nextNum = $pageNum == $pages ? $pages :$pageNum+1;
$strPage .= "<a href=&#39;./list_father.php?num=$nextNum&#39;>下一页</a>";
//拼凑出尾页
$strPage .= "<ahref=&#39;./list_father.php?num=$pages&#39;>尾页</a>";
 
//提取帖子的结果集
$offset = $rowsPerPage*($pageNum-1);
$sql="select * from publish left joinuser on pub_owner=user_name order by pub_time desc limit$offset,$rowsPerPage";
$result=my_query($sql);//得到了资源结果集

Recommandations associées :

Partagez un exemple de code JavaScript imitant la fonction de pagination Baidu

Code de classe de pagination numérique PHP (effet de pagination imitation Baidu)

Effet d'empreinte de pagination JQuery imitation Baidu code_jquery

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn