PHP分页问题. 望大虾开示

小弟初学PHP, . 看到PHP分页这一节内容, 资质愚蠢,思索半天矣不知所以然. 在此请教一下前辈们, 望开愚昧. 谢谢.
代码如下. 注释里面即为我不懂的地方. 如果有空, 最好再帮我讲解一下整天的分页原理.

$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];

$numq=mysql_query("SELECT * FROM `message`");
$num = mysql_num_rows($numq);

if($_GET[page]) // $_GET[page] 从何而来, 没定义过变量page,为什么这里会用全局变量调用???
{
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=','; // 这里代表什么意思. 逗号是什么意思??
}

if($num > $pagesize)
{
if($pageval<=1)$pageval=1;
echo "共 $num 条".
" <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
?>

<table width="600" border="5" align="center">

<?php
$sql="select * from message limit $page $pagesize ";
..........

1.$_GET[page] 是你点击 上一页 或者 下一页 传递过来的, 当你的页面初始化的时候 也就是你没还没点击上一页 下一页 的时候 他应该是0
2.$page.=','; 这个的意思是 $page = $page . ','; 他是用来拼写SQL 语句的
拼写后 你的SQL 应该是 select * from message limit 0,5; 注意看 0 和之间 有个 逗号 代表 从结果集的第一行数据 往下取5 行

3.分页其实非常简单 比如说你有26记录 每5条为一页 26条记录能分几页啊 ? 当然是 6页了...
可是计算机不知道 你就给他一个算法
记住公式 (总的记录条数 + 每页的记录数 - 1) / 每页的记录数
咱们用公式算一下 (26 + 5 -1) / 5 = 6
然后我们看下SQL $sql="select * from message limit $page $pagesize ";
第1页的时候 是 limit 0,5
第2页的时候 是 limit 5,5
第2页的时候 是 limit 10,5
刚才也说了 limit 是从第几行数据 往下 走 几行 因为咱们是 5条数据一分也所以 第2个参数永远都不用变就是5 ,第一个参数 非常好算 每页的记录数 * (当前页数 - 1)
第1页的时候 是 5*(1-1)=0
第2页的时候 是 5*(2-1)=5
第1页的时候 是 5*(3-1)=10

还有说的就是你的代码 问题很严重 . php 5.3 版本 你这程序根本就运行不了....
$_GET['page'] 这个样写才标准. 不要以为PHP 单引号 和 双引号 没有任何差别 单引号的速度要比 双引号 快3倍. $_GET[page] 这种写法 5.3 以后直接就报错了. 建议你马上升级为5.3 或更高的版本 养成一个练好的编写代码习惯.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-04
1、$_GET[page]从何而来。访问该页面的地址应该是形如$url?page=111的,$_GET表示的就是地址后面所带的变量名称和值,具体到$_GET[page]就是上面的111。

2、逗号什么意思。其实这里的逗号并不是在这里立即用到的东西,真正用它的是你给的代码最后一行那个SQL语句,你没发现limit后面两个参数中间没有逗号吗?

至于分页的原理:
1、需要的几个变量:$num(总条数)、$pagesize(每页条数)、$pageval(当前页码)
2、($pageval-1)*$pagesize得到的是当前页显示的第一条的序号,如每页5条,第5页的第一条在数据库中应该是第21条,而MySQL和PHP中的序号是从0开始的,所以第5页的第一条的序号就是20
3、有了开始的序号和序号的数量,所以最后一句的$sql语句就能够指定从数据库中取出需要的条数了。追问

非常感谢

追答

不用客气,抓紧采用哈!

本回答被网友采纳
第2个回答  2012-05-22
$_GET[page] 从何而来, 没定义过变量page,为什么这里会用全局变量调用???

>>>>>>>>>>>>>>>page是从网址里通过get方式传过来的,例如test.php?page=5&cat=1

$page.=','; // 这里代表什么意思. 逗号是什么意思??

>>>>>>>>>>>>>>>>>>>>用来生成mysql查询语句中的查询部分的,例如 limit 50,10 其中50,就是这样生成的
第3个回答  2012-05-04
楼上正解

PHP分页问题. 望大虾开示
1.$_GET[page] 是你点击 上一页 或者 下一页 传递过来的, 当你的页面初始化的时候 也就是你没还没点击上一页 下一页 的时候 他应该是0 2.$page.=','; 这个的意思是 $page = $page . ','; 他是用来拼写SQL 语句的 拼写后 你的SQL 应该是 select * from message li...

PHP的基础分页,求老手帮我指示下,显示$page=$_GET['page'];这个有错...
page=$_GET['page'];获取不到值,那这个变量就是空的,那你下面的代码运行当然会出错了 而且,你除了要判断$page是不是为空意外,还要判断他是不是数字,以及是否小于1,分页最少都是1啊 这样改行不行 if(empty($page) || !is_numeric($page) || $page 1){$page = 1;} ...

PHP分页到第10页就不显示内容了 请大侠帮忙 谢谢
1)查一下你的数据库的记录,是不是记录结束了。2)看一下你的第十页的记录中,可能某些字段里面有半个汉字之类的字符或者有?>或者引号之类的字符,导致生成的HTML文件格式错误。

thinkphp分页问题,想实现把上一页下一页那些字都隐藏掉,用两个div或图...
还有个方法,不用定制分页函数,分页函数出来的是一串html代码,是吧,你在页面中写入CSS,就可以把分页的样式给改变,thinkphp的分页可以控制输出项,你只输出上一页和下一页就行。不知道这样你懂了没,就是自己写个css把thibkphp分页函数的css覆盖掉,这样分页的样式就变成你要的了 ...

php 网站分页问题,同一个页面多次用到分页出问题
首先,同一页面是可以有多个分页,但是一般都不这么做,特别是用别人的系统,更不要这么做。因为,在同一个页面里,为了要区分是哪部分内容翻了页,翻了多少一页,我们要转递多个分页参数才能处理。如果是用的第三方程序,一般不会这么去处理的,就要修改代码。如果是懂代码还好,可以自己改改,不懂就...

php关于分页显示的问题
page=1;post传值一般就是表单提交。在程序中为了获得传递的参数,分别为$_GET["page"]或$_POST["参数名"],但是如果用$_REQUEST["参数名"]可以同时获得POST和GET方法的值。顺便多说一句,如果在php的配置文件php.ini中把register_globals选项打开的话,register_globals=on,在程序中$_GET["page"...

php 分页显示问题
我看了你使用table实现的,这样要每行显示5个,是可以实现,但是要增加一些判断,这样就多了没必要的PHP代码;建议你用div写,然后控制整理宽度,也就是说你5个图片循环出来的宽度不能大于没一行的宽度,大了后,也就是第6张图的div就会从第二行开始排列了。这里html代码,你参考下: 无标题文档...

php分页问题page=".($pageval-1)."俩个点具体什么意思
是连接的意思,连接两个变量,或一个变量加一个字符串的 上一页下一页 这个外面应该还有代码 例:echo "上一页下一页";. 就是将

php分页判断,每段5页,怎么判断这个。。
判断当前页数,所在段数。然后生成当前页数所在段,每段显示5条,第6条即本段最后一条加一,点击进入下一段。

PHP一个页面两个分页,如何实现,求具体代码!!!
分页的思路:a.求得数据总的记录条数 sql="select * from 表名";b.确定每页显示的记录条数 pagesize=3;c.求的总的页数 countPage=ceil($number\/$pagesize);d.取得当前的页码 nowpage = isset($_GET['pa'])?$_GET['pa']:1;e.求的开始位置,利用limit拼写sql语句 start=(当前...

相似回答
大家正在搜