php中分頁及SqlHelper類用法實例
本文實例講述了php中分頁及SqlHelper類用法。分享給大家供大家參考,具體如下:
文檔目錄結構如下:

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ù)轉存到$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ù)轉存到$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ù)轉存到$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ù)據(jù)分頁
* $id 輔助查詢當前分頁的數(shù)據(jù)表的總記錄數(shù)
* $pageSize 每頁顯示多少條信息記錄數(shù)
* $pagingSize 分頁欄每次循環(huán)顯示出來的個數(shù)
* $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>
<?php
header("Content-type:text/html;charset=utf-8;");
require_once 'Paging.php';
$paging=new Paging();
//參數(shù)說明
/*
* $table 分頁時對那個表的數(shù)據(jù)分頁
* $id 輔助查詢當前分頁的數(shù)據(jù)表的總記錄數(shù)
* $pageSize 每頁顯示多少條信息記錄數(shù)
* $pagingSize 分頁欄每次循環(huán)顯示出來的個數(shù)
* $nowPage 當前是第幾頁,默認第一頁
* $href 分頁欄的超鏈接將要往哪里連接,當前頁鏈接地址
*/
//控制起始頁為
$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");
//容錯判斷
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ù)庫
下面是運行的效果截圖:
不過代碼還有個 Bug 。就是翻頁到最后的時候會出現(xiàn)顯示不了,原因在于 Paging.php 文件的 41~43 行左右判斷有問題。
錯誤代碼如下:
if($nowPage>$this->pageCount || $nowPage<=0){
return false;
}



更多關于PHP相關內容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫操作入門教程》、《php+mysqli數(shù)據(jù)庫程序設計技巧總結》、《php面向對象程序設計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP網(wǎng)絡編程技巧總結》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
- C#實現(xiàn)較為實用的SQLhelper
- 微軟官方SqlHelper類 數(shù)據(jù)庫輔助操作類
- C#基于SQLiteHelper類似SqlHelper類實現(xiàn)存取Sqlite數(shù)據(jù)庫的方法
- c#中SqlHelper封裝SqlDataReader的方法
- C#實現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper實例
- 四個常用的.NET的SQLHELPER方法實例
- 自己編寫sqlhelper類示例分享
- c# SQLHelper(for winForm)實現(xiàn)代碼
- asp.net SqlHelper數(shù)據(jù)訪問層的使用
- C# SqlHelper應用開發(fā)學習
相關文章
PHP中使用json數(shù)據(jù)格式定義字面量對象的方法
這篇文章主要介紹了PHP中使用json數(shù)據(jù)格式定義字面量對象的方法,這是一種變通方法,使用json還可以在類中生成數(shù)組哦,需要的朋友可以參考下2014-08-08
PHP PDOStatement::setFetchMode講解
今天小編就為大家分享一篇關于PHP PDOStatement::setFetchMode講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02

