php中分頁及SqlHelper類用法執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了php中分頁及SqlHelper類用法,結合執行個體形式分析了php資料庫查詢類與分頁類的定義與具體提示,需要的朋友可以參考下

具體如下:

文檔目錄結構如下:

SqlHelper.php代碼如下:

<?php/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-26 * Time: 下午8:30 * To change this template use File | Settings | File Templates. */class SqlHelper{  private $mysqli;  private static $host="localhost";  private static $user="root";  private static $pwd="";  private static $db="world";  private $sql=false;  private $result=false;  function __construct(){    $this->mysqli=new MySQLi(self::$host,self::$user,self::$pwd,self::$db);    if($this->mysqli->connect_error){      die("串連資料庫失敗! ".$this->mysql->connect_error);    }    $this->mysqli->query("set names utf8");  }  function execute_dql_all($sql){    //執行查詢語句    $arr=array();    $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);    //將資料轉存到$arr數組中    while($row=mysqli_fetch_array($this->result,MYSQL_BOTH)){      $arr[]=$row;    }    $this->result->free();    return $arr;  }  function execute_dql_num($sql){    //執行查詢語句    $arr=array();    $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);    //將資料轉存到$arr數組中    while($row=mysqli_fetch_array($this->result,MYSQLI_NUM)){      $arr[]=$row;    }    $this->result->free();    return $arr;  }  function execute_dql_assoc($sql){    //執行查詢語句    $arr=array();    $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);    //將資料轉存到$arr數組中    while($row=mysqli_fetch_array($this->result,MYSQLI_ASSOC)){      $arr[]=$row;    }    $this->result->free();    return $arr;  }  //查詢某表中的記錄數  function execute_dql_counts($table,$id="*"){    $this->sql="select count($id) from $table";    $this->result=$this->mysqli->query($this->sql);    $row=mysqli_fetch_all($this->result);    $this->result->free();    return $row[0][0];  }  function execute_dml($sql){    //執行正刪改    $this->result=$this->mysqli->query($sql);    if(!$this->result){      return -1;//執行正刪改失敗    }else{      if($this->mysqli->affected_rows>0){        return 1;//執行正刪改成功,影響行數      }else{        return 0;//執行正刪改成功,但沒有影響行數      }    }  }}

Paging.php代碼如下:

<?php/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-27 * Time: 下午2:48 * To change this template use File | Settings | File Templates. */header("Content-type:text/html;charset=utf-8;");require_once("SqlHelper.php");class Paging {  private $sqlHelper=false;  private $pageCount=false;//頁數  private $counts=false;//總記錄數  private $returnArr=false;//分頁超連結的分頁  function __construct(){    $this->sqlHelper=new SqlHelper();    $this->returnArr=array();  }  /*   * 參數說明   *   * $table 分頁時對那個表的資料分頁   * $id 輔助查詢當前分頁的資料表的總記錄數   * $pageSize 每頁顯示多少條資訊記錄數   * $pagingSize 分頁欄每次迴圈顯示出來的個數   * $nowPage 當前是第幾頁,預設第一頁   * $href 分頁欄的超連結將要往哪裡串連   */  function paging_prev_next($table,$id="*",$pageSize,$pagingSize,$nowPage=1,$href){    $this->counts=$this->sqlHelper->execute_dql_counts($table,$id);    $this->pageCount=ceil($this->counts/$pageSize);    $this->returnArr["count"]=$this->counts;    $this->returnArr["start"]=($nowPage-1)*$pageSize;    $this->returnArr["limit"]=$pageSize;    if($nowPage>$this->pageCount || $nowPage<=0){      return false;    }    $t=(ceil($nowPage/$pagingSize)-1)*$pagingSize+1;    $pre=$nowPage-$pagingSize;    $nex=$nowPage+$pagingSize;    echo "      <span class='paging-list-a paging-list-a-withBg'>{$nowPage}/{$this->pageCount}</span>      <a href='{$href}?nowPage={$pre}' class='paging-list-a'><</a>";    for($i=$t;$i<$t+$pagingSize;$i++){      if($i*$pageSize>$this->pageCount*$pageSize){        break;      }else{        if($nowPage==$i){          echo "          <a href='{$href}?nowPage={$i}' class='paging-list-a paging-list-a-withBg'>{$i}</a>";        }else{          echo "          <a href='{$href}?nowPage={$i}' class='paging-list-a'>{$i}</a>";        }      }    }    echo "      <a href='{$href}?nowPage={$nex}' class='paging-list-a'>></a>";    return $this->returnArr;  }}

paging-list-link.css代碼如下:

/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-27 * Time: 下午5:56 * To change this template use File | Settings | File Templates. */.paging-list-a{  border:1px solid #b5b5af;  background-color:#efebed;  font-family: 'Meiryo UI';  font-size: 16px;  font-weight: 600;  padding: 0px 8px 0px 8px;  /*cursor: pointer;*/  text-decoration: none;  color: #292927;}.paging-list-a-withBg{  background-color: #1D92E2;  color: white;}

usePaging.php代碼如下:

<!DOCTYPE html><html><head>  <title></title>  <link rel="stylesheet" type="text/css" href="paging-list-link.css"></head><body><?phpheader("Content-type:text/html;charset=utf-8;");require_once 'Paging.php';$paging=new Paging();//參數說明/* * $table 分頁時對那個表的資料分頁 * $id 輔助查詢當前分頁的資料表的總記錄數 * $pageSize 每頁顯示多少條資訊記錄數 * $pagingSize 分頁欄每次迴圈顯示出來的個數 * $nowPage 當前是第幾頁,預設第一頁 * $href 分頁欄的超連結將要往哪裡串連,當前頁連結地址 *///控制起始頁為$nowPage=1;if(isset($_GET["nowPage"])){  $nowPage=$_GET["nowPage"];}//定義分頁所需參數$meiyexiansi=10;$meiyelianjieshu=10;$receiveArr=array();$receiveArr=$paging->paging_prev_next("city","ID",$meiyexiansi,$meiyelianjieshu,$nowPage,"usePaging.php");//容錯判斷if(!$receiveArr){  return;}//查詢每頁需要顯示的資料,大小限制存在 $receiveArr 數組中$sqlHelper=new SqlHelper();$result=$sqlHelper->execute_dql_num("select * from city limit ".$receiveArr['start'].",".$receiveArr['limit']."");echo "<pre>";print_r($result);echo "</pre>";?></body></html>

所使用的資料庫為 MySQL5.6 所內建的 world 資料庫

下面是啟動並執行效果:

不過代碼還有個 Bug 。就是翻頁到最後的時候會出現顯示不了,原因在於 Paging.php 檔案的 41~43 行左右判斷有問題。

錯誤碼如下:

if($nowPage>$this->pageCount || $nowPage<=0){  return false;}

以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.