PHP+Mysql pembangunan halaman nombor halaman
<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>
Apabila terdapat terlalu banyak data, nombor halaman akan menjadi terlalu panjang Pada masa ini, adalah perlu untuk menyembunyikan nombor halaman untuk mencapai kesan yang cantik
Penjelasan kod
$ ShowPage=3; Kami hanya memaparkan 3 nombor halaman
$pageffset=($ShowPage-1)/2 Kami memaparkan 3 nombor halaman tolak 1; untuk mendapatkan 1, yang bermaksud yang sebelumnya dan yang seterusnya mengimbangi masing-masing.
$start=1; $end=$to_pages; if ($to_pages>$ShowPage){ if($page>$pageffset+1){ $page_banner.="..."; }
Jumlah bilangan halaman lebih besar daripada bilangan halaman yang dipaparkan dan halaman semasa lebih besar daripada paparan offset + 1...Ditinggalkan
if ($page>$pageffset){ $start=$page-$pageffset; $end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;
$mulakan bermula kedudukan jika halaman semasa lebih besar daripada jumlah anjakan offset, maka kedudukan permulaan memaparkan halaman semasa tolak offset
$end kedudukan akhir Jika jumlah halaman lebih besar daripada halaman semasa ditambah offset , maka kedudukan akhir ialah halaman semasa ditambah dengan offset Jika tidak Jika halaman semasa lebih besar daripada offset, yang terakhir akan dipaparkan Bilangan halaman yang sedang dipaparkan, jika tidak, jumlah halaman
else{ $start=1; $end=$to_pages>$ShowPage?$ShowPage:$to_pages; }Jika nombor halaman tambah ofset lebih besar daripada halaman terakhir, kedudukan permulaan adalah sama dengan kedudukan permulaan asal tolak halaman semasa tambah offset tolak Pergi ke kedudukan akhir.
if ($page+$pageffset>$to_pages){ $start=$start-($page+$pageffset-$end);
Nombor halaman paparan
} for($i=$start;$i<=$end;$i++){ $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>"; }Apabila jumlah halaman lebih besar daripada bilangan halaman yang dipaparkan dan halaman terakhir lebih besar daripada halaman semasa ditambah offset, tinggalkan