电脑安全

您当前的位置:主页 > 电脑安全 >

php分页函数 [经典]-网络编程

来源:[db:来源]标题:   下一页    编辑:电脑技术全能网 时间:2019-09-23 12:32

原标题:php分页函数 [经典]-网络编程
   <?php /*分页类design by xqbar qq:174171262email:wxddong@163.comblog:http://www.xqbar.com斟酌输出参数size(每页记载数量)url(衔接地点)style(分页款式)sql(运转语句)*/class page{ public$sql='';//分页sql语句 public$url='';//分页通报过去的下页地点,能够别的加参数用来搜寻应用 public$size=10;//默许每页表现数据10条 public$style=1;//默许分页表现作风 private $totalsize=0;//数据总数 private $totalpage=0;//总页数 private $page=1;//以后页 private $link;//数据库衔接点 private $flag=false;//初始化标记点 private $offset=0;//分页偏移值 limit $offset,$size; //结构函数 通报数据库衔接点 function __construct($link){ $this->page=(isset($_GET['page'])&&!empty($_GET['page'])&&(int)($_GET['page']))?(int)$_GET['page']:1;//猎取以后page参数值,断定以后是第几分页 $this->link=$link; } //析构函数 function __destruct(){@mysql_close($this->link);$this->link=NULL; }//结构函数统筹<php5 function page($link){ $this->__construct($link); } //初始化 function init(){ if(empty($this->sql)){$this->halt("过错忠告:<font color='red'>sql语句不能为空!</font>");exit();}//推断sql能否存在$this->sql=str_replace(sql);//">'@_',DB_PREFIX,$this->sql);//调换sql中的表前缀 $this->size=($this->size<=0)?10:$this->size;//初始每页表现数据条数$this->page=($this->page<1)?1:$this->page;//以后页码值 #大于第一页后优化查问总记载数//这里我应用了第一次扫瞄分页时查问数据库得出数据库总数,点下页时通报并不再查问数据库,数据量多时能够会节约些(本人想的)if($this->page==1&&!isset($_GET['tsize'])){ sql">$result=@mysql_query($this->sql); $this->totalsize=@mysql_num_rows($result); @mysql_free_result($result);}else{ //下面的成绩独一毛病就是用户手动在地点栏变动了tsize值后分页将不再准确 $this->totalsize=(int)$_GET['tsize']; } $this->url=(empty($this->url))?$_SERVER['PHP_SELF'].'?tsize='.$this->totalsize:$this->url.'&tsize='.$this->totalsize;//通报totalsize给下一页$this->totalpage=ceil($this->totalsize/$this->size);//猎取总页数$this->page=($this->page>$this->totalpage)?$this->totalpage:$this->page;$this->offset=($this->page-1)*$this->size;//猎取偏移值 }//查问数据库前往成果给二维数组 function fetch_array($result_type=MYSQL_BOTH){ if(!$this->flag){$this->init();$this->flag=true;} if($this->totalsize<=0){return NULL;}$this->sql.=" limit $this->offset,$this->size";sql,$this->link">$result=@mysql_query($this->sql,$this->link);while($row=mysql_fetch_array($result,$result_type)){$rows[]=$row;}@mysql_free_result($result);return $rows; }//猎取总数据数 function getsize(){ if(!$this->flag){$this-init();$this->flag=true;}//推断能否曾经在此之前初始化过,是则间接前往 (下同) return $this->totalsize; }//猎取总页数 function getpage(){ if(!$this->flag){$this-init();$this->flag=true;} return $this->totalpage; }//依据传入参数输入分页链接 function outpage(){ if(!$this->flag){$this-init();$this->flag=true;}switch($this->style){ #1 第x页 共x页 首页 上一页 下一页 尾页 x条/页 共x页 case 1: $pagehtml="<span class='page'>第<i>{$this->page}</i>页 共<i>{$this->totalpage}</i>页"; $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>"; $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":" <a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>"; $pagehtml.=" 共<i>{$this->totalsize}</i>条</span>"; break; #1 首页 上一页 下一页 尾页 x条/页 共x页 case 2: $pagehtml="<span class='page'>"; $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>"; $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":" <a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>"; $pagehtml.=" 共<i>{$this->totalsize}</i>条</span>"; break; #2 1 2 3 4 5 case 3: $offset=(ceil($this->page/10)-1)*10; $pagehtml="<span class='page'>"; if($offset!=0){$pagehtml.="<a href='{$this->url}&page=1'>|<<</a> <a href='{$this->url}&page=".($this->page-1)."'><<</a>";} for($i=1;$i<=10;$i++){ $n=$i+$offset; if($n>$this->totalpage){break;} if($n==$this->page){$pagehtml.=" <a href='{$this->url}&page=$n'><i>$n</i></a> ";} else{$pagehtml.=" <a href='{$this->url}&page=$n'><b>$n</b></a> ";} } if($n<$this->totalpage){$pagehtml.=" <a href='{$this->url}&page=".($this->page+1)."'>>></a> <a href='{$this->url}&page=$this->totalsize'>>>|</a>";} unset($offset,$i,$n); break; #1 default: $pagehtml="第{$this->page}页 共{$this->totalpage}页"; $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>"; $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":"<a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>"; break; } return $pagehtml; }//过错输入 function halt($msg){echo "<html>";echo "<head>";echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>/r/n";echo "<title>Error</title>";echo "</head>";echo "<body><p style='line-helght:150%;font-size:10pt'>";echo $msg;echo "</p></body>";echo "</html>";}}?><?php require_once('mysql.class.php');require_once('page.class.php');$db=new mysql();$link=$db->open();#界说sql和url$sql='select * from @_info';(@_是我的表界说前缀在传入类后被调换掉)$url='';$mypage=new page($link);$mypage->size=10;$mypage->style=3;$mypage->url=$url;$mypage->sql=$sql." order by id desc";$ls=$mypage->fetch_array(MYSQL_ASSOC);//失掉前往的成果if(count($ls)==0){ echo '无成果';}else{foreach($ls as $value){ echo $value['title'];}//分页码echo $mypage->outpage(); }?>