分页显示Oracle数据库记录的类之二


Posted in PHP onOctober 09, 2006

//--------------------------------
// 工作函数
//--------------------------------

//读取记录
//主要工作函数,根据所给的条件从表中读取相应的记录
//返回值是一个二维数组,Result[记录号][字段名]

function ReadList() {

$SQL="SELECT * FROM ".$this->Table." ".$this->Condition." ORDER BY ".$this->Id." DESC";

$stmt = OCIParse($this->LinkId,$SQL);
$bool = OCIExecute($stmt);
if (!$bool) {
echo "连接失败!";
OCILogoff($this->LinkId);
exit;
}
else {
$ncols = OCINumCols($stmt);
for ( $i = 1; $i <= $ncols; $i++ )
$column_name[$i] = OCIColumnName($stmt,$i);
$k=0;

for($j=0;$j<$this->StartRec+$this->Offset;$j++) OCIFetch($stmt);
for($j=0;$j<$this->MaxLine;$j++){
if(OCIFetch($stmt)){
$k++;
for($i=1;$i<=$ncols;$i++)
$temp[$column_name[$i]]=OCIResult($stmt,$i);
$this->Result[]=$temp;
}
else break;
}
$this->Number=$k;

}
OCIFreeStatement($stmt);
return $this->Result;
}
//读最新的记录
//topnum指定要读出的记录数

function ReadTopList($topnum){

$SQL="SELECT * FROM ".$this->Table." ".$this->Condition." ORDER BY ".$this->Id." DESC";

$stmt = OCIParse($this->LinkId,$SQL);
$bool = OCIExecute($stmt);
if (!$bool) {
echo "连接失败!";
OCILogoff($this->LinkId);
exit;
}
else {
$ncols = OCINumCols($stmt);
for ( $i = 1; $i <= $ncols; $i++ )
$column_name[$i] = OCIColumnName($stmt,$i);
$k=0;

for($j=0;$j<$topnum;$j++){
if(OCIFetch($stmt)){
$k++;
for($i=1;$i<=$ncols;$i++)
$temp[$column_name[$i]]=OCIResult($stmt,$i);
$this->TopResult[]=$temp;
}
else break;
}
$this->TopNumber=$k;

}
OCIFreeStatement($stmt);
return $this->TopResult;

}
//---------------------------
// 分页相关
//---------------------------

//显示当前页及总页数
//本函数在GetPage()后调用。
function ThePage() {
echo "第".$this->CPages."页/共".$this->TPages."页";
}

//显示翻页按钮
//此函数要在GetPage()函数之后调用
//显示下页、上页,并加上要传递的参数

function Page() {
$k=count($this->PageQuery);
$strQuery=""; //生成一个要传递参数字串
for($i=0;$i<$k;$i++){
$strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value];
}

return $strQuery;
}

function PrePage($strQuery){
$prev=$this->Offset-$this->MaxLine;
if($prev>=0)
echo "<A href=$PHP_SELF?offset=".$prev.$strQuery." class=newslink>上一页</A>";
else if($this->TheFirstPage!=NULL)
echo "<A href=".$this->TheFirstPage." class=newslink>上一页</A>";
else echo "上一页";
}

function NexPage($strQuery){
$next=$this->Offset+$this->MaxLine;
$k=$this->Total-$this->StartRec;
if($next<$k)
echo "<A href=$PHP_SELF?offset=".$next.$strQuery." class=newslink>下一页</A>";
else
echo "下一页";
}
//------------------------------------
// 记录分组
//----------------------------------
//显示分组
function NumPage() {
$first=($this->CGroup-1)*($this->PGroup)+1;
$last=($first+$this->PGroup > $this->TPages)? ($this->TPages+1):($first+$this->PGroup);
$pr=($this->CGroup-2>=0)?( ($this->CGroup-2)*($this->PGroup)+1 ):(-1);
$prev=($pr!=-1)?( ($pr-1)*$this->MaxLine):(0);
$ne=($this->CGroup*$this->PGroup+1<=$this->TPages)?($this->CGroup*$this->PGroup+1):(-1);
$next=($ne!=-1)?( ($ne-1)*$this->MaxLine):(0);

$k=count($this->PageQuery);
$strQuery=""; //生成一个要传递参数字串
for($i=0;$i<$k;$i++){
$strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value];
}

if($first!=1)
echo "<A href=$PHP_SELF?offset=".$prev.$strQuery." > << </a>";
for($i=$first;$i<$last;$i++) {
if($this->CPages!=$i){
$current=($i-1)*$this->MaxLine;
echo "<A href=$PHP_SELF?offset=".$current.$strQuery." >".$i."</a> ";
}
else echo "<font color=#e00729>".$i."</font> ";
}
if($ne!=-1)
echo "<A href=$PHP_SELF?offset=".$next.$strQuery." > >> </a>";
}

//******end class
}
?>

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php登录超时检测功能实例详解
Mar 21 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP7新功能总结
Apr 14 PHP
分页显示Oracle数据库记录的类之一
Oct 09 #PHP
在线竞拍系统的PHP实现框架(一)
Oct 09 #PHP
用在PHP里的JS打印函数
Oct 09 #PHP
在PHP的图形函数中显示汉字
Oct 09 #PHP
PHP中在数据库中保存Checkbox数据(2)
Oct 09 #PHP
PHP中显示格式化的用户输入
Oct 09 #PHP
提升PHP执行速度全攻略(下)
Oct 09 #PHP
You might like
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
Python help()函数用法详解
2014/03/11 Python
python实现给字典添加条目的方法
2014/09/25 Python
Django admin美化插件suit使用示例
2017/12/12 Python
微信跳一跳游戏python脚本
2020/04/01 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Python银行系统实战源码
2019/10/25 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
全国优秀辅导员事迹材料
2014/05/14 职场文书
同意迁入证明模板
2014/10/26 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2014年班务工作总结
2014/12/02 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
学校运动会简讯
2015/07/20 职场文书