php简单分页实例程序代码详解

 更新时间:2016年11月25日 17:05  点击:1461
分页处理功能是所有服务器脚本需要支持的一个功能,原理大概都是一样的获取当前页码与记录数,然后再进行一些计算之后获取从起始与结束位置的内容然后再利用php显示出来即可,下面来看看这个分页例子,后面我会详细介绍

php分页例子

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.111cn.net /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html

xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>php make page list</title>

<style type="text/CSS">

<!-- .page a:link { color: #0000FF; text-decoration: none; }

.page a:visited { text-decoration: none; color: #0000FF; }

.page a:hover { text-decoration: none; color: #0000FF; }

.page a:active { text-decoration: none; color: #0000FF; }

.page{color:#0000FF;} --> </style>

</head>

<body>

<table width="530" height="103" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <th width="30" height="38" bgcolor="#E3E3E3" scope="col">ID</th> <th width="500" bgcolor="#E3E3E3" scope="col">title</th> </tr> <?php /* * Created on 2010-4-17 * * Order by Kove Wong */ include "conn.php";

$Page_size=10;

$result=mysql_query('select * from huazhuangpin');
$count = mysql_num_rows($result);
$page_count = ceil($count/$Page_size);

$init=1; $page_len=7; $max_p=$page_count; $pages=$page_count;

//判断当前页码

 if(empty($_GET['page'])||$_GET['page']<0){ $page=1; }else { $page=$_GET['page']; }

$offset=$Page_size*($page-1);
$sql="select * from huazhuangpin limit $offset,$Page_size"; $result=mysql_query($sql);
while ($row=mysql_fetch_array($result)) { ?> <tr> <td bgcolor="#E0EEE0" height="25px"><div align="center"> <?php echo $row['id']?> </div></td> <td bgcolor="#E0EEE"><div align="center"> <?php echo $row['title']?> </div></td> </tr> <?php } $page_len = ($page_len%2)?$page_len:$pagelen+1;//页码个数 $pageoffset = ($page_len-1)/2;//页码个数左右偏移量

$key='<div>'; $key.="<span>$page/$pages</span> "; //第几页,共几页 if($page!=1){ $key.="<a href=\"".$_SERVER['PHP_SELF']."?page=1\">第一页</a> "; //第一页 $key.="<a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\">上一页</a>"; //上一页 }else { $key.="第一页 ";//第一页 $key.="上一页"; //上一页 } if($pages>$page_len){ //如果当前页小于等于左偏移 if($page<=$pageoffset){ $init=1; $max_p = $page_len; }else{//如果当前页大于左偏移 //如果当前页码右偏移超出最大分页数 if($page+$pageoffset>=$pages+1){ $init = $pages-$page_len+1; }else{ //左右偏移都存在时的计算 $init = $page-$pageoffset; $max_p = $page+$pageoffset; } } } for($i=$init;$i<=$max_p;$i++){ if($i==$page){ $key.=' <span>'.$i.'</span>'; } else { $key.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".$i."\">".$i."</a>"; } } if($page!=$pages){ $key.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\">下一页</a> ";//下一页 $key.="<a href=\"".$_SERVER['PHP_SELF']."?page={$pages}\">最后一页</a>"; //最后一页 }else { $key.="下一页 ";//下一页 $key.="最后一页"; //最后一页 } $key.='</div>'; ?> <tr> <td colspan="2" bgcolor="#E0EEE0"><div align="center"><?php echo $key?></div></td> </tr> </table>

</body> </html>

分析此例子

代码片段一

 代码如下 复制代码

$Page_size=10;

$result=mysql_query('select * from huazhuangpin');
$count = mysql_num_rows($result);
$page_count = ceil($count/$Page_size);

这代码是从数据库中先获取数据库总记录然后再利用$count/$Page_size(总记录除上每天多少条记录得出有多少页记录并且赋值给$page_coun

代码片段二

 代码如下 复制代码

$offset=$Page_size*($page-1);
$sql="select * from huazhuangpin limit $offset,$Page_size"; $result=mysql_query($sql);

这代码核心部份是$offset=$Page_size*($page-1);  这个是利用我们获取的当前页面-1然后判断总记录在多少条再在sql中实现从X,y条记录读取limit $offset,$Page_size 这样就实现了分页获取记录了

代码片段三

 代码如下 复制代码

if(empty($_GET['page'])||$_GET['page']<0){ $page=1; }else { $page=$_GET['page']; }

这段代码是获取page如果page为空就默认为第一页,否则就获取当前页面页码给$page变量以后面的程序作参考值处理。

来给大家介绍一篇PHP抽象类、接口与其应用基础例子,希望能给大家带来帮助哦。

抽象类:
就是用来继承的,本身无法实例化,是用来定规范的,子类必须把父类的抽象方法全部实现
接口:
可以理解为更严格的抽象类
一是像抽象类一样,可以定规范,因为接口有个特点,实现接口就必须把里面的方法全部实现,这样项目经理就可以在接口里面定一个规范,要实现哪些函数
二是php是单继承,一个类只能有一个父类,为了解决这个问题就出现了接口,一个类可以实现多个接口
例如,考虑一个名为Media的类,它用来描述各种公开资料的共同性质,因为Media不表示真实的实体,而是一些相似的泛化表示,所以你不会希望直接对其进行实例化。为确保这种情况不会发生,可以声明这个类是抽象的。然后再由各种派生的Media类继承此抽象类,这保证了子类直接的一致性,因为在抽象类中定义的所有方法都必须在子类中实现。
声明为抽象的类必须在定义前面加上关键字abstract,如下:
abstract class Class_Name
{
 //insert attribute definitions here
 //insert mothod definitions here
}
抽象类可以确保一致性,因为任何派生类都必须实现该抽象类继承的所有抽象方法。如果没有实现抽象类中定义的任何抽象方法,将导致一个致命错误。
用抽象类还是接口
什么时候应当使用接口,什么时候该使用抽象类?这让人很困惑,也带来了很多争论。不过,以下因素可以帮助你做出决定:
•如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。
•如果必须从多个来源继承行为,就使用接口。PHP类可以继承多个接口,但不能扩展多个抽象类。
•如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。在接口中无法实现行为。

关于重复数组的删除我们都介绍过N种方法了,今天这个例子有点不同就是 删除数组中相同的元素,只保留一个相同元素了,下面我们上例子。
 代码如下 复制代码

<?php
// 删除数组中相同元素,只保留一个相同元素
function formatArray($array)
{
sort($array);
$tem = ”;
$temarray = array();
$j = 0;
for($i=0;$i<count($array);$i++)
{
if($array[$i]!=$tem)
{
$temarray[$j] = $array[$i];
$j++;
}
$tem = $array[$i];
}
return $temarray;
}
//测试 调用函数
$array = array(‘aa’,'bb’,'aa’,3,4,5,5,5,5,’bc’);
$arr = formatArray($array);
print_r($arr);
?>

php实现文件下载有许多的方法最多的就是直接显示文件路径了然后点击下载即可,另一种是利用header函数再由filesize与fopen读取文件进行下载了,这个可以实现限速下载了,但是个人认为使用header限速下载大文件是非常的不理想的哦,下面我们来看个例子。

例子

 代码如下 复制代码

<?php
header("Content-Type; text/html; charset=utf-8");
class DownFile {
public static function File($_path,$file_name) {
//解决中文乱码问题
$_path=$_path.$file_name;
//判断文件是否存在
if (!file_exists($_path)) {
exit('文件不存在');
}
$_path=iconv('utf-8','gb2312',$_path);
$file_size=filesize($_path);
$fp=fopen($_path,'r');
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: $file_name");
header("Content-Disposition: attachment; filename=$file_name");
$buffer=1024;
$file_count=0;
while (!feof($fp) && ($file_size-$file_count>0)) {
$file_data=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_data;
}
fclose($fp);
}
}
//路径
$path='../';
//文件名
$file_name='filelist.php';
DownFile::File($path,$file_name);
?>

分析研究

使用header函数可以把像服务器端的脚本程序不需打包就可以进行下载了,像如php文件或html文件了,上面例子的核心语句是

 代码如下 复制代码

$_path=iconv('utf-8','gb2312',$_path);
$file_size=filesize($_path);
$fp=fopen($_path,'r');
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: $file_name");
header("Content-Disposition: attachment; filename=$file_name");
$buffer=1024;
$file_count=0;
while (!feof($fp) && ($file_size-$file_count>0)) {
$file_data=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_data;
}

下面三句,一个转换文件名编码这个防止中文乱码,第一个是获取文件大小,第三个是使用fopen读取文件

 代码如下 复制代码

$_path=iconv('utf-8','gb2312',$_path);
$file_size=filesize($_path);
$fp=fopen($_path,'r');

下面几行代码 是告诉浏览器我们要发送的文件是什么内容与文件名

 代码如下 复制代码

header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: $file_name");
header("Content-Disposition: attachment; filename=$file_name");


下面三行是告诉我们最大下载不能超过1MB第秒,并且循环一直下载,直到文件下载完毕即可

 代码如下 复制代码

$buffer=1024;
$file_count=0;
while (!feof($fp) && ($file_size-$file_count>0)) {
$file_data=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_data;

php mktime函数获取今天开始和结束的时间截,mktime函数我想大家并不陌生了,他可以把日期转换在时间截了,下面我整理了一一些使用mktime函数对日期转换的例子,希望文章对各位有帮助。

下面我们开始介绍如何获取当天的开始时间截和结束时间截。 代码如下:

mktime(hour,minute,second,month,day,year,is_dst)

参数 描述
hour 可选。规定小时。
minute 可选。规定分钟。
second 可选。规定秒。
month 可选。规定用数字表示的月。
day 可选。规定天。
year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
is_dst
可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

例子 今日、昨日、上周、本月的起始时间戳和结束时间戳

 代码如下 复制代码

//开始时间截

$start=mktime(0,0,0,date("m"),date("d"),date("Y"));

//结束时间截:
$end=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;

//php获取昨日起始时间戳和结束时间戳
 
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
 
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
 
//php获取上周起始时间戳和结束时间戳
 
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
 
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
 
//php获取本月起始时间戳和结束时间戳
 
$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
 
$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));

写成函数转换成中文

 代码如下 复制代码

function get_period_time($type='day'){
    $rs = FALSE;
    $now = time();
    switch ($type){
        case 'day'://今天
            $rs['beginTime'] = date('Y-m-d 00:00:00', $now);
            $rs['endTime'] = date('Y-m-d 23:59:59', $now);
            break;
        case 'week'://本周
            $time = '1' == date('w') ? strtotime('Monday', $now) : strtotime('last Monday', $now);
            $rs['beginTime'] = date('Y-m-d 00:00:00', $time);
            $rs['endTime'] = date('Y-m-d 23:59:59', strtotime('Sunday', $now));
            break;
        case 'month'://本月
            $rs['beginTime'] = date('Y-m-d 00:00:00', mktime(0, 0, 0, date('m', $now), '1', date('Y', $now)));
            $rs['endTime'] = date('Y-m-d 23:39:59', mktime(0, 0, 0, date('m', $now), date('t', $now), date('Y', $now)));
            break;
        case '3month'://三个月
            $time = strtotime('-2 month', $now);
            $rs['beginTime'] = date('Y-m-d 00:00:00', mktime(0, 0,0, date('m', $time), 1, date('Y', $time)));
            $rs['endTime'] = date('Y-m-d 23:39:59', mktime(0, 0, 0, date('m', $now), date('t', $now), date('Y', $now)));
            break;
        case 'half_year'://半年内
            $time = strtotime('-5 month', $now);
            $rs['beginTime'] = date('Y-m-d 00:00:00', mktime(0, 0,0, date('m', $time), 1, date('Y', $time)));
            $rs['endTime'] = date('Y-m-d 23:39:59', mktime(0, 0, 0, date('m', $now), date('t', $now), date('Y', $now)));
            break;
        case 'year'://今年内
            $rs['beginTime'] = date('Y-m-d 00:00:00', mktime(0, 0,0, 1, 1, date('Y', $now)));
            $rs['endTime'] = date('Y-m-d 23:39:59', mktime(0, 0, 0, 12, 31, date('Y', $now)));
            break;
    }
    return $rs;
}

[!--infotagslink--]

相关文章

  • php KindEditor文章内分页的实例方法

    我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • 自己动手写的jquery分页控件(非常简单实用)

    最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?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
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • jquery实现的伪分页效果代码

    本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08