페이지 번호 페이징의 PHP+Mysql 개발
<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>데이터가 너무 많으면 페이지 번호도 너무 길어집니다. 이때 아름다운 효과를 얻으려면 페이지 번호를 숨겨야 합니다.
코드 설명

$ShowPage=3; 3개의 페이지 번호만 표시
$pageffset=( $ShowPage-1)/2; 페이지 오프셋 3개의 페이지 번호에서 1을 뺀 값을 2로 나누어 1을 얻습니다. 이는 이전 페이지 번호와 다음 페이지 번호가 각각 오프셋임을 의미합니다.
$start=1;
$end=$to_pages;
if ($to_pages>$ShowPage){
if($page>$pageffset+1){
$page_banner.="...";
}전체 페이지 수가 표시된 페이지 수보다 크고, 현재 페이지가 오프셋 + 1 표시보다 큽니다...생략
if ($page>$pageffset){
$start=$page-$pageffset;
$end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;$start 시작 위치 현재 페이지가 오프셋보다 큰 경우 , 시작 위치는 현재 페이지를 표시합니다. 오프셋
$end 끝 위치를 뺍니다. 총 페이지 수가 현재 페이지에 오프셋을 더한 것보다 크면 끝 위치는 현재 페이지에 오프셋을 더한 값입니다.
else{
$start=1;
$end=$to_pages>$ShowPage?$ShowPage:$to_pages;
}현재 페이지가 오프셋 이동량보다 작으면 시작 위치는 1
끝 위치 현재 페이지가 표시된 페이지 번호보다 큽니다. , 현재 표시된 페이지 번호가 표시되고 그렇지 않으면 전체 페이지 번호가 표시됩니다
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.="...";
}전체 페이지 수가 표시된 페이지 수보다 크고, 마지막 페이지가 현재 페이지에 오프셋을 더한 값보다 크면 생략됩니다
- 코스 추천
- 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~ 















