PHP分页原理
分页是网站上常用的一种信息显示手段,比如网上的评论,有时候会有几百条上千条甚至几十万条,同时在一个页面上显示显然不和实际,所以,我们就要用到分页了。
实现分页需要访问mysql数据库中所存入的数据,所以我们得新建一个数据库,并在数据库中建一个表:
(以上数据是我抽风随便打的,不喜请扔砖)
然后呢,我们再使用EPP3建一个工程,我习惯在工程下新建两个php文件,一个用来连接数据库,一个用来实现简单分页:
用来连接数据库的代码:
文件一:conn.php
<?php
$conn = @mysql_connect("localhost","root","") or die("错误连接");
mysql_select_db("nettext",$conn);
mysql_query("set names 'GBK'");
(关键代码)
function htmlCode($contect){
$contect = str_replace("\n", "<br>", str_replace(" ", " ", $contect));
$contect = str_replace("你好", "***", $contect);//屏蔽关键字
return $contect;
}
?>
用来实现分页的代码:
<?php error_reporting(0);?>
<?php
include ("conn.php");
$pagesize = 5;
$url = $_SERVER["REQUEST_URI"];
//获取路径
$url = parse_url($url);
//解析一个 URL 并返回一个关联数组
$url = $url[path];
//获得关联数组中的path部分
$numq = mysql_query("SELECT * FROM `softwaresix`");
//获取表:softwaresix中的所有数据
$num = mysql_num_rows($numq);
//获取条数
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
//page是显示分段信息的起始信息条的序号,pageval是页码,pagesize是每页显示的条数;
if($num > $pagesize){//如果数据总数大于每页显示条数在显示下一页和上一页
if($pageval<=1)$pageval=1;
echo "共 $num 条".
" <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
$SQL = "SELECT * FROM `softwaresix` limit $page $pagesize";
$query = mysql_query($SQL);
while ($row = mysql_fetch_array($query)){//逐条在页面上显示信息
echo "<hr><b>".$row[id]." | ".$row[uid];
}
?>
下面我们来理清一下做分页的思路:
前提:
需要建立一个数据库,这个数据库有一个有一定数量信息的表;
基本:
1、建立php与数据库之间的联系;
2、获取路径——解析一个 URL 并返回一个关联数组——获得关联数组中的path部分;
3、获取表中数据和信息条数;
4、分页公式:
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
//page是显示分段信息的起始信息条的序号,pageval是页码,pagesize是每页显示的条数;
5、上下页按钮:
if($pageval<=1)$pageval=1;
echo "共 $num 条".
" <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
6、将信息显示在页面上:
$SQL = "SELECT * FROM `softwaresix` limit $page $pagesize";
$query = mysql_query($SQL);
while ($row = mysql_fetch_array($query)){//逐条在页面上显示信息
echo "<hr><b>".$row[id]." | ".$row[uid];
}
增强用户体验的优化:
if($num > $pagesize){//如果数据总数大于每页显示条数在显示下一页和上一页
……………………
}
其实,这只是最简单的分页操作,网站中的分页要比这个复杂很多,网络上也有别人写好的类可以使用。
接下来要完善这个分类,就需要我们共同的努力啦~
<!--EndFragment-->