首頁  >  文章  >  後端開發  >  PHP結合MySQL實作原生分頁

PHP結合MySQL實作原生分頁

韦小宝
韦小宝原創
2018-01-29 10:04:172025瀏覽

在PHP開發中框架可見是運用的越來越廣泛,框架用多了原生不練習漸漸的都會以往了,希望大家不要把基礎的東西給以往哦!我們這篇文章講的是PHP結合MySQL實作原生分頁,而現在一般的框架都封裝了分頁類別,不需要大家手動寫。不過閒來無事的時候可以試著寫一下,鍛鍊一下編寫程式碼能力。

PHP+MYSQL分頁主要是根據SQL語句中的limit來實現的。

limit語句:

select * from table limit `limit`,`offset`;

可以將其中的limit看做是分頁的頁數,offset看做是每頁顯示的條數。
實作效果如圖:

PHP結合MySQL實作原生分頁

這裡只是一個實例程式碼,主要實作分頁功能,頁面效果等相關沒有刻意偵錯。

主要實現功能有:首頁、尾頁、上一頁、下一頁、統計總頁數、定位目前頁、數字顯示,最大四個,其餘則以...表示。

具體程式碼實作:
這裡是使用PDO操作的資料庫

<?php
header("Content-type:text/html;charset=utf-8");
// 1、传入页码
 $page = $_GET[&#39;p&#39;];

// 2、根据页码取出数据
$pdo = new PDO(&#39;mysql:host=localhost;dbname=ceshi&#39;,&#39;root&#39;,&#39;root&#39;);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

$sql = &#39;SELECT * FROM `goods` LIMIT :start,:offset&#39;;
$limit = ($page-1)*3;
$offset = 3;
$stmt = $pdo->prepare($sql);
$sqlnum = &#39;SELECT COUNT(*)FROM `goods`&#39;;
$stmtnum = $pdo->prepare($sqlnum);
$stmtnum->execute();
$num = $stmtnum->fetch(PDO::FETCH_ASSOC);
$stmt->bindParam(&#39;:start&#39;,$limit);
$stmt->bindParam(&#39;:offset&#39;,$offset);
if(!$stmt->execute()){
            throw new Exception(&#39;查找失败&#39;,1);
        }
 $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data);

// 3、显示数据+显示分页条
/**总页数**/
$end = floor($num[&#39;COUNT(*)&#39;]/$offset)+1;

$page_banner =&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=1">   首页</a>&#39;;
if($page <=1){
    $page_banner .= &#39;<a style="color:#B8BBB3;">   上一页</a>&#39;;
}else{
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($page -1).&#39;">   上一页</a>&#39;;
}
if($page+3>4){
    $page_banner .= &#39;...&#39;;
}
if(($page+4)>=$end){
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($end-3).&#39;">   &#39;.($end-3).&#39;</a>&#39;;
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($end-2).&#39;">   &#39;.($end-2).&#39;</a>&#39;;
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($end-1).&#39;">   &#39;.($end-1).&#39;</a>&#39;;
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($end).&#39;">   &#39;.($end).&#39;</a>&#39;;
}else{
    for($i=0;$i<4;$i++){
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($page+$i).&#39;">   &#39;.($page+$i).&#39;</a>&#39;;
    }
}

if(($page+4)<$end){
    $page_banner .= &#39;...&#39;;
}

if($page <=$num[&#39;COUNT(*)&#39;]/$offset){
    $page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.($page +1).&#39;">    下一页</a>&#39;;
}else{
    $page_banner .=&#39;<a style="color:#B8BBB3;">   下一页</a>&#39;;
}

$page_banner .=&#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?p=&#39;.$end.&#39;">     尾页</a>&#39;;

$page_banner .=&#39;<span>   总共&#39;.$end.&#39;页</span>   当前第<span>&#39;.$page."页</span>";
echo $page_banner;
?>

大家可以在本地自己練習練習喔!不懂的更要多練習咯!這些原生基礎的東西忘了到最後就很難再撿起來了! !

相關推薦:

php分頁類別的實作

今天就來跟大家分享一款好用好看的php分頁類!

php分頁的實作原理

今天就帶大家來解析一下php分頁的原理。

萬能的php分頁類實例代碼

這篇文章主要介紹了萬能的php分頁類,特別好用,需要使用php分頁類的朋友不要錯過。

thinkphp分頁實現效果

大量資料的顯示就需要對內容進行分頁,本文章就是就是介紹thinkphp分頁進行整理,有需要的朋友一起來了解一下。

以上是PHP結合MySQL實作原生分頁的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn