分页显示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与MySQL开发的8个技巧小结
Dec 17 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
简单的php购物车代码
Jun 05 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
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python爬取内容存入Excel实例
2019/02/20 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python实现把类当做字典来访问
2019/12/16 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
python程序文件扩展名知识点详解
2020/02/27 Python
构建高效的python requests长连接池详解
2020/05/02 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
院药学专业个人求职信
2013/09/21 职场文书
打架检讨书800字
2014/01/10 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
初中班主任评语
2014/04/24 职场文书
就业推荐表导师评语
2014/12/31 职场文书
音乐教师个人总结
2015/02/06 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS