在本文中,我们将给您介绍关于php分页原理的详细内容,并且为您解答php分页技术的相关问题,此外,我们还将为您提供关于phpmysql分页代码与分页原理详解、PHP分页代码与分页原理解析、PHP分页原
在本文中,我们将给您介绍关于php分页原理的详细内容,并且为您解答php分页技术的相关问题,此外,我们还将为您提供关于php mysql 分页代码与分页原理详解、PHP 分页代码与分页原理解析、PHP 分页原理分析,大家可以看看_PHP教程、php 分页原理讲解的知识。
本文目录一览:php分页原理(php分页技术)
<div>
所需数据:
总记录数: $records mysql_num_rows()
每页显示: $pagesize 人为定义10
总页数: $pages $records/$pagesize
当前页: $page 自己选择
2.分页的sql语句: SELECT * FROM news limit 0,10; //每次从数据库取10条数据
limit 语句的格式:
$startnow:开始行号 $pagesize:每页显示多少条
limit $startnow,$pagesize
第1页 $page = 1 limit 0,10 从0条起取10条数据
第2页 $page = 2 limit 10,10
第3页 $page = 3 limit 20,10
........
$startnow = ($page-1) * $pagesize;
- //分页相关变量
$pagesize = 10; //每页取10条数据
//获取地址栏中用户点击后地址栏传递过来的page参数(第几页)
if(empty($_REQUEST['page'])){
$page =1;
$startnow =0;
}else{
$page = (int)$_REQUEST['page'];
$startnow = ($page-1) * $pagesize;
}
//构建sql语句
$sql = select * from vvt_news; //可以取出结果分页中再排序
//执行sql语句
$result = mysql_query($sql);
//返回记录总数
$records = mysql_num_rows($result);
//获取总页数
$pages = ceil($records/$pagesize);
//构建分页的sql语句
$sql = "select * from vvt_news order addtime ASC,by id DESC LIMIT $startnow,$pagesize";
//执行sql语句 返回结果集
$result = mysql_query($sql); //结果集 可以取前端循环
$this->set('list',$result); //发送到前台 遍历循环
4.前台底部分页样式
<style type="text/css">
.Pagelist{
height:40px;
line-height:40px;
}
.Pagelist a{
border:1px solid #ccc;
background-color:#f0f0f0;
padding:3px 8px;
margin:0px; 3px;
}
.Pagelist span {
margin:3px 10px;
}
<tr>
<td colspan="8" align="center"https://www.jb51.cc/tag/Pagelist/" target="_blank">Pagelist">
<?PHP
for ($i=1; $i<$pages ; $i++) {
//如果是当前页则不加链接
if($i==$page){
echo "$i";
}else{
echo "$i";
}
}
;</span><span>?></span>
<span></</span><span>td</span><span>></span>
<span></<span>tr<span>><span>
-->2
<span><<span>tr<span>>
<span><<span>td <span>colspan<span>="8"<span> align<span>="center"<span> class<span>="Pagelist"<span>>
<span><?<span>PHP
$prev=$page-3;
$next=$page+3;
for ($i=$prev; $i<$next ; $i++) {
//如果是当前页则不加链接
if($i==$page){
echo "$i";
}else{
echo "$i";
}
}
;</span><span>?></span>
<span></</span><span>td</span><span>></span>
<span></<span>tr<span>><span>
-->3
<span><<span>tr<span>>
<span><<span>td <span>colspan<span>="8"<span> align<span>="center"<span> class<span>="Pagelist"<span>>
<span><?<span>PHP
$prev=$page-3;
$next=$page+3;
if($prev<1){
$prev=1;
}
if($nest > $pages){
$next=$pages;
}
for ($i=$prev; $i<$next ; $i++) {
//如果是当前页则不加链接
if($i==$page){
echo "$i";
}else{
echo "$i";
}
}
;</span><span>?></span>
<span></</span><span>td</span><span>></span>
<span></<span>tr<span>><span>
-->4 判断当前页小于4,让分页始终保持7个
php mysql 分页代码与分页原理详解
本文章提供这一款php mysql 分页代码与分页代码是一款从创建数据库与查询数据到把数据进行分页,比较适合于php初学者,并且这款分页代码实用简单容易。
/*存放贴子的表结构------------------------------------------------------
代码如下 | 复制代码 |
create table bbsrow( bbsrow_id int(6) not null auto_increment, //贴子ID号 bbsrow_auth varchar(20) not null, //贴子作者 bbsrow_parentid int(6), //贴子的父亲贴子ID号,如为首发贴则为空 bbsrow_title varchar(200) not null, //贴子标题 bbsrow_returncount int(3), //贴子的回复贴数,如果没有回贴则为空 primary key (bbsrow_id) |
);
-----------------------------------------------------------------------------*/
//显示儿子贴的递归函数--------------------------------------------------
代码如下 | 复制代码 |
function showchildren($parent_id){ global $connect_id; $query="select * from bbsrow where bbsrow_parentid=''" . $parent_id . "''"; $result_top=mysql_query($query,$connect_id); echo "
while($myrow_child=mysql_fetch_row($result_top)){ echo " } |
//----------------------------------------------------------------------
//连接数据库并将所有首发贴放到$mainrow数组里----------------------------
代码如下 | 复制代码 |
$connect_id=mysql_connect("localhost","test","test") or die("无法连接数据库"); $i=0; //开始构建分页显示------------------------------------------------------ if($currentpage!=""){ $pagesize=10;//每页显示的首发贴数!
if($page>0) $pagestr="上一页"; for($i=0;$i
if($i!=$page){ $pagestr=$pagestr . "页]"; if($page下一页 "; 立即学习“PHP免费学习笔记(深入)”; echo $pagestr; |
//----------------------------------------------------------------------
//开始分级显示----------------------------------------------------------
代码如下 | 复制代码 |
echo "
for($i=$start;$i echo " |
//----------------------------------------------------------------------?>
PHP 分页代码与分页原理解析
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
每页多少条记录($pagesize)?
当前是第几页($currentpageid)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($previouspageid)、下一页($nextpageid)、总页数($numpages)等等,都可以根据前边这几个东西得到。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
代码如下 | 复制代码 |
select * from table limit 0,10 // 前10条记录 select * from table limit 10,10 // 第11至20条记录 select * from table limit 20,10 // 第21至30条记录 |
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
代码如下 | 复制代码 |
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize |
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
立即学习“PHP免费学习笔记(深入)”;
例
代码如下 | 复制代码 | ||||
ShowData//连接数据库 $page = 1; $db = mysql_connect(''127.0.0.1'',''root'',''toor''); mysql_select_db(''test'',$db); $pagesize = 3; //每页显示到数量 //计算一共有多少记录,用于计算页数 $rs = mysql_query("select count(*) from info",$db); $row = @mysql_fetch_array($rs); $numrows = $row[0]; //计算页数 //设置页数 //读取指定记录 //把数据用表格显示出来 do{ $i++; ?> } //循环显示数据 while ($row = mysql_fetch_array($rs)); echo "
} echo " 共".$pages."页(".$page."/".$pages.")"; ";for ($i = 1;$i { echo "[".$i."]"; } echo "[".$page."]"; for ($i = $page + 1;$i { echo "[".$i."]"; } echo " ?> |
总结,分页就根据用户点击连接,然后由于php获取page值再经过一系列算法得出当前多少页面,然后取多少要就显示出你要查看的记录了。
本文地址:
转载随意,但请附上文章地址:-)
PHP 分页原理分析,大家可以看看_PHP教程
1、前言
分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。
2、原理
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
3、简单代码
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
// 建立数据库连接
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 获取当前页数
if( isset(
___FCKpd___0GET[''page'']) ){
$page = intval(
___FCKpd___0GET[''page''] );
}
else{
$page = 1;
}
// 每页数量
$PageSize = 10;
// 获取总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row[''amount''];
// 记算总共有多少页
if( $amount ){
if( $amount if( $amount % $page_size ){ //取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else{
$page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}
else{
$page_count = 0;
}
// 翻页链接
$page_string = '''';
if( $page == 1 ){
$page_string .= ''第一页|上一页|'';
}
else{
$page_string .= ''">|上一页|'';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= ''下一页|尾页'';
}
else{
$page_string .= ''下一页|尾页'';
}
// 获取数据,以二维数组格式返回结果
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果
?>