php中分頁及SqlHelper類用法實(shí)例
本文實(shí)例講述了php中分頁及SqlHelper類用法。分享給大家供大家參考,具體如下:
文檔目錄結(jié)構(gòu)如下:
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("連接數(shù)據(jù)庫失?。?".$this->mysql->connect_error); } $this->mysqli->query("set names utf8"); } function execute_dql_all($sql){ //執(zhí)行查詢語句 $arr=array(); $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error); //將數(shù)據(jù)轉(zhuǎn)存到$arr數(shù)組中 while($row=mysqli_fetch_array($this->result,MYSQL_BOTH)){ $arr[]=$row; } $this->result->free(); return $arr; } function execute_dql_num($sql){ //執(zhí)行查詢語句 $arr=array(); $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error); //將數(shù)據(jù)轉(zhuǎn)存到$arr數(shù)組中 while($row=mysqli_fetch_array($this->result,MYSQLI_NUM)){ $arr[]=$row; } $this->result->free(); return $arr; } function execute_dql_assoc($sql){ //執(zhí)行查詢語句 $arr=array(); $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error); //將數(shù)據(jù)轉(zhuǎn)存到$arr數(shù)組中 while($row=mysqli_fetch_array($this->result,MYSQLI_ASSOC)){ $arr[]=$row; } $this->result->free(); return $arr; } //查詢某表中的記錄數(shù) 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){ //執(zhí)行正刪改 $this->result=$this->mysqli->query($sql); if(!$this->result){ return -1;//執(zhí)行正刪改失敗 }else{ if($this->mysqli->affected_rows>0){ return 1;//執(zhí)行正刪改成功,影響行數(shù) }else{ return 0;//執(zhí)行正刪改成功,但沒有影響行數(shù) } } } }
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;//頁數(shù) private $counts=false;//總記錄數(shù) private $returnArr=false;//分頁超鏈接的分頁 function __construct(){ $this->sqlHelper=new SqlHelper(); $this->returnArr=array(); } /* * 參數(shù)說明 * * $table 分頁時(shí)對(duì)那個(gè)表的數(shù)據(jù)分頁 * $id 輔助查詢當(dāng)前分頁的數(shù)據(jù)表的總記錄數(shù) * $pageSize 每頁顯示多少條信息記錄數(shù) * $pagingSize 分頁欄每次循環(huán)顯示出來的個(gè)數(shù) * $nowPage 當(dāng)前是第幾頁,默認(rèn)第一頁 * $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> <?php header("Content-type:text/html;charset=utf-8;"); require_once 'Paging.php'; $paging=new Paging(); //參數(shù)說明 /* * $table 分頁時(shí)對(duì)那個(gè)表的數(shù)據(jù)分頁 * $id 輔助查詢當(dāng)前分頁的數(shù)據(jù)表的總記錄數(shù) * $pageSize 每頁顯示多少條信息記錄數(shù) * $pagingSize 分頁欄每次循環(huán)顯示出來的個(gè)數(shù) * $nowPage 當(dāng)前是第幾頁,默認(rèn)第一頁 * $href 分頁欄的超鏈接將要往哪里連接,當(dāng)前頁鏈接地址 */ //控制起始頁為 $nowPage=1; if(isset($_GET["nowPage"])){ $nowPage=$_GET["nowPage"]; } //定義分頁所需參數(shù) $meiyexiansi=10; $meiyelianjieshu=10; $receiveArr=array(); $receiveArr=$paging->paging_prev_next("city","ID",$meiyexiansi,$meiyelianjieshu,$nowPage,"usePaging.php"); //容錯(cuò)判斷 if(!$receiveArr){ return; } //查詢每頁需要顯示的數(shù)據(jù),大小限制存在 $receiveArr 數(shù)組中 $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>
所使用的數(shù)據(jù)庫為 MySQL5.6 所自帶的 world 數(shù)據(jù)庫
下面是運(yùn)行的效果截圖:
不過代碼還有個(gè) Bug 。就是翻頁到最后的時(shí)候會(huì)出現(xiàn)顯示不了,原因在于 Paging.php 文件的 41~43 行左右判斷有問題。
錯(cuò)誤代碼如下:
if($nowPage>$this->pageCount || $nowPage<=0){ return false; }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫操作入門教程》、《php+mysqli數(shù)據(jù)庫程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)較為實(shí)用的SQLhelper
- 微軟官方SqlHelper類 數(shù)據(jù)庫輔助操作類
- C#基于SQLiteHelper類似SqlHelper類實(shí)現(xiàn)存取Sqlite數(shù)據(jù)庫的方法
- c#中SqlHelper封裝SqlDataReader的方法
- C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper實(shí)例
- 四個(gè)常用的.NET的SQLHELPER方法實(shí)例
- 自己編寫sqlhelper類示例分享
- c# SQLHelper(for winForm)實(shí)現(xiàn)代碼
- asp.net SqlHelper數(shù)據(jù)訪問層的使用
- C# SqlHelper應(yīng)用開發(fā)學(xué)習(xí)
相關(guān)文章
php設(shè)計(jì)模式之單例模式實(shí)例分析
這篇文章主要介紹了php設(shè)計(jì)模式之單例模式,實(shí)例分析了單例模式的原理與相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02PHP中使用json數(shù)據(jù)格式定義字面量對(duì)象的方法
這篇文章主要介紹了PHP中使用json數(shù)據(jù)格式定義字面量對(duì)象的方法,這是一種變通方法,使用json還可以在類中生成數(shù)組哦,需要的朋友可以參考下2014-08-08PHP PDOStatement::setFetchMode講解
今天小編就為大家分享一篇關(guān)于PHP PDOStatement::setFetchMode講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02php+js實(shí)現(xiàn)百度地圖多點(diǎn)標(biāo)注的方法
這篇文章主要介紹了php+js實(shí)現(xiàn)百度地圖多點(diǎn)標(biāo)注的方法,涉及php結(jié)合js針對(duì)百度地圖接口調(diào)用與json操作相關(guān)技巧,需要的朋友可以參考下2016-11-11php抽象方法和普通方法的區(qū)別點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于php 抽象方法和普通方法的區(qū)別的相關(guān)文章,有需要的朋友們可以學(xué)習(xí)下。2019-10-10php magic_quotes_gpc的一點(diǎn)認(rèn)識(shí)與分析
最近一直在做一個(gè)文章發(fā)布系統(tǒng),做了改,改了做,一直到現(xiàn)在還沒竣工.... 為了達(dá)到更好的兼容性,其中的程序涉及到了magic_quotes_gpc,看了下手冊(cè),又找了些資料,分析了下,分享給大家。2008-08-08