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.傳入頁(yè)面 **/ $page = $_GET['p']; /** 2.根據(jù)頁(yè)面取出數(shù)據(jù):php->mysql **/ $host = "localhost"; $username = 'root'; $password = '123456789'; $db = 'bbs2'; $PageSize=5; $ShowPage=3; //連接數(shù)據(jù)庫(kù) $conn = mysql_connect($host, $username, $password); if(!$conn){ echo "數(shù)據(jù)庫(kù)連接失敗"; exit; } //選擇所要操作的數(shù)據(jù)庫(kù) mysql_select_db($db); //設(shè)置數(shù)據(jù)庫(kù)編碼格式 mysql_query('SET NAMES UTF8'); //編寫(xiě)sql獲取分頁(yè)數(shù)據(jù):SELECT * FROM 表名 LIMIT 起始位置 , 顯示條數(shù) $sql = "SELECT*FROM test LIMIT ".($page-1)*$PageSize .",$PageSize"; if(!$sql){ echo "取出不成功"; }; //把sql語(yǔ)句傳送到數(shù)據(jù)庫(kù) $result = mysql_query($sql); //處理我們的數(shù)據(jù) 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>"; //釋放結(jié)果 mysql_free_result($result); //獲取數(shù)據(jù)總數(shù) $to_sql="SELECT COUNT(*)FROM test"; $to_result=mysql_fetch_array(mysql_query($to_sql)); $to=$to_result[0]; //計(jì)算頁(yè)數(shù) $to_pages=ceil($to/$PageSize); mysql_close($conn); /** 3.顯示數(shù)據(jù)+分頁(yè)條 **/ $page_banner=""; //計(jì)算偏移量 $pageffset=($ShowPage-1)/2; if($page>1){ $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首頁(yè)</a>"; $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一頁(yè)</a>"; } //初始化數(shù)據(jù) $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)."'>下一頁(yè)</a>"; $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾頁(yè)</a>"; } $page_banner.="共{$to_pages}頁(yè)"; 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
.
$ 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