ホームページ >バックエンド開発 >PHPチュートリアル >このページング クラスを呼び出す方法を理解できる人はいますか? 私が話していることはクエリ ステートメントにあります。

このページング クラスを呼び出す方法を理解できる人はいますか? 私が話していることはクエリ ステートメントにあります。

WBOY
WBOYオリジナル
2016-06-13 12:13:05932ブラウズ

誰かがこのページング クラスの呼び出し方法を見つけるのを手伝ってくれませんか? 私はインターネット上でクエリ ステートメント
の下で見栄えの良いページング クラスを見つけることについて話していますが、作成者はそれを呼び出す方法を説明していますが、まだわかりません。主に SQL ステートメントで呼び出す方法、以下はページング クラスのコードです:

<br /><?php<br />/**<br /> * 可以灵活定制的分页类<br /> * <br /> * 可以定制的选项包括,分页链接显示效果,当前页码链接按钮的样式,URL中获取分页值的名字,可以随意带自己的参数<br /> * <br /> * 使用方法:<br /> * 1、初始化类的时候需要传入参数,类型为数组。<br /> * array(<br /> *  (必填)'totalRows'=>'100', 需要显示的数据的总条数;<br /> *  (必填)'pageSize'=>'2', 每页需要显示的代码数量;<br /> *  (必填)'currentPage'=>$_GET['p'], 当前页码,默认可以通过$_GET['p']获取,其中名字p可以定制<br /> *  (必填)'baseUrl'=>'/welcome?id=3',你当前页面的链接地址,比如为http://www.xxx.com/test.php(或者/test.php),如果后面带有参数则可以为http://www.xxx.com/test?id=8<br /> *  (选填,默认为3)'offset'=>'3', 当前页码的左右偏移量,比如当前页码为5,则在5的左右各显示几个数字链接,默认为3个,则效果为2,3,4,5,6,7,8<br /> *  (选填,默认为p)'pageString'=>'p',通过$_GET['p']获取当前页码时候的名字,默认为p<br /> *  (选填,默认为here)'className'=>'here',当前页码链接按钮的样式,默认样式名为here,所以你可以这样写css样式.here{background:#FF4500;} )<br /> * <br /> * 2、可以使用的方法。<br /> *  A、初始化类后,需要调用pagination([$style = '1'][,$output=TRUE])方法产生分页链接<br /> *  关于参数的说明:<br /> *  @param $style (默认为 1,可不填写) :获取链接全部组件,即 首页+上一页+数字链接+下一页+尾页<br /> *  @param $style == 2 :仅获取数字链接<br /> *  @param $style == 3 :仅获取上一页+下一页<br /> *  @param $style == 4 :仅获取上一页+数字链接+下一页,(不包含首尾页)<br /> *  <br /> *  @param $output (默认为TRUE),返回分页链接<br /> *  @param $output 为FALSE时,直接输出分页链接<br /> *  <br /> *  B、getCurrentPage()获取当前页码,经过真伪判断后的,防止用户自行输入错误,比如http://www.xxx.com/test?p=-100;此时通过此方法获取当前页码为1<br /> *  <br /> *  C、pageAmount()获取总的页码数量<br /> *  <br /> * @author 星空幻颖<br /> * @link http://blog.sina.com.cn/yanyinghq<br /> *<br /> */<br />class Page<br />{<br />    private $pageSize; //您的网站每一页显示的列表条数<br />    private $totalRows; //通过数据库查询返回的总的记录条数<br />    private $url; //基准URL<br />    private $pageAmount; //页码的总数<br />    private $currentPage; //当前的页码<br />    private $offset = 4; //页码偏移量<br />    private $pageString = 'p'; //页码在URL中的名字<br />    private $classHere = 'class="here"'; //当前页链接的class样式类名,默认为here<br />     <br />    //初始化当前页码,记录总条数,每页多少条记录<br />    public function __construct($param)<br />    {<br />        $this->pageSize = $param['pageSize'];<br />        $this->totalRows = $param['totalRows'];<br />        $this->url = $param['baseUrl'];<br />        $this->offset = !empty($param['offset'])?$param['offset']:$this->offset;<br />        $this->pageString =  !empty($param['pageString'])?$param['pageString']:$this->pageString;<br />        $this->classHere = !empty($param['className'])?$param['className']:$this->classHere;<br />        $this->currentPage = (int)$param['currentPage'];<br />    }<br />     <br />    /**<br />     * 创建分页链接<br />     * <br />     * @param $style 默认为 1 :获取链接全部组件<br />     * @param $style == 2 :仅获取数字链接<br />     * @param $style == 3 :仅获取上一页,下一页<br />     * @param $style == 4 :仅获取上一页、下一页、数字链接,不包含首尾页<br />     * <br />     * @param $output 为TRUE时,返回分页链接<br />     * @param $output 为FALSE时,直接输出分页链接<br />     * <br />     */<br />    public function pagination($style = '1',$output=TRUE)<br />    {<br />        $this->baseUrl();<br />        $this->pageAmount();<br />        $this->currentPage();<br />             <br />        //获取全部组件<br />        if($style == '1')<br />        {<br />            $page = $this->indexPage().$this->prevPage().$this->pageNumber().$this->nextPage().$this->endPage();<br />        }<br />        else if($style == '2')<br />        {<br />            //获取纯数字链接<br />            $page = $this->pageNumber();<br />        }<br />        else if($style == '3')<br />        {<br />            //只获取上一页下一页<br />            $page = $this->prevPage().$this->nextPage();<br />        }<br />        else if($style =='4')<br />        {<br />            //上一页、下一页、数字链接<br />            $page = $this->prevPage().$this->pageNumber().$this->nextPage();<br />        }<br />         <br />        if($output)<br />        {<br />            return $page;<br />        }<br />        else<br />        {<br />            echo $page;<br />        }<br />    }<br />     <br />    /**<br />     * 获取当前页码<br />     * <br />     * @return 当前页码,经过真伪判断的<br />     */<br />    public function getCurrentPage()<br />    {<br />        $this->pageAmount();<br />        $this->currentPage();<br />        return $this->currentPage;<br />    }<br />     <br />    /**<br />     * 计算出所有的页数<br />     * <br />     * 可以类外面直接调用此方法返回页码总数<br />     * <br />     * @return 页码的总数<br />     */<br />    public function pageAmount()<br />    {<br />        $this->pageAmount = ceil( $this->totalRows / $this->pageSize);<br />        if($this->pageAmount <= 0)<br />        {<br />            $this->pageAmount = '1';<br />        }<br />        return $this->pageAmount;<br />    }<br />     <br />    /**<br />     * 判断基准链接是否携带参数<br />     * <br />     * 基准链接为用户提交当前页码链接<br />     * <br />     * 如果携带参数,则在链接之后加&p=<br />     * <br />     * 如果不携带参数,则直接加?p=<br />     */<br />    private function baseUrl()<br />    {<br />        if(preg_match('/\?/', $this->url))<br />        {<br />            $this->url = $this->url.'&'.$this->pageString.'=';<br />        }<br />        else<br />        {<br />            $this->url = $this->url.'?'.$this->pageString.'=';<br />        }<br />    }<br />     <br />    /**<br />     * 验证当前页码的真伪性<br />     * <br />     * 如果当前页码小于1或者没有,则默认当前页码为1<br />     * <br />     * 如果当前页码大于页码总数,则默认当前页码为页码总数<br />     * <br />     */<br />    private function currentPage()<br />    {<br />        if($this->currentPage < 1 || !$this->currentPage)<br />        {<br />            $this->currentPage = 1;<br />        }<br />        else if(($this->currentPage > $this->pageAmount))<br />        {<br />            $this->currentPage = $this->pageAmount;<br />        }<br />    }<br />     <br />    /**<br />     * 首页链接<br />     */<br />    private function indexPage()<br />    {<br />        if($this->currentPage == 1) return;<br />        return '<a href="'.$this->url.'1">首页</a>';<br />    }<br />     <br />    /**<br />     * 尾页链接<br />     */<br />    private function endPage()<br />    {<br />        if($this->currentPage == $this->pageAmount) return;<br />        return '<a href="'.$this->url.$this->pageAmount.'">尾页</a>';<br />    }<br />     <br />    /**<br />     * 上一页<br />     */<br />    private function prevPage()<br />    {<br />        if($this->currentPage == 1) return;<br />        return '<a href="'.$this->url.( $this->currentPage - 1 ).'">上一页</a>';<br />    }<br />     <br />    /**<br />     * 下一页<br />     */<br />    private function nextPage()<br />    {<br />        if($this->currentPage == $this->pageAmount) return;<br />        return '<a href="'.$this->url.( $this->currentPage + 1 ).'">下一页</a>';<br />    }<br />     <br />    /**<br />     * 中间页码的链接<br />     * <br />     */<br />    private function pageNumber()<br />    {<br />        $left ="";<br />        $right = "";<br />         <br />        //如果总记录的条数“大于”所有链接的数量时候<br />        if($this->pageAmount > ($this->offset * 2 + 1))<br />        {<br />            //当前页码距离首页的距离<br />            $leftNum = $this->currentPage - 1;<br />             <br />            //当前页码距离尾页的距离<br />            $rightNum = $this->pageAmount - $this->currentPage;<br />             <br />            //当当前页码距离首页距离不足偏移量offset时候,在右边补齐缺少的小方块<br />            if( $leftNum < $this->offset)<br />            {<br />                //左边的链接<br />                for($i = $leftNum; $i >= 1 ; $i--)<br />                {<br />                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';<br />                }<br />                 <br />                //右边的链接<br />                for($j = 1; $j <= ($this->offset * 2 - $leftNum); $j++)<br />                {<br />                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br />                }<br />            }<br />            else if($rightNum < $this->offset)<br />            {<br />                //左边的链接<br />                for($i = ($this->offset * 2 - $rightNum); $i >= 1 ; $i--)<br />                {<br />                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';<br />                }<br />                 <br />                //右边的链接<br />                for($j = 1; $j <= $rightNum; $j++)<br />                {<br />                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br />                }<br />            }<br />            else<br />            {<br />                //当前链接左边的链接<br />                for($i = $this->offset; $i >= 1 ; $i--)<br />                {<br />                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>'; <br />                }<br />                 <br />                //当前链接右边的链接<br />                for($j = 1; $j <= $this->offset; $j++)<br />                {<br />                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br />                }<br />            }<br /> <br />            return $left.'<a href="'.$this->url.$this->currentPage.'" class="here">'.$this->currentPage.'</a>'.$right;<br />        }<br />        else<br />        {<br />            $allLink='';<br />            //当页码总数小于需要显示的链接数量时候,则全部显示出来<br />            for($j = 1; $j <= $this->pageAmount; $j++)<br />            {<br />                 $allLink.='<a href="'.$this->url.$j.'" '.($j == $this->currentPage?$this->classHere:'').'>'.$j.'</a>';<br />            }<br />            return $allLink;<br />        }<br />    }<br /> <br />}<br />

-----解決策のアイデア-------- ------- ------
このクラスはページング バーの生成のみを担当します
データベース クエリに関連する唯一のものは、パラメーター配列 $param[ 'totalRows'] item
ページングされる合計行数のため、クエリによって取得されるため、このクエリは $param が割り当てられる前に完了する必要があります

------解決策のアイデア------------------ ----
ポスターは十分に怠惰です。ここに 1 枚あります。スタイルはすべて書かれています
<br /><?php<br />class Page { <br />private $total; //数据表中总记录数<br />private $listRows; //每页显示行数<br />private $limit;<br />private $uri; <br />private $pageNum; //页数<br />private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页"); <br />private $listNum=8;<br />/*  $total  11. * $listRows 12. */ <br />public function __construct($total, $listRows=10, $pa=""){ <br />    $this->total=$total; <br />		$this->listRows=$listRows; <br />		$this->uri=$this->getUri($pa); <br />		$this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; <br />	  $this->pageNum=ceil($this->total/$this->listRows); <br />		$this->limit=$this->setLimit(); <br />		} <br />private function setLimit(){ <br />		 return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; <br />		 } <br />private function getUri($pa){ <br />   $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;  <br />	 $parse=parse_url($url); <br />	 if(isset($parse["query"])){ <br />	 parse_str($parse['query'],$params); <br />	  unset($params["page"]); <br />		$url=$parse['path'].'?'.http_build_query($params);    <br />		} <br />	 return $url; <br />	 }  <br />public function __get($args){ <br />      if($args=="limit") <br />			  return $this->limit; <br />				 else <br />				   return null; <br />					 } <br />private function start(){ <br /> if($this->total==0) <br /> return 0; <br />  else <br /> return ($this->page-1)*$this->listRows+1; <br /> } <br />private function end(){ <br /> return min($this->page*$this->listRows,$this->total);<br /> } <br />private function first(){ <br /> if($this->page==1) <br />   $html.=''; <br />	 else <br />	 $html.="<li><a href='{$this->uri}&page=1'>{$this->config["first"]}</a></li>"; <br />	  return $html; <br />	} <br />private function prev(){<br /> if($this->page==1)<br />   $html.='';<br /> else <br /> $html.="<li><a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a></li>"; <br /> return $html;<br /> } <br />private function pageList(){<br /> $linkPage=""; <br /> $inum=floor($this->listNum/2); <br /> for($i=$inum; $i>=1; $i--){ <br /> $page=$this->page-$i;<br />  if($page<1)<br />	 continue; <br /> $linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>";<br /> } <br /> $linkPage.="<li><a href='#' class='here'>{$this->page}</a></li>";<br />for($i=1; $i<=$inum; $i++){ <br />$page=$this->page+$i; <br />if($page<=$this->pageNum) <br />$linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>";<br />else <br />break; <br />}<br />return $linkPage;<br />}<br />private function next(){ <br />if($this->page==$this->pageNum)<br />$html.=''; <br />else <br />$html.="<li><a href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a></li>"; <br />return $html;<br />}<br />private function last(){ <br />if($this->page==$this->pageNum)<br />$html.='';<br />else<br />$html.="<li><a href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a></li>";<br />return $html;<br />}<br />/*private function goPage(){<br />return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"> <input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';<br />}*/<br />private function goPage(){<br />return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';<br />}<br />function fpage($display=array(0,1,2,3,4,5,6,7,8)){<br />$html[0]="共有<b>{$this->total}</b>{$this->config["header"]} ";<br />$html[1]=" 每页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 "; <br />$html[2]=" <b>{$this->page}/{$this->pageNum}</b>页 ";<br />$html[3]=$this->first();<br />$html[4]=$this->prev();<br />$html[5]=$this->pageList();<br />$html[6]=$this->next();<br />$html[7]=$this->last();<br />$html[8]=$this->goPage();<br />$fpage='';<br />foreach($display as $index){ <br />$fpage.=$html[$index];<br />} <br />return $fpage;<br />} <br />}<br />?><br />

特定の呼び出しメソッド:
$num=15; //ページごとに表示される番号
$page=new page($total,$num);
$result=$db ->query("select * from ".$db->table('article ').$where." order by addtime desc {$page->limit}");
ループ
< ;?php echo $page->fpage(array(3,4,5,6 ,7,0,1,2,8));?> //php ページング クラス呼び出し、これらの数値はクラス ファイル
dbdc84b5d574636c651707314f438999561f54dc0fe2a6176d524def7a11e77bf64c32d11d7ca066dcf7af109e082c90fpage(array(3,4,5,6,7,8 ));?>929d1f5ca49e04fdcb27f9465b94468954bdf357c58b8a65c66d7c19c8e4d114これは、
CSS スタイル ファイル
と呼ばれるものです。fenye li{float:left; font-family:Arial, Helvetica, sans-serif; margin-left:6px; 表示:行の高さ:30px; }
ボーダー:1px ソリッド #d6d6d6; float:left; margin-left:3px; line-height:30px;text-decoration:none;color:#666;}
.fenye a:hover{background :#FF4500;border-color:#FF4500; color:#FFF;}
.fenye a.here{background:#FF4500;border-color:#FF4500; color:#FFF;}
. sel{background:#E5EDF2; color:#333; font-weight:bold; border:1px #C2D5E3 Solid; border-radius:4px}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。