动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 odbc连mssql分页的类

作者来源: 
阅读 1335 人次 , 2006-3-29 4:08:00 


<?
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++;
?>

 本文Tagsmssql  分页  数据库  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:编码对照表的使用
· 下一篇:php通用检测函数集
· PHP语句中or的用法
· PHP3/4.1 register_global=on转向PHP4.2/3 过度方法
· PHP+APACHE实现用户论证的方法
· PHP安装问题
· PHP中的XML应用


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077