分页显示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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
php 数组随机取值的简单实例
May 23 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
php中简单的对称加密算法实现
Jan 05 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php常用的url处理函数总结
2014/11/19 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
jquery map方法使用示例
2014/04/23 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python 深入理解yield
2008/09/06 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
员工自我鉴定范文
2013/10/06 职场文书
工程资料员岗位职责
2015/04/13 职场文书