分页显示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 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
服务器web工具 php环境下
Dec 29 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
PHP微信分享开发详解
Jan 14 PHP
安装docker和docker-compose实例详解
Jul 30 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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 Cookie学习笔记
2016/08/23 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中将字典转换成其json字符串
2014/07/16 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
python滑块验证码的破解实现
2019/11/10 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
体育学院毕业生自荐信
2013/11/03 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
药剂专业求职信
2014/06/20 职场文书
主持稿开场白
2015/06/01 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
《分数乘法》教学反思
2016/02/24 职场文书