PHP+MYSQL分页原理

PHP学习 cyanprobe 9年前 (2015-07-07) 6863次浏览 已收录 6个评论

前言:

最近真的是日了狗了,咱去个肯德基干点活,早上一觉睡到7点,起来经理已经给打了10个电话了,尼玛后厨没人!果断7点去了被奴役,让我去擦通风口,然后我果断擦WC,由于我为人正直,我果断要求去擦女厕三个通风口~为了社会公平正义我还特意去看了看果断没有摄像头~。
找了个扯淡的理由,我今天从7点干活到晚上6点,累成狗了。匆匆看了点PHP赶教程来了,不赶教程还有问责的 汗~ 感谢 火狼婆婆 。不赶教程的原因是我想留下点时间把以前的内容实践一下,毕竟PHP的一年自学成功率只有20%。
最近知道宋稳同学高考江苏 二百来分 ,快赶上我的山东 444 分了。恭喜,同喜了。我特意去咨询了一流大学的哥们,计算机无非就学个C++,java入门毛的,老师连个开发经验都没有~ 复旦一年网站被黑100多次完全不是传说。好了废话不多说进入我今天的笔记吧。
2015-07-07_193211

PHP+MYSQL分页原理:

我们要实现分页功能,无非就是把SQL中的数据查询出来,每页用limit限制一下条数罢了。调用一个sql排序结果集而已。这里我们需要学习几个语法和知识的补充。

相关函数语法知识补充:

1.SQL查询语法(数据库MySQL基础增删改查)里的limit语句,EX: select * from table limit 0,10 //显示前10条
select * from table limit 10,10  //取11条至20条信息  selece * from table limit 20,10 //21到30条记录
从以上内容可以总出来分页公式(数学后遗症):(当前页数-1)×每页条数,每页条数
select * from table limit(当前页数-1)*每页条数,每页条数


2.parse_url();这是一个分析URL函数,它能够把URL中的信息解析为关联数组的形式。给你们举个例子吧。

 $a=parse_url("http://username:password@cyanprobe.com/path?arg=value#anchor");
print_r($a):
//此时页面输出
Array([scheme] => http
[host] => cyanprobe.com //主机
[user] => username  //用户名
[pass] => password   //密码
[path] => /path  //输出路径
[query] => arg=value
[fragment] => anchor
)

3.预定义服务器变量$SERVER[“request_uri”]函数。注意,所有$SERVER开头的函数都叫做预定义服务器变量。request_uri函数的作用获取当前URI,也就是除域名外完整的地址。举个例子。

当前页为http://www.cyanprobe.com/1622.html
echo $SERVER["request_url"] ;
结果为 /1622.html

分页制作:

 

<?php
include("connect.php");//链接数据库
$pagesize=5;//设置每页显示条数
$url=$_SERVER["REQUEST_URL"];//获得URL
$url=parse_url($url);//分析URL
$url=$url[path];//获取路径(这里可以试试print_r)
$num1=mysql_query("select * from `test`");
$num=mysql_num_rows($num1); //统计数据库中记录数量
if($_GET[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>";
}
echo $SQL="SELECT * FROM `test` limit $page $pagesize "; //分页公式下部分
 $query=mysql_query($SQL);
 while($row=mysql_fetch_array($query)){
 echo "<hr><b>".$row[name]." | ".$row[sex]; //输出
 }

我去,你一定是看不懂,因为每个大牛的代码书写逻辑是完全不同的,这位一定有着很长时间的开发经验,我实践了半天终于弄清他的流程了。画一个小图,方便你们也理解下。
2015-07-07_192752

后记:

实话说,让我自己单独写可能写不出来,我自己写了下看了3个小时没找出错误,注意get当前页那里,逻辑性非常强,还有分页公式下半部分没有“,”分隔是因为上面我$page拼接了一个“,”。这是原生的PHP100大神写的代码,所以对于新手来说理解是需要时间的。


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP+MYSQL分页原理
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(6)个小伙伴在吐槽
  1. 火狼婆婆。。。囧o(╯□╰)o竟然还提到我了。。。第五,亮了!!这给你萌的。。。话说你是看的哪里的教程学习的啊??其实分页应该没有那么难了。不就是从数据库里限制每次查询的记录数嘛。。。 :grin:
    huowolf2015-07-08 01:57 回复
    • cyanprobe
      你先要判断自己所处的位置,毕竟要构建链接么..教程来自我赢职场~
      凶恶的方块2015-07-08 12:05 回复
  2. 恭喜你又新建了一个全局变量是$_SERVER 不是 $server 的亲~~
    小幻2015-07-08 09:14 回复
  3. 我擦,居然提到我了 :evil:
    宋稳2015-07-12 15:50 回复