分页显示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的性能
Oct 30 PHP
使用php清除bom示例
Mar 03 PHP
php输出xml必须header的解决方法
Oct 17 PHP
smarty简单分页的实现方法
Oct 27 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
php生成圆角图片的方法
Apr 07 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
php实现映射操作实例详解
Oct 02 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中文汉字验证码
2007/04/08 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python打开网页和暂停实例
2014/09/30 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python对视频画框标记后保存的方法
2018/12/07 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
《李广射虎》教学反思
2014/04/27 职场文书
警示教育活动总结
2014/05/05 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Python函数中apply、map、applymap的区别
2021/11/27 Python