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
楼上正解

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网