分页显示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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
php注销代码(session注销)
May 31 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP语法小结之基础和变量
Nov 22 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
PHP错误处理函数
Apr 03 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
PHP实现的操作数组类库定义与用法示例
May 24 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
PHP反射基础知识回顾
2020/09/10 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
React学习之JSX与react事件实例分析
2020/01/06 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python发展简史 Python来历
2019/05/14 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python实现上下文管理器的方法
2020/08/07 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
计算机专业毕业生自我鉴定
2014/01/16 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android