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从数据库内获取数据并显示了。以下我将用具体代码加以说明。
例
代码如下 | 复制代码 |
<html> //计算页数 //设置页数 //读取指定记录 //把数据用表格显示出来 ?> </body> |
总结,分页就根据用户点击连接,然后由于php获取page值再经过一系列算法得出当前多少页面,然后取多少要就显示出你要查看的记录了。
Ajax无限联动实现方法就是先由用户选择大类,然后我们再用ajax实现数据局部请求给php页面处理,php把用户需要的数据返回到html js进行处理,这样就实现了无限联动下拉菜单的效果了。首先是 Ajax.php文件:
这个文件我觉着就是接收数据处理数据的
代码如下 | 复制代码 |
<?php |
上面的这些代码 不用我说都知道是连接数据库的
代码如下 | 复制代码 |
//select 语句 $q=mysql_query($sql); |
上面的1和2的选项是因为 我写了一遍select语句出现报错了 然后我就又写了一遍 结果两个都对了 1 是注释掉了
if(mysql_num_rows($q)!=0){ 判断查找的语句的个数 如果是0的话就代表下面没有分支了 就不会显示了
//记住在$_POST[]加()这是我出现的错误
代码如下 | 复制代码 |
echo "<select id='s".($_POST['num']+1)."' onchange='fun(".($_POST['num']+1).")'>"; |
输出一个select选择框会添加到后来最终显示的页面的div里面 后面会做介绍
代码如下 | 复制代码 |
while($rs=mysql_fetch_array($q)){ |
--------------------------------------------------------------------------------
下面的是Ajax.js文件var xmlhttp;定义一个变量
代码如下 | 复制代码 |
function createxml(){这个部分主要是用来判断浏览器 |
--------------------------------------------------------------------------------
下面是展示页面liandong.php(原谅我起名字的时候都是很简单的思维)
代码如下 | 复制代码 |
<?php ?> |
1.php中时间转换函数
代码如下 | 复制代码 |
strtotime(date()) date("Y-m-d H:i",$unixtime) |
2.php中获得今天零点的时间戳
要获得零点的unix时间戳,可以使用$todaytime=strtotime(“today”),
然后再使用date("Y-m-d H:i",$todaytime)转换为日期。
时间戳转换为日期
时间戳转换函数:date("Y-m-d H:i:s",time()),"Y-m-d H:i:s"是转换后的日期格式,time()是获得当前时间的时间戳。如果是date("Y-m-d H:i:s",time()),则小时分秒一起显示;如果是date("Y-m-d ", time()),只显示年月日。例如:
date("Y-m-d H:i:s",time())转换后为:2010-07-18 18:42:48
date("Y-m-d",time())转换后为:2010-07-18
日期转换为时间戳 .
代码如下 | 复制代码 |
<?php public function indexAction(){ ?> |
3.php中时间戳转换为日期,并按照时间显示不同的内容,如刚刚,分钟前,小时前,今天,昨天等
代码如下 | 复制代码 |
/*时间转换函数*/ function transTime($ustime) { |
其它的参考
使用date将当时间戳与指定时间戳转换成系统时间
(1)打印明天此时的时间戳strtotime(”+1 day“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25 |
(2)打印昨天此时的PHP时间戳strtotime(”-1 day“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25 |
(3)打印下个星期此时的时间戳strtotime(”+1 week“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25 |
(4)打印上个星期此时的时间戳strtotime(”-1 week“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25 |
(5)打印指定下星期几的PHP时间戳strtotime(”next Thursday“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00 |
(6)打印指定上星期几的时间戳strtotime(”last Thursday“)
代码如下 | 复制代码 |
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25 指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00 |
遍历某文件夹下的所有文件和文件夹,并且把所以匹配的文件复制到同一目录。下面例子把”/www/pooy/baike”目录里面的,所有html文件都复制到”/www/pooy/bk”这个目录下面。
代码如下 | 复制代码 |
$dir="/www/pooy/baike";
|
代码如下 | 复制代码 |
<?php //创建画布,在创建前不要有任何输出和空格哦,否则图片生成不了 $im=imagecreatetruecolor(100,10); //imagefill($im,0,0,$cc); //着色的颜色,采用的是RGB的格式 $red=imagecolorallocate($im,0,0,245); $cc=imagecolorallocate($im,245,245,245); //颜色 $red1 = imagecolorallocate($im,30,144,255); $red2 = imagecolorallocate($im,220,20,60); $red3 = imagecolorallocate($im,0,206,209); $red4 = imagecolorallocate($im,255,255,0); //填充矩形颜色可以自定义填充的颜色,上面定义的颜色在这里我只是做测试例子,至于长度比例大小可以根据项目动态数据来控制 //圆 //imageellipse($im,20,20,20,20,$red); //直线 //imageline($im,0,0,400,300,$red); //矩形 //imagerectangle($im,0,0,100,10,$red); //填充矩形 imagefilledrectangle($im,0,0,30,10,$red); imagefilledrectangle($im,30,0,100,10,$cc); //弧线 //imagearc($im,100,100,50,50,180,270,$red); //扇形 //imagefilledarc($im,100,100,80,50,180,270,$red,IMG_ARC_PIE); //拷贝图片到画布 //1.加载源图片 //$srcImage=imagecreatefromgif("2.GIF"); //这里我们可以使用一个getimagesize() //$srcImageInfo=getimagesize("2.GIF"); //拷贝源图片到目标画布 //imagecopy($im,$srcImage,0,0,0,0,$srcImageInfo[0],$srcImageInfo[1]); header("content-type: image/png"); //生成图片 imagepng($im); //释放内存,亲,注意咯!如果不加这句,访问量大的话apache会爆掉的哦 imagedestory($im); ?> |
注意:1.PHP本身就支持了画图,但必须开启GD库。
打php.ini 文件,找到extension=php_gd2.dll,把前面的分号“;”去掉,重启apache
相关文章
- 我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
- 最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
- 一、常量常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。 常量名和其它任何 PHP 标签遵循...2015-10-30
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13