频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>高级应用>> 收藏此文 | 收藏本站 | 设为首页

odbc连mssql分页的类

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-8-7 19:17:09 进入讨论组
关 键 词: // function if var page this-page return str. echo

<?
class Pages{
var $cn;        //连接数据库游标
var $d;            //连接数据表的游标
var $result;    //结果
var $dsn;        //dsn源
var $user;        //用户名    
var $pass;        //密码

var $total;        //记录总数
var $pages;        //总页数
var $onepage;    //每页条数
var $page;        //当前页
var $fre;        //上一页
var $net;        //下一页
var $i;          //控制每页显示

##############################
########  连接数据库 ##########
function getConnect($dsn,$user,$pass){
$this->cn=@odbc_connect($dsn,$user,$pass);
if(!$this->cn){
$error="连接数据库出错";
$this->getMess($error);
}
}

##############################
######## 进行表的查询 #########
function getDo($sql){        //从表中查询数据
$this->d=@odbc_do($this->cn,$sql);
if(!$this->d){
$error="查询时发生了小错误......";
$this->getMess($error);
}
return $this->d;
}

#################################
######## 求表中数据的总量 #########
function getTotal($sql){
$this->sql=$sql;
$dT=$this->getDo($this->sql);        //求总数的游标
$this->total=odbc_result($dT,"total");        //这里为何不能$this->d,total 为一个字段
//    $this->total=@odbc_num_rows($dT);         //应唠叨老大的意见,odbc_num_rows 不能用,不知为何,返回为-1
return $this->total;
}

##############################
######## 进行表的查询 #########
function getList($sql,$onepage,$page){
if ($page<>"" and $page<1)         //当此页小于时的处理
$page=1;
$this->s=$sql;
$this->onepage=$onepage;        //每页显示的记录数
$this->page=$page;        //页数
$this->dList=$this->getDo($this->s);      //连接表的游标
$this->pages=ceil($this->total/$this->onepage);     //计算大于指定数的最小整数
if ($this->page>$this->pages)          //当此页大于最大页的处理
$this->page=$this->pages;
if($this->pages==0)
$this->pages++;        //不能取到第0页
if(!isset($this->page))
$this->page=1;
$this->fre = $this->page-1;      //将显示的页数
$this->nxt = $this->page+1;
$this->nums=($this->page-1)*$this->onepage;
return $this->dList;
}

##############################
function getfetch_row($dList){
return odbc_fetch_row($dList);
}   

##############################
function getresult($dList,$num){
return odbc_result($dList,$num);
}    
##############################
######## 翻页 ################
function getFanye(){
$str="";
if($this->page!=1)
$str.="<form name=go2to form method=Post action='".$PHP_SELF."'><a href=".$PHP_SELF."?page=1> 首页 </a><a href=".$PHP_SELF."?page=".$this->fre."> 前页 </a>";
else
$str.="<font color=999999>首页 前页</font>";
if($this->page<$this->pages)
$str.="<a href=".$PHP_SELF."?page=".$this->nxt."> 后页 </a>";
else
$str.="<font color=999999> 后页 </font>";
if($this->page!=$this->pages)
$str.="<a href=".$PHP_SELF."?page=".$this->pages."> 尾页 </a>";
else
$str.="<font color=999999> 尾页 </font>";

$str.="共".$this->pages."页";
$str.="<font color='000064'>  转到 第<input type='text' name='page' size=2 maxLength=3 style='font-size: 9pt; color:#00006A; position: relative; height: 18' value=".$this->page.">页</font> ";
$str.="<input class=button type='button' value='确 定' onclick=check() style='font-family: 宋体; font-size: 9pt; color: #000073; position: relative; height: 19'></form>";
return $str;
}

####################################
######## 对进行提交表单的验验 #########
function check()
{
if (isNaN(go2to.page.value))
echo "javascript:alert('请正确填写转到页数!');";
else if (go2to.page.value==""){
echo "javascript:alert('请输入转到页数!');";
}
else{
go2to.submit();
}
}

function getNums(){       //每页最初的记录数
return $this->nums;
}

function getOnepage(){        //每页实际条数
return $this->onepage;
}

function getI(){      //暂未用
//    $this->i=$this-pageone*($this->page-1)
return $this->i;
}

function getPage(){
return $this->page;
}

function getMess($error){        //定制消息
echo"<center>$error</center>";
exit;
}
}
?>

<?php
// 测试程序
$pg=new Pages();
$pg->getConnect("dsn","user","password");
$pg->getTotal("select count(*) as total from bul_file");            //连学生表求总数
$pg->getList($sql,3,$page);
if($pg->getNums()!=0){
for($i=0;$i<$pg->getNums();$pg->getfetch_row($pg->dList),$i++);        //同上
}
echo "<table width="400" border=1 cellspacing="0" cellpadding="0" bordercolordark="#FFFFFF" bordercolorlight="#000000">";
echo $pg->getFanye();
echo "</td></tr></table>";
echo "<table width="400" border="1" cellspacing="0" cellpadding="0" bordercolordark="#FFFFFF" bordercolorlight="#000000">";
echo "<tr bgcolor="#CCFF99"><td width="5%"><font face="隶书" size="4"><div align="center">ID</div></font></td>      <td width="50%"><font face="隶书" size="4"><div align="center">标题</div></font></td>        <td width="30%"><font face="隶书" size="4"><div align='center'>日期</div></font></td>       </tr>";
$i=1;
while($pg->getfetch_row($pg->dList)){
$pg->getNums();
echo "<tr><td width="5%">".($pg->nums+$i)."</a></td><td width="50%"><div align='center'><a href="list_bul.php?id=".$pg->getresult($pg->dList,1)."" target="left">".$pg->getresult($pg->dList,2)."</a></div></td><td width="30%"><div align='center'>".substr($pg->getresult($pg->dList,4),1,10)."</div></td></tr>";
if($i==$pg->getOnepage()){        //跳出循环
break;
}
$i++;
?>欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱