Développement P...SE CONNECTER

Développement PHP+Mysql de la pagination des numéros de page

<html>
 <head>
     <meta http-equiv="CONTENT-TYPE" content="text/html;">
 </head>
 <body>
 <?php
 /** 1.传入页面 **/
 $page = $_GET['p'];
 /** 2.根据页面取出数据:php->mysql **/
 $host = "localhost";
 $username = 'root';
 $password = '123456789';
 $db = 'bbs2';
 $PageSize=5;
 $ShowPage=3;
 //连接数据库
 $conn = mysql_connect($host, $username, $password);
 if(!$conn){
     echo "数据库连接失败";
     exit;
 }
 
 //选择所要操作的数据库
 mysql_select_db($db);
 //设置数据库编码格式
 mysql_query('SET NAMES UTF8');
 //编写sql获取分页数据:SELECT * FROM 表名 LIMIT 起始位置 , 显示条数
 $sql = "SELECT*FROM test LIMIT ".($page-1)*$PageSize .",$PageSize";
 if(!$sql){
     echo "取出不成功";
 };
 //把sql语句传送到数据库
 $result = mysql_query($sql);
 //处理我们的数据
 echo "<table border=1 cellspacing=0 width=15% >";
 echo "<tr><td>ID</td><td>名字</td><td>性别</td></tr>";
 while($row = mysql_fetch_assoc($result)){
     echo "<tr>";
     echo "<td>{$row['id']}</td>";
     echo "<td>{$row['name']}</td>";
     echo "<td>{$row['sex']}</td>";
     echo "<tr>";
 }
 echo "</table>";
 //释放结果
 mysql_free_result($result);
 //获取数据总数
 $to_sql="SELECT COUNT(*)FROM test";
 $to_result=mysql_fetch_array(mysql_query($to_sql));
 $to=$to_result[0];
 //计算页数
 $to_pages=ceil($to/$PageSize);
 mysql_close($conn);
 /** 3.显示数据+分页条 **/
 $page_banner="";
 //计算偏移量
 $pageffset=($ShowPage-1)/2;
 if($page>1){
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
 }
 //初始化数据
 $start=1;
 $end=$to_pages;
 if ($to_pages>$ShowPage){
     if($page>$pageffset+1){
         $page_banner.="...";
     }
     if ($page>$pageffset){
         $start=$page-$pageffset;
         $end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;
     }else{
         $start=1;
         $end=$to_pages>$ShowPage?$ShowPage:$to_pages;
     }
     if ($page+$pageffset>$to_pages){
         $start=$start-($page+$pageffset-$end);
     }
 }
 for($i=$start;$i<=$end;$i++){
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
 }
 //尾部省略
 if ($to_pages>$ShowPage&&$to_pages>$page+$pageffset){
     $page_banner.="...";
 }
 if ($page<$to_pages){
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
 }
 
 $page_banner.="共{$to_pages}页";
 echo $page_banner;
 ?>
 </body>
 </html>

Quand il y a trop de données, le numéro de page sera trop long A ce moment, il est nécessaire de masquer le numéro de page pour obtenir un bel effet

Explication du code

. QQ截图20161026153352.png

$ ShowPage=3; Nous affichons uniquement 3 numéros de page

$pageffset=($ShowPage-1)/2; pour obtenir 1, ce qui signifie que le précédent et le suivant sont respectivement décalés.

$start=1;
 $end=$to_pages;
 if ($to_pages>$ShowPage){
     if($page>$pageffset+1){
         $page_banner.="...";
     }

Le nombre total de pages est supérieur au nombre de pages affiché, et la page actuelle est supérieure au décalage + 1 affichage...Omis

    if ($page>$pageffset){
         $start=$page-$pageffset;
         $end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;

$start Starting position si la page actuelle est supérieure au montant du décalage, alors la position de départ affiche la page actuelle moins le décalage

$end end position Si le nombre total de pages est supérieur à la page actuelle plus le décalage. , alors la position de fin est la page actuelle plus le décalage. Sinon Si la page actuelle est supérieure au décalage, la dernière sera affichée. Le nombre de pages actuellement affichées, sinon le nombre total de pages

else{
         $start=1;
         $end=$to_pages>$ShowPage?$ShowPage:$to_pages;
     }
<. 🎜> Si le numéro de page plus le décalage est supérieur à la dernière page, la position de départ est égale à la position de départ d'origine moins la page actuelle plus le décalage moins Aller à la position de fin.

    if ($page+$pageffset>$to_pages){
         $start=$start-($page+$pageffset-$end);

Afficher le numéro de page

}
 for($i=$start;$i<=$end;$i++){
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
 }

Lorsque le nombre total de pages est supérieur au nombre de pages affiché et que la dernière page est supérieure à la page actuelle plus le décalage, omettez

section suivante
<html> <head> <meta http-equiv="CONTENT-TYPE" content="text/html;"> </head> <body> <?php /** 1.传入页面 **/ $page = $_GET['p']; /** 2.根据页面取出数据:php->mysql **/ $host = "localhost"; $username = 'root'; $password = '123456789'; $db = 'bbs2'; $PageSize=5; $ShowPage=3; //连接数据库 $conn = mysql_connect($host, $username, $password); if(!$conn){ // echo "数据库连接失败"; exit; } //选择所要操作的数据库 mysql_select_db($db); //设置数据库编码格式 mysql_query('SET NAMES UTF8'); //编写sql获取分页数据:SELECT * FROM 表名 LIMIT 起始位置 , 显示条数 $sql = "SELECT*FROM test LIMIT ".($page-1)*$PageSize .",$PageSize"; if(!$sql){ echo "取出不成功"; }; //把sql语句传送到数据库 $result = mysql_query($sql); //处理我们的数据 echo "<table border=1 cellspacing=0 width=15% >"; echo "<tr><td>ID</td><td>名字</td><td>性别</td></tr>"; while($row = mysql_fetch_assoc($result)){ echo "<tr>"; echo "<td>{$row['id']}</td>"; echo "<td>{$row['name']}</td>"; echo "<td>{$row['sex']}</td>"; echo "<tr>"; } echo "</table>"; //释放结果 mysql_free_result($result); //获取数据总数 $to_sql="SELECT COUNT(*)FROM test"; $to_result=mysql_fetch_array(mysql_query($to_sql)); $to=$to_result[0]; //计算页数 $to_pages=ceil($to/$PageSize); mysql_close($conn); /** 3.显示数据+分页条 **/ $page_banner=""; //计算偏移量 $pageffset=($ShowPage-1)/2; if($page>1){ $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>"; $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>"; } //初始化数据 $start=1; $end=$to_pages; if ($to_pages>$ShowPage){ if($page>$pageffset+1){ $page_banner.="..."; } if ($page>$pageffset){ $start=$page-$pageffset; $end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages; }else{ $start=1; $end=$to_pages>$ShowPage?$ShowPage:$to_pages; } if ($page+$pageffset>$to_pages){ $start=$start-($page+$pageffset-$end); } } for($i=$start;$i<=$end;$i++){ $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>"; } //尾部省略 if ($to_pages>$ShowPage&&$to_pages>$page+$pageffset){ $page_banner.="..."; } if ($page<$to_pages){ $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>"; $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>"; } $page_banner.="共{$to_pages}页"; echo $page_banner; ?> </body> </html>
soumettreRéinitialiser le code
chapitredidacticiel