分页显示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导出oracle库的php代码
Apr 20 PHP
PHP Array交叉表实现代码
Aug 05 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
经典商业广告词
2014/03/13 职场文书
提拔干部考察材料
2014/05/26 职场文书
工地安全生产标语
2014/06/06 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
承诺函范文
2015/01/21 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
MySQL如何使备份得数据保持一致
2022/05/02 MySQL