相关文章 • 分页显示Mysql数据库记录的类 <?php /********************************************* TViewPage v 1.0 分页显示Access数据库记录的类 与我上次发布的另一个分页显示mysql记录的类,使用方法基本一样。 作者:sharetop E-mail:ycshowtop@21cn.com 时间:2000-9-6 本类没有提供显示记录的功能,只是分页读取记录至 Result二维数组中。 需在外部自定义数据显示格式。 本类提供打开数据库的功能。请先用Init()初始化数据库。 ***********************************************/ class TViewPage { var $Table; //表名 var $MaxLine; //每页显示行数 var $LinkID; //数据库连接号 var $Id; //分页参考字段 var $Offset; //记录偏移量 var $Total; //记录总数 var $Number; //本页读取的记录数 var $Result; //读出的结果 var $TPages; //总页数 var $CPages; //当前页数 var $Condition; //显示条件 如:where id='$id' order by id desc var $PageQuery; //分页显示要传递的参数 //******构造函数************* //参数:表名、最大行数、分页参考字段、偏移量 //分页参考字段请用一个自动编号字段
function TViewPage($TB,$ML,$ID,$OF=0){ $this->Table=$TB; $this->MaxLine=$ML; $this->Offset=$OF; $this->Condition=" "; $this->Id=$ID; } //********初始化数据库连接************* //参数:DSN、用户名、密码 function Init($dsn,$usr,$pws){ $this->LinkID=odbc_connect($dsn,$usr,$pws); } //********设置显示条件********* //如:where id='$id' order by id desc //要求是字串,符合SQL语法(本字串将加在SQL语句后) function SetCondition($s){ $this->Condition=$s; } //******设置传递参数************ // key参数名 value参数值 // 如:setpagequery("id",$id);如有多个参数要传递,可多次调用本函数。 function SetPageQuery($key,$value){ $tmp[key]=$key; $tmp[value]=$value; $this->PageQuery[]=$tmp; } //********读取记录*************** // 主要工作函数,根据所给的条件从表中读取相应的记录 // 返回值是一个二维数组,Result[记录号][字段名] function ReadList() { $SQL="SELECT Count(*) AS total FROM ".$this->Table." ".$this->Condition; $result=odbc_do($this->LinkID,$SQL) or die("执行SQL错误"); odbc_fetch_row($result); $this->Total=odbc_result($result,'total'); if($this->Total>0) { //根据条件 Condition $SQL="SELECT * FROM ".$this->Table." ".$this->Condition. " WHERE ".$this->Id." BETWEEN ".$this->Offset." AND ".($this->Offset+$this->MaxLine); $result=odbc_exec($this->LinkID,$SQL) or die("执行SQL错误"); //$this->Number=odbc_num_rows($result); //因为odbc_num_rows()函数返回值总不正常,所以用另一方法 $num=odbc_num_fields($result); $k=0; while(odbc_fetch_row($result)) { for($i=1;$i<=$num;$i++) { $key=odbc_field_name($result,$i); $tmp[$key]=odbc_result($result,$i); } $this->Result[]=$tmp; $k++; } } $this->Number=$k; return $this->Result; } //**********显示页数************* //显示当前页及总页数 function ThePage() { $this->TPages=ceil($this->Total/$this->MaxLine); $this->CPages=$this->Offset/$this->MaxLine+1; echo "第".$this->CPages."页/共".$this->TPages."页"; } //**********显示翻页按钮************* //此函数要在ThePage()函数之后调用!!! //显示首页、下页、上页、未页,并加上要传递的参数 function Page() { $first=0; $next=$this->Offset+$this->MaxLine; $prev=$this->Offset-$this->MaxLine; $last=($this->TPages-1)*$this->MaxLine; $k=count($this->PageQuery); $strQuery=""; //生成一个要传递参数字串 for($i=0;$i<$k;$i++){ $strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value]; } if($this->Offset>=$this->MaxLine) echo "<A href=$PHP_SELF?offset=".$first.$strQuery.">首页</A>|"; if($prev>=0) echo "<A href=$PHP_SELF?offset=".$prev.$strQuery.">上一页</A>|"; if($next<$this->Total) echo "<A href=$PHP_SELF?offset=".$next.$strQuery.">下一页</A>|"; if($this->TPages!=0 && $this->CPages<$this->TPages) echo "<A href=$PHP_SELF?offset=".$last.$strQuery.">末页</A>"; } //******end class } ?> 【本文版权归作者sharetop与奥索网共同拥有,如需转载,请注明作者及出处】 (出处:) |