理解php分页思路方法详解
只需要得到两个变量就成功了一半:
每页要显示的记录数$pageSize
表中总的数据量 $rowCount
有了以上两个变量,我们就可以得出 共有几页了$pageCount
然后通过for循环,比如总共有13个页面,那么很容易就能通过for循环输出页数
代码如下 | 复制代码 |
$nav='';//用来保存页数的一个变量 for ($i=1;$i<=13;$i++) { $nav.="<a href='index.php?page=".$i."'>第".$i."页</a> "; } |
以上的for循环将输出如
第1页,第2页,第3页,第4页,第5页,第6页,第7页,第8页,第9页,第10页,第11页,第12页,第13页
如果我们只想每次只显示十个页面呢?比如1-10页,11-20页
很简单,只要稍微修改下for循环即可实现
代码如下 | 复制代码 |
$step= floor(($pageNow-1)/10)*10+1; for ($i=$step;$i<=$step+10;$i++) { $nav.="<a href='index.php?page=".$i."'>第".$i."页</a> "; } |
比如,当前页面$pageNow如何在1~10之间的话,那么$step=0
当前页面$pageNow如何在11~20之间的话,那么$step=10
当前页面$pageNow如何在21~30之间的话,那么$step=20
参考具体的实现过程的代码,我们不难发现,for循环的第二个条件只需要加上10就可以实现每次只显示10也的情况了,我们将这一步分装在fenyePage类中的getLink()方法中
话又说回来,如何才能得到$pageSize和$rowCount两个变量的值呢?
$pageSize可以又程序员自己指定,$rowCount可以借助一个简单的执行sql语句的函数就能得到
代码如下 | 复制代码 |
<?php /** * $sql语句:①获取数据②获取总记录数 */ class fenyePage{ public $pageSize=5;//每页显示的数量-->程序员指定的 public $rowCount;//这是从数据库中获取的(形如SELECT COUNT(id) FROM TABLE)用来保存总共有多少条记录 public $pageNow;//通过$_GET['page']获取的,用来保存当前所在的页码 public $pageCount;//计算得到的,用来保存总共有多少页 public $res_arr;//用来保存要显示到页面的数据(比如保存SELECT * FROM TABLE LIMIT 0,10 检索的数据) public $nav;//显示第几页第几页的导航条 /** * 取得当前页面的超链接 * * @author 小飞 2012/5/30 */ public function getLink() { $this->nav=''; $this->pageCount=ceil(($this->rowCount/$this->pageSize)); $step= floor(($this->pageNow-1)/10)*10+1; if ($this->pageNow>10) { $this->nav.=" <a href='index.php?page=".($step-1)."'> << </a> ";//整体每10页向前翻 } if ($this->pageNow!=1) { $this->nav.="<a href='index.php?page=".($this->pageNow-1)."'> 上一页</a> "; } if ($this->pageNow!=1) { $this->nav.="<a href='index.php?page=1'>首页</a> "; } for ($start=$step;$start<$step+10 && $start<=$this->pageCount;$start++) { $this->nav.="<a href='index.php?page=".$start."'>".$start."</a> "; } if ($this->pageNow!=$this->pageCount) { $this->nav.="<a href='index.php?page=".$this->pageCount."'>末页</a> "; } if ($this->pageNow!=$this->pageCount) { $this->nav.=" <a href='index.php?page=".($this->pageNow+1)."'>下一页</a>"; } if ($this->pageCount>10 && $this->pageNow<$this->pageCount-8){ $this->nav.=" <a href='index.php?page=".($step+10)."'> >> </a>";//整体每10页向后翻 } $this->nav.="/共有".$this->pageCount."页"; } } ?> |
由于zf中操作数据库的任务由model层来完成,所以,我将获取$rowCount的值的函数放在了对应的表model中
比如:我是操作order表的
那么当我要显示所有订单信息的时候,我通过order类中的showorder()方法取得$rowCount的值,并将其付给分页类中的$rowCount属性
同样,将要显示在页面上的数据信息也一并付给了分页类中的$res_arr属性
这样,我们就可以很容易的通过实例化一个分页类(fenyePage),然后将其通过参数传给showorder()函数,由该函数完成以下动作:
①要显示在页面上的信息
②表中总共有多少条记录
代码如下 | 复制代码 |
/** * 根据指定的用户id,查询该用户的历史订餐记录 * * @author 小飞 2012/5/30 * @param $id 用户id * @param $fenye 实例化的一个对象,用来处理分页 * @todo $sql1语句 "select * from table where * limit 0,10" 该sql语句主要用来检索数据库中的数据,用以显示在view层 * @todo $sql2语句 "select count(id) from table" 该sql语句用来得出总的数据量 */ public function showorder($id=null,$fenye=null) { $db = $this->getAdapter(); $select=$db->select(); $select->from(array('o' => 'order'),array('o.id','o.user_id','o.user_name','o.food_name','o.food_price','o.order_time','o.order_state')); if ($id!=null){ $select->where('o.user_id=?',$id); } $select->join(array('d'=>'department'),'o.dep_id = d.id','d.dep_name'); if($fenye!=null){ $select->limit($fenye->pageSize,($fenye->pageNow-1)*$fenye->pageSize); } $sql1=$select->__toString(); //该sql语句主要用来计算总的数据量 $sql2="SELECT COUNT(id) FROM `order`"; $fenye->res_arr=$db->fetchAll($sql1);//将要显示的数据存储到分页类的$res_arr属性当中,方便调用 $rowCount=$db->fetchAll($sql2);//将表中的总数据量保存到分页类的rowCount属性当中 $fenye->rowCount=$rowCount[0]['COUNT(id)']; $fenye->getLink(); return $fenye->res_arr; } |
总结分页最核心的几句代码
代码如下 | 复制代码 |
$this->pageCount=ceil(($this->rowCount/$this->pageSize)); $step= floor(($this->pageNow-1)/10)*10+1; |
再就是sql中的select * from table where * limit 0,10也就是本实例中的$select->limit($fenye->pageSize,($fenye->pageNow-1)*$fenye->pageSize); 了。
本文章来介绍一篇关于标签云的生活方法,我们利用php和mysql做实现,有需要的同学可参考一下。用户输入文本和输入的文本在过去的一个标签云 。标签云是一个用户生成的标签的可视化描述,或只是一个网站的文字内容,通常用来描述网站的内容。
为此,我们将创建一个HTML表格,将接受用户文本,也让用户可以看到从 MySQL数据库,其中包含在过去输入的文本生成的标签云。
代码如下 | 复制代码 |
<?php echo '<form method="post" action="tag_cloud_gen.php" name="gen_tag_db">'; echo '<p>Input your text here:<br /><textarea name="tag_input" rows="20" cols="80"></textarea></p>'; echo '<input type="submit" name="submit">'; echo '</form>'; ?> <br /> <h3>OR</h3> <br /> <p>see the current tag cloud here</p> <?php echo '<form name="show_tag_cloud" method="post" action="show_tag_cloud.php">'; echo '<input type="submit" value="show current tag cloud" >'; echo '</form>'; ?> |
其中每个计算其频率和对将进入一个数组,输入的文本将被表征为单个词。然后将这个数组存储到一个MySQL数据库,我们可以选择保存在MySQL数据库表coloumn存储任何链接,如果这个项目未来的扩展。
1) tag_id —- int,primary key,auto increament 1)tag_id - 整型,主键,自动increament
2) keyword — varchar(20),unique 2)关键字 - 数据类型为varchar(20),独特的
3) weight — int 3)重量 - 诠释
4) link — varchar(256). 4)链接 - 为varchar(256)。
代码如下 | 复制代码 |
<?php $string=$_POST['tag_input']; $query="select * from `tagcloud_db`.`tags` where keyword like '%$keyword%'"; if(!$resultset){ |
Make anether file and name it style.css .做出anether文件和将其命名为style.css文件。 Put the following code in it.把下面的代码。
代码如下 | 复制代码 |
HTML, BODY |
这将使我们的标签云外观漂亮,它保存为style.css的。
再次,使一个新的PHP文件,并命名它show_tag_cloud.php。
在PHP代码中,如下我们连接到MySQL数据库,获取所有的标签,其重量和纽带。
然后计算每个使用它的重量及最小的标签大小假定为标签的大小,它也是每一个标签从数据库中检索或与Google链接,如果没有链接存在,即“不适用”的链接
代码如下 | 复制代码 |
<?php if($resultset=mysql_query($query,$connection)){ // Smallest font size possible // Tag Separator ?> |
现在把他们所有在您的Web服务器的根目录,并观看结果。 每个查询会给你新的结果,随着时间的推移,数据库的增长。
文章利用了第三方接口来实现ip地址查询,这里根据用户提交的IP地址就可以方便的查出IP地址真实所在地。代码如下 | 复制代码 |
<?php header("content-Type: text/html; charset=utf-8");$weburl=$_SERVER['SERVER_NAME'];$weblink="http://".$weburl."/";if(count($_GET)>0){$urlip=array_keys($_GET);$urlip=str_replace("_",".",$urlip[0]);}?> <style type="text/css"> <SCRIPT LANGUAGE="JavaScript">function checkIP(){var ipArray,ip,j;ip = document.ipform.ip.value;if(/[A-Za-z_-]/.test(ip)){if(!/^([w-]+.)+((com)|(net)|(org)|(gov.cn)|(info)|(cc)|(com.cn)|(com.hk)|(net.cn)|(org.cn)|(com.ru)|(net.ru)|(org.ru)|(name)|(biz)|(hk)|(vn)|(com.sg)|(pk)|(ph)|(ac)|(bz)|(de)|(net.au)|(my)|(tv)|(us)|(jp)|(kr)|(sg)|(mn)|(cd)|(ue)|(sh)|(lc)|(hn)|(me)|(la)|(cc)|(tk)|(com.tw)|(cm)|(cn))$/.test(ip)){alert("不是正确的域名,请检查域名格式或看是否有空格"); document.ipform.ip.focus();return false;}}else{ipArray = ip.split(".");j = ipArray.length;if(j!=4){alert("不是正确的IP");document.ipform.ip.focus();return false;}for(var i=0;i<4;i++){if(ipArray[i].length==0 || ipArray[i]>255){alert("不是正确的IP");document.ipform.ip.focus();return false;}}}} |
淘宝IP地址库接口说明
1. 请求接口(GET):
http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
2. 响应信息:
(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
3. 返回数据格式:
代码如下 | 复制代码 |
{"code":0,"data":{"ip":"210.75.225.254","country":"u4e2du56fd","area":"u534eu5317", "region":"u5317u4eacu5e02","city":"u5317u4eacu5e02","county":"","isp":"u7535u4fe1", "country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000", "county_id":"-1","isp_id":"100017"}} |
其中code的值的含义为,0:成功,1:失败。
.htaccess 通用版伪静态规则 其它规则请参考下面的进行修改
代码如下 | 复制代码 |
RewriteEngine on RewriteRule ^(.*)$ index.php?id=$1 [L] |
sina SAE专版伪静态配置规则
代码如下 | 复制代码 |
- rewrite: if (!is_dir() && !is_file() && path ~ "/(.*)" ) goto "index.php?$1" |
代码如下 | 复制代码 |
<?php |
-1062731331 3194548645
fckeditor编辑器是一个支持多语多的网页在线编辑器,他可以支持asp,asp.net,jsp,php等,但是它默认的不是php而是asp哦,下面我们来看看如何在php中配置fckeditor编辑器吧。下载解压后为文件夹减肥:
删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,fckeditor.php五个文件以外的所有文件
删除目录/editor/_source,_testcases(基本上,所有_开头的文件夹或文件都是可选的),
删除/editor/filemanager/browser/default/connectors/下除PHP目录的所有目录
删除/editor/filemanager/upload/下的除PHP目录的所有目录
删除/editor/lang/下的除了 en.js, zh.js, zh-cn.js三个文件的所有文件
一:修改文件上传语言为PHP
打开fckconfig.js
找到:
var _FileBrowserLanguage = 'asp'
var _QuickUploadLanguage = 'asp'
改成:
var FCKConfig.DefaultLanguage = 'zh-cn' ;
var _FileBrowserLanguage = 'php'
var _QuickUploadLanguage = 'php'
二:启用PHP文件上传
1:启用FileBrowser:
打开fckeditor/editor/filemanager/connectors/php/config.php(这里对中文支持不好,大可要自行对中文名进行处理)
启用文件上传:
找到:
$Config['Enabled'] = false
改成:
$Config['Enabled'] = true
设置上传存放目录:
找到:
$Config['UserFilesPath'] = '/userfiles/'
改成:
$Config['UserFilesPath'] = '你自己的项目路径'
2:启用QuickUpload
打开fckeditor/editor/filemanager/upload/php/config.php
启用文件上传:
找到:
$Config['Enabled'] = false
改成:
$Config['Enabled'] = true
设置上传存放目录:
找到:
$Config['UserFilesPath'] = '/userfiles/'
改成:
$Config['UserFilesPath'] = '你自己的项目路径'
测试
将FCKeditor放在网站根目录
在PHP文件里面,包含/FCKeditor/fckeditor.php文件
代码如下 | 复制代码 |
//包含fckeditor类 //还可设置 |
好了,这样我们的php配置Fckeditor教程就到这里了,上面讲到了如果上传中文名字会乱码的问题,大家可在本站搜索,有相关解决方法。
相关文章
- 我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
- javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13