欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

php如何實現(xiàn)分頁的原理

php如何實現(xiàn)分頁的原理?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

江岸網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

一、封裝配置信息

1、我們可以做一個配置文件config.php。將需要使用到的配置全部設(shè)置為常量,代碼如下:

<?php
//數(shù)據(jù)庫服務(wù)器
define('DB_HOST', 'localhost');
//數(shù)據(jù)庫用戶名
define('DB_USER', 'root');
//數(shù)據(jù)庫密碼
define('DB_PWD', 'secret');
//庫名
define('DB_NAME', 'book');
//字符集
define('DB_CHARSET', 'utf8');

2、2.我們將connection.php頁面抽取出來,以后需要連接數(shù)據(jù)庫的時候只需要包含connection.php文件即可。

代碼如下:

<?php
include 'config.php';$conn = MySQLi_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
 {  mysqli_error($conn);
    exit;
  }
mysqli_set_charset($conn, DB_CHARSET);
?>

我們在以后每個文件使用中直接包含 connection.php文件就可以實現(xiàn)數(shù)據(jù)庫連接了:

include 'connection.php';

二、顯示分頁實現(xiàn)

頁要實現(xiàn)分頁中包含以下幾個基本元素:

php如何實現(xiàn)分頁的原理

我們在控制頁碼的時候,都是通過URL地址欄傳入頁碼值來實現(xiàn)的頁碼控制。在page.php后面接上頁碼的相關(guān)信息,我們就能夠算出更多的有效信息。url控制分頁的效果如下:

php如何實現(xiàn)分頁的原理

在代碼實現(xiàn)中,是通過limit后的偏移量(offset)和數(shù)量(num),這兩個值真正實現(xiàn)的分頁。

limit offset , num

php如何實現(xiàn)分頁的原理

假設(shè)每頁顯示5條。最終得到的分頁中控制limit公式如下:

offset的值為 (n-1)*5
num 為規(guī)定的5

三、實現(xiàn)步驟;

1、計算出分頁所需參數(shù)

1-1、總數(shù)

通過查詢user表的count(id),得到總數(shù)$count。
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到總的用戶數(shù)
$count = $data['c'];

1-2、當(dāng)前頁

剛進入page.php頁時,url為http://www.php.com/page.php,后面是不存在 ?page=1 頁面標(biāo)識號的。

因此我們需要手動創(chuàng)建一個頁面標(biāo)識號傳給當(dāng)前頁碼變量$page。

我們害怕用戶傳的頁面中存在小數(shù)等,所以我們做一次強制的類型轉(zhuǎn)換:(int) $_GET['page']。

第一種寫法:

$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

第二種寫法:

if (isset($_GET['page'])) {
    $page = (int) $_GET['page'];
} else {
    $page = 1;
}

1-3、最后一頁

每一頁一定是一個整數(shù)。就跟小學(xué)的時候數(shù)學(xué)一樣。平均有5.6個人應(yīng)該準(zhǔn)備幾個蘋果。答案一定是6個。

如果頁面出來了20.3個頁面,一定是使用進一法取整函數(shù)ceil。讓分頁數(shù)變?yōu)?1。

我們用總數(shù)除以每頁顯示的數(shù)據(jù)條數(shù),就得到了總頁數(shù)了。

//每頁顯示數(shù)
$num = 5;
$total = ceil($count / $num);

1-4、上下頁異常情況控制

如果用戶的在第一頁點擊了上一頁,在最后一頁點擊了下一頁怎么辦呢?

這樣的話數(shù)據(jù)會超出范圍,而造成我們分頁時無數(shù)據(jù)顯示。

顯然這種異常情況需要考慮到。因此,如果在分頁時在第一頁減一時,我們就讓他為第一頁。
在最后一頁加一時,我們就讓他為最后一頁,即完成了異??刂?。

if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}

2、SQL語句

我們之前說過分頁的核心是通過SQL語句中的offset和num來控制每頁顯示數(shù)。

$num = 5;
$offset = ($page - 1) * $num;

我們將$num和$offset應(yīng)用于SQL語句中:

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

控制好URI中的分頁值

echo '<tr>
    <td colspan="5">
    <a href="page.php?page=1">首頁</a>
    <a href="page.php?page=' . ($page - 1) . '">上一頁</a>
    <a href="page.php?page=' . ($page + 1) . '">下一頁</a>
    <a href="page.php?page=' . $total . '">尾頁</a>
    當(dāng)前是第 ' . $page . '頁  共' . $total . '頁
    </td>
    </tr>';

四、整體代碼實現(xiàn)

include 'connection.php';
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到總的用戶數(shù)
$count = $data['c'];
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
/*
if (isset($_GET['page'])) {
    $page = (int) $_GET['page'];
} else {
    $page = 1;
}
 */
 
//每頁顯示數(shù)
$num = 5;
//得到總頁數(shù)
$total = ceil($count / $num);
if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}
$offset = ($page - 1) * $num;
$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
    //存在數(shù)據(jù)則循環(huán)將數(shù)據(jù)顯示出來
    echo '<table width="800" border="1">';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '<tr>';
        echo '<td>' . $row['username'] . '</td>';
        echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>';
        echo '<td>' . long2ip($row['createip']) . '</td>';
        echo '<td><a href="edit.php?id=' . $row['id'] . '">編輯用戶</a></td>';
        echo '<td><a href="delete.php?id=' . $row['id'] . '">刪除用戶</a></td>';
        echo '</tr>';
    }
    echo '<tr><td colspan="5"><a href="page.php?page=1">首頁</a>  <a href="page.php?page=' . ($page - 1) . '">上一頁</a>   <a href="page.php?page=' . ($page + 1) . '">下一頁</a>  <a href="page.php?page=' . $total . '">尾頁</a>  當(dāng)前是第 ' . $page . '頁  共' . $total . '頁 </td></tr>';
    echo '</table>';
} else {
    echo '沒有數(shù)據(jù)';
}
mysqli_close($conn);

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站名稱:php如何實現(xiàn)分頁的原理
文章轉(zhuǎn)載:http://aaarwkj.com/article44/iipjhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站收錄用戶體驗、網(wǎng)站排名網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
亚洲人成网站在线免费看| 中日韩中文字幕一区二区| 亚洲精品乱码精品乱码不卡| 欧美一区二区三区久久妇| 免费精品黑人一区二区三区| 91中文字幕国产日韩| 日韩欧美二区三区在线| 少妇又色又爽又高潮欧美| 青青草原在线免费视频| 中文字幕久精品视频免费| 日本韩国欧美一区二区在线| 亚洲人成免费在线观看| 欧美三级特黄在线播放| 久久激情日本人妻av免费| 午夜av在线毛片免费观看| 久久婷婷欧美激情综合| 日本a级免费大片网站| 国产精品国产精品无卡区| 2004年亚洲中文字幕| 国产精品亚洲伦理在线| 97免费在线视频观看| 日本不卡一二区不久精品免费| 精品日韩电影在线观看| 国产成人性生交大片免费| 亚洲偷拍自拍在线观看| 精品人妻中文字幕一区有码| av永久天堂一区二区三区| 亚洲黄色片大奶子水多| 欧美亚洲午夜一二综合| 99久久久精品国产免费| 美女丝袜诱惑国产91| 不卡视频一区二区日韩| 亚洲精品国产精品乱码不| 黄片欧美视频在线观看| 狠狠综合久久av一区二区大宝| 日韩av综合色区人妻| 日本一区二区三区伦理| 国产男女猛烈无遮挡网站| 九九热视频在线观看色| 亚洲精品乱码精品乱码不卡| 男女啪啪国产精品视频|