分页显示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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP读取CSV大文件导入数据库的实例
Jul 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
webpack打包react项目的实现方法
2018/06/21 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python 一句话生成字母表的方法
2019/01/02 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
python requests使用socks5的例子
2019/07/25 Python
python 调试冷知识(小结)
2019/11/11 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
项目委托协议书(最新)
2014/09/13 职场文书
教师岗位职责
2015/02/03 职场文书