分页显示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缓存技术详细总结
Aug 07 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
php调用c接口无错版介绍
Mar 11 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
php简单实现多语言切换的方法
May 09 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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运行速度的一些小技巧分享
2012/07/03 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
jquery实现图片预加载
2015/12/25 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
javascript常用的设计模式
2017/02/09 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python列表生成器迭代器实例解析
2019/12/19 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Python通过文本和图片生成词云图
2020/05/21 Python
顺丰快递Java软件工程师面试题
2015/07/31 面试题
秋季运动会活动方案
2014/02/05 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
产品销售计划书
2014/05/04 职场文书
环境日宣传活动总结
2014/07/09 职场文书
寒假安全保证书
2015/02/28 职场文书
情况说明书怎么写
2015/10/08 职场文书