国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Operasi pangkalan data PHP: penomboran pengguna

Dalam projek sebenar, kami menulis hos, nama pengguna, kata laluan dan pustaka dalam fail konfigurasi.

Jika ia ditulis dengan keras dalam kod, jika maklumat berkaitan pelayan pangkalan data berubah, ia jelas tidak selaras dengan pemikiran pengaturcara untuk mengubah suai semua kod.

Selain itu, dalam setiap halaman yang perlu disambungkan ke pangkalan data. Kita semua perlu menulis sambungan, menilai kesilapan, dan menetapkan set aksara, yang terlalu menyusahkan. Dan ia tidak kondusif untuk menggunakan semula kod ini.

Kami boleh menggunakan siri sertakan fungsi yang dinyatakan sebelum ini untuk mencapai matlamat kami. Contoh gambar adalah seperti berikut:

2015-10-13_561c9c5350f16.png

Oleh itu, kita boleh membuat fail konfigurasi config.php. Tetapkan semua konfigurasi yang perlu digunakan sebagai pemalar Kodnya adalah seperti berikut:

<?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');
?>

Kami mengekstrak halaman connection.php apabila kami perlu menyambung ke pangkalan data pada masa hadapan, kami hanya perlu memasukkan fail connection.php. Kodnya adalah seperti berikut:

<?phpinclude '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);
?>

Kami boleh melaksanakan sambungan pangkalan data dengan memasukkan terus fail connection.php dalam setiap fail pada masa hadapan:

serta 'connection.php';

Lengkapkan persediaan di atas, dan kemudian lengkapkan paging. Kesan penomboran adalah seperti berikut:

2015-10-13_561c9c536b206.png

Halaman harus mengandungi elemen asas berikut:


元素說明備注
首頁最開始進(jìn)入到頁面的第一頁用get傳參才進(jìn)去時默認(rèn)為1
上一頁當(dāng)前頁減1如果頁碼為第一頁時減1,為應(yīng)該為第一頁
下一頁當(dāng)前頁加1如果為最后一
尾頁最后一頁總條數(shù)除以每頁顯示數(shù)得到總頁數(shù)
當(dāng)前頁當(dāng)前所在的頁碼就是當(dāng)前的頁碼
總頁數(shù)一共有多少個頁面總條數(shù)除以每頁顯示數(shù)

Apabila kami mengawal nombor halaman, kami melaksanakan kawalan nombor halaman dengan menghantar nilai nombor halaman dalam bar alamat URL. Dengan menambahkan maklumat berkaitan nombor halaman pada page.php, kami boleh mengira maklumat yang lebih berkesan. Kesan url mengawal paging adalah seperti berikut:

QQ截圖20161114161938.png

Dalam pelaksanaan kod, kedua-dua nilai ini sebenarnya direalisasikan melalui offset (offset) dan kuantiti ( num) selepas had paging.

mengimbangi had , bilangan

頁碼url中g(shù)et值limit偏移量,數(shù)量
第1頁10,5
第2頁25,5
第3頁310,5
第n頁n(n-1)*5,5


Anggapkan bahawa 5 item dipaparkan setiap halaman. Formula terakhir untuk mengawal had dalam paging adalah seperti berikut:

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

Kami melaksanakan perniagaan melalui kod:

1. Kira parameter yang diperlukan untuk paging

Jumlah nombor

通過查詢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'];

Halaman semasa

Apabila anda mula-mula memasuki halaman page.php, urlnya ialah http://www.php.com/page .php, diikuti dengan tiada Terdapat ?page=1 nombor pengenalan halaman.

Jadi kita perlu mencipta nombor pengenalan halaman secara manual dan menyerahkannya kepada pembolehubah nombor halaman semasa $page.

Kami khuatir terdapat perpuluhan dalam halaman yang dilalui oleh pengguna, jadi kami melakukan penukaran jenis paksa: (int) $_GET['page'].

Cara penulisan pertama:

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

Cara penulisan kedua

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

Halaman terakhir

Setiap halaman mestilah integer. Sama seperti matematik di sekolah rendah. Secara purata, 5.6 orang harus menyediakan berapa banyak epal. Jawapannya mestilah 6.

Jika halaman keluar dengan 20.3 halaman, siling fungsi pembundaran mesti digunakan. Biarkan bilangan penomboran menjadi 21.

Kami membahagikan jumlah bilangan dengan bilangan item data yang dipaparkan pada setiap halaman untuk mendapatkan jumlah bilangan halaman.

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

Kawalan pengecualian halaman sebelumnya dan halaman seterusnya

Bagaimana jika pengguna mengklik halaman sebelumnya pada halaman pertama dan mengklik halaman seterusnya pada halaman terakhir?

Dalam kes ini, data akan melebihi julat, menyebabkan tiada data dipaparkan apabila kami membuat penomboran.

Jelas sekali situasi luar biasa ini perlu diambil kira. Oleh itu, jika halaman pertama ditolak dengan satu semasa halaman, kami menjadikannya halaman pertama.
Apabila menambahkan satu pada halaman terakhir, kami menjadikannya halaman terakhir, yang melengkapkan kawalan pengecualian.

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

2 pernyataan SQL

Kami berkata sebelum ini bahawa teras paging adalah untuk mengawal paparan setiap halaman melalui offset dan num dalam nombor pernyataan SQL.

Kami juga menyenaraikan formula khusus di atas Kami menukar syarikat kepada kod seperti berikut:

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

Kami menggunakan $num dan $offset pada pernyataan SQL:

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

Control. nilai paging dalam 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>';

Kami akhirnya menyambung seluruh perniagaan bersama-sama untuk mencapai kesan akhir Kodnya adalah seperti berikut:

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);


.
Meneruskan pembelajaran
||
<?php $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>'; //我們最后將整體業(yè)務(wù)串聯(lián)起來實(shí)現(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); ?>