PHP分页问题. 望大虾开示

小弟初学PHP,.看到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 ";
..........
展开
 我来答
Ciel_kc
2012-05-09 · TA获得超过119个赞
知道答主
回答量:48
采纳率:0%
帮助的人:34.2万
展开全部
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 或更高的版本 养成一个练好的编写代码习惯.
lakeice
2012-05-04 · TA获得超过1229个赞
知道小有建树答主
回答量:456
采纳率:100%
帮助的人:452万
展开全部
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语句就能够指定从数据库中取出需要的条数了。
追问
非常感谢
追答
不用客气,抓紧采用哈!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-05-22
展开全部
$_GET[page] 从何而来, 没定义过变量page,为什么这里会用全局变量调用???

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

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

>>>>>>>>>>>>>>>>>>>>用来生成mysql查询语句中的查询部分的,例如 limit 50,10 其中50,就是这样生成的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JINBAO_QI
2012-05-04 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:108万
展开全部
楼上正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式