1. 程式人生 > >jQuery分頁類。。。

jQuery分頁類。。。

        $pageScript = <<<SCR
        <script type='text/javascript'>
            function (){}
            $.ajax()
        </script>
SCR;
這種寫法,在PHP中定義一段script函式,<<<SCR     SCR;是定界符。SCR是隨便起的名字,但是定界符的後半截必須頂格寫


$first_html = sprintf("<a href='javascript:goPage(%s)'>%s</a>",$first,'首頁');
sprintf函式,函式把格式化的字串寫寫入一個變數中。也就是說最少要有一個站位字元和替換的變數。第一個引數為字串,第二個引數就是第一個站位字元的值。。。。%s是指字串,具體請看w3cschool的手冊,直接搜尋就有



<{config_load file="site.conf"}>
<script type="text/javascript" src="<{#js_path#}>jquery-1.4.2.min.js"></script>
在TPL中載入配置檔案。。。讀取配置檔案中的函式   <{#js_path#}>

public function pageAction(){
    //命令模型層處理資料
    $page = isset($_REQUEST['page'])?$_REQUEST['page']:1;    //.....若有page的值,則$page=$_REQUEST['page'],沒有則$page=1
    $pagesize = 2;                        //定義一頁幾條記錄
    $offset = ($page-1)*$pagesize;                //計算出偏移量,偏移量是查詢資料庫是跳過的記錄數
    $pageModel = new pageModel("localhost","root","","page");
    $array = $pageModel ->getPageList($offset,$pagesize);    //呼叫模型層,模型層返回了所有記錄和總記錄數
    $content = $array['list'];        
    $total = $array['total'];                      //將模型層返回的賦值給。。。。
    //命令檢視層顯示資料
    $this->smarty->assign('list',$content);            //賦值。。不解釋
    $pageHelper = new pageHelper();                
    $page_html = $pageHelper ->show($total,$pagesize,$page);//呼叫pageHelper。這個下面細說。。。
    $this->smarty->assign('page_html',$page_html);       //將pageHelper()返回的東西,賦值給page_html。。。不解釋
    $this->smarty->display('page.tpl');
}

細細的說下pageHelper.class.php

public function show($total,$pagesize,$page){
        $pages = ceil($total/$pagesize);
        $info = "總共".$total."條記錄 分為".$pages."頁 當前第".$page."頁";
        
        $first = 1;
        $prev = $page-1;
        $next = $page+1;
        $last = $pages;

        $first_html = sprintf("<a href='javascript:goPage(%s)'>%s</a>",$first,'首頁');
        $prev_html= '';
        if($page>1){
            $prev_html =  sprintf("<a href='javascript:goPage(%s)'>%s</a>",$prev,'上一頁');
        }
        if($page<$pages){
            $prev_html =  sprintf("<a href='javascript:goPage(%s)'>%s</a>",$prev,'下一頁');
        }
        //下拉列表項
        $select_html = "<select onchange='goPage(this.value)'>";
        for($i=1;$i<=$pages;$i++){
            if($i==$page){
                $select_html .= sprintf("<option value='%s' selected>%s</option>",$i,$i);
            }else{
                $select_html .= sprintf("<option value='%s'>%s</option>",$i,$i);
            }
        }
        $select_html .="</select>";
        $last_html = sprintf("<a href='javascript:goPage(%s)'>%s</a>",$last,'尾頁');
        $pageScript = <<<SCR
SCR;
        return $info.'&nbsp;'.$first_html.'&nbsp;'.$prev_html.'&nbsp;'.$next_html.'&nbsp;'.$last_html.'&nbsp;'.$pageScript.'&nbsp;'.$select_page.'&nbsp;'.$select_html;
    }

一點一點看。開始的幾個值是從呼叫函式的時候從函式引數傳過來的,$info沒啥說的,
下面定義的四個變數是用來區別顯示首頁,尾頁下一頁上一頁的。。。這個沒啥技術含量。想得到就很簡單。
那四個變數只是四個頁碼。要讓他可以點還要把它變成連線,所以。。。就有後面這幾部了。sprintf()函式,上面說了。至於if括號裡的,是保證在第一頁的時候不顯示首頁,。。。之類的。。。。手懶,見諒。哦對了。。。還有<a href='javascript:goPage(%s)'>%s</a>這種寫法。。。記住就行了。。。貌似沒啥為什麼

下拉列表部分:+=的部分知道吧。在PHP中連線符不是+是.所以+=在php中是.=。。。迴圈通過總頁數來輸出<option></option>的個數。程式碼看著抽象,其實最後輸出的就是一個下拉選單。之所以這麼麻煩是因為選單裡的值都不是寫死的。還有在<select>標籤中綁定了一個goPage函式,下面定義的

$pageScript是定義了一個script函式。。。
最後給呼叫它的控制器,返回一個長長的字串。。。。。把前面所有的都返回了。至於那個script函式,返回之後再tpl檔案中一輸出直接就變成函數了