最近单位内网要写个网站,发现很多地方用到分页显示,就自己根据自己的需要写了个类,发出来请各位多多指教。本人新手代码质量可能一般,也难免会有bug,不过还是想请各位大侠多多指点,先谢了。 因为我是用的是css布局,这段代码没有采用table布局,各位要使
最近单位内网要写个网站,发现很多地方用到分页显示,就自己根据自己的需要写了个类,发出来请各位多多指教。本人新手代码质量可能一般,也难免会有bug,不过还是想请各位大侠多多指点,先谢了。
因为我是用的是css布局,这段代码没有采用table布局,各位要使用的话,需要自己修改了。 localhost, dbloginname => root, dbpwd => , dbname => dbname, characterset => utf8 ); /* 构造方法 * 保存数据库信息到数组 $mdataconf * 根据信息创建数据库连接 * $dbname 数据库的名称 * $dbhost 数据库的连接地址 * $dbloginname 数据库的登录用户名 * $dbpwd 数据库的登录密码 * */ function __construct($dbname,$dbhost=localhost,$dbloginname=root,$dbpwd=){ $this->mdataconf[dbhost] = $dbhost; $this->mdataconf[dbloginname] = $dbloginname; $this->mdataconf[dbpwd] = $dbpwd; $this->mdataconf[dbname] = $dbname; $this->mdatalink = mysql_connect($dbhost,$dbloginname,$dbpwd); if(!$this->mdatalink){die('could not connect: ' . mysql_error());} } /* 析构方法 * * */ function __destruct(){ mysql_close($this->mdatalink); } /* 手动设置默认分页显示每页显示的记录数 * function setnumperpage($numperpage){ $this->mnumperpage = $numperpage; }*/ /* 手动设置要执行的 sql 语句 * 如果这里手动设置了 select 语句 在调用 pagingdisplay 方法时可以不输入任何参数 * */ function setmysqlstr($mysqlstr){ $this->msqlstr = $mysqlstr; } /* function getnumperpage(){ return $this->mnumperpage; } */ /* 生成 sql select 语句 * $dbtable 要进行查询操作的数据表 必需 * $searchfield 要查询的字段 与 $searchkey 同时设置方能生效 * $searchkey 要查询的关键字 与 $searchfield 同时设置方能生效 * $sortingfield 排序依据的字段 与 $sortrules 同时设置方能生效 * $sortrules 排序规则 asc/desc 与 $sortingfield 同时设置方能生效 * $numpage 当前需要分页显示的页码 与 $numperpage 同时设置方能生效 * $numperpage 分页显示中每页要显示的记录数 与 $numpage 同时设置方能生效 * $tabledisplayfield 需要查询/显示的字段 为显示全部字段 * */ private function setsqlselectstr($dbtable=,$numperpage=,$numpage=,$sortingfield=,$sortrules=,$tabledisplayfield=,$searchfield=,$searchkey=){ //select * from $dbtable where $searchfield like %$searchkey% order by $sortingfield $sortrules limit ($numpage-1)*$numperpage,$numperpage $sql_str = select ; if($tabledisplayfield!=){ foreach($tabledisplayfield as $field){ $sql_str = $sql_str.$field.,; } $sql_str = substr_replace($sql_str, ,-1); $sql_str = $sql_str.from; } else{ $sql_str = select * from; } //select */$tabledisplayfield from if($dbtable==) {die(please check dbtable);} else {$sql_str = $sql_str. .$dbtable;} //select */$tabledisplayfield from $dbtable if($searchfield!= && $searchkey!=) {$sql_str = $sql_str. where .$searchfield. like %.$searchkey.%;} //select */$tabledisplayfield from $dbtable [where $searchfield like %$searchkey%] if($sortingfield!= && $sortrules!=) {$sql_str = $sql_str. order by .$sortingfield. . $sortrules;} //select */$tabledisplayfield from $dbtable where $searchfield like %$searchkey% [order by $sortingfield $sortrules] if($numperpage!= && $numpage!=) {$sql_str = $sql_str. limit .($numpage-1)*$numperpage.,.$numperpage;} ////select */$tabledisplayfield from $dbtable where $searchfield like %$searchkey% order by $sortingfield $sortrules [limit ($numpage-1)*$numperpage,$numperpage] $this->msqlstr = $sql_str; } /* 分页显示查询结果 * $dbtable 要进行查询操作的数据表 如果为空则需要事先手动设置 $msqlstr:要执行的 sql 语句 * $searchfield 要查询的字段 * $searchkey 要查询的关键字 * $sortingfield 排序依据的字段 * $sortrules 排序规则 asc/desc * $numpage 当前需要分页显示的页码 * $numperpage 分页显示中每页要显示的记录数 * $tabledisplayfield 需要查询/显示的字段 为一维数组类型 为显示全部字段 * 分页显示的样式使用 css 控制 css 使用 class 选择器 奇数行的 css 样式为:$moddcss 偶数行的css样式为:$mevencss 每个字段的 css 样式为字段名 * 表头各个字段的 css 样式为 字段名 + header * 表头整行 div 的 css 样式为 tableheader * */ function pagingdisplay($dbtable=,$numpage=,$numperpage=,$sortingfield=,$sortrules=,$tabledisplayfield=,$searchfield=,$searchkey=){ if($dbtable!=){ $this->mtablename = $dbtable; if($numperpage==){$numperpage = $this->mnumperpage;} else{$this->mnumperpage = $numperpage;} if($numpage==){$numpage = $this->mnumpage;} else{$this->mnumpage = $numpage;} $this->setsqlselectstr($dbtable,$numperpage,$numpage,$sortingfield,$sortrules,$tabledisplayfield,$searchfield,$searchkey); } if($numperpage!= && $numpage!=){ $this->mnumperpage = $numperpage; $this->mnumpage = $numpage; } if($this->msqlstr==){die(please check msqlstr);} mysql_select_db($this->mdataconf[dbname],$this->mdatalink); mysql_query((set names '.$this->mdataconf[characterset].'),$this->mdatalink); echo $this->msqlstr; $results = mysql_query($this->msqlstr); $i = 1; while($row=mysql_fetch_assoc($results)){ if($i==1 && $this->mheaderdisplay){ echo mheadercss.'>; foreach($row as $field=>$value){ echo .$field.
; } echo
; //mysql_data_seek($results,0); } if($i++%2==1){ echo moddcss.'>; } else{ echo mevencss.'>; } foreach($row as $field=>$value){ echo .$value.
; } echo
; } } /* 显示翻页控制 共xxx条记录 首页 上一页 下一页 末页 第x/x页 go * $actionpage 处理链接的页面 * $numpage 分页现实的当前页码 * $searchfield 如果是对搜索结果分页显示 这里填写搜索的字段 * $searchkey 如果是对搜索结果分页显示 这里填写搜索的关键字 **/ function pageingcontrol($actionpage,$numpage=,$searchfield=,$searchkey=){ mysql_select_db($this->mdataconf[dbname],$this->mdatalink); mysql_query((set names '.$this->mdataconf[characterset].'),$this->mdatalink); $temp_result = mysql_query(select * from .$this->mtablename,$this->mdatalink); $num_record = mysql_num_rows($temp_result); $num_page_total = ceil($num_record/$this->mnumperpage); if($num_page_totalmnumpage;} if($numpage$num_page_total){$numpage = 1;} if($searchfield== || $searchkey==){ echo 共.$num_record.条记录 ; echo 首页 ; if($numpage>1) {echo 上一页 ;} if($numpage1) {echo 上一页 ;} if($numpagemsqlstr; if($this->mdatalink==){echo no;} $results = mysql_query($this->msqlstr,$this->mdatalink); }*/}//?>
pagingdisplay(ws_video,1,10);$ot->pageingcontrol(this.php);?>