各ページに 5 つの項(xiàng)目が表示されると仮定します。ページングの制限を制御するための最終的な式は次のとおりです:
offset的值為 (n-1)*5
num 為規(guī)定的5 コードを通じてビジネスを?qū)g裝します: 1. ページングに必要なパラメータを計(jì)算します 総數(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']; 現(xiàn)在のページ 入力したばかりですpage.php ページの場(chǎng)合、URL は http://www.php.com/page.php で、その後に ?page=1 ページ識(shí)別番號(hào)はありません。 そのため、ページ識(shí)別番號(hào)を手動(dòng)で作成し、それを現(xiàn)在のページ番號(hào)変數(shù) $page に渡す必要があります。 ユーザーから渡されたページに小數(shù)點(diǎn)等が含まれている可能性があるため、強(qiáng)制的に型変換を行います: (int) $_GET['page']。 最初の書き方: $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; 2 番目の書き方 if (isset($_GET['page'])) {
$page = (int) $_GET['page'];
} else {
$page = 1;
} 最後のページ 各ページは整數(shù)でなければなりません。小學(xué)校の算數(shù)と同じです。平均して、5.6 人が何個(gè)のリンゴを準(zhǔn)備する必要があります。答えは 6 でなければなりません。 ページに 20.3 ページが表示される場(chǎng)合は、丸め関數(shù) ceil を使用する必要があります。ページネーション數(shù)を21とします。 合計(jì)數(shù)を各ページに表示されるデータ項(xiàng)目の數(shù)で割って、合計(jì)ページ數(shù)を取得します。 //每頁顯示數(shù)
$num = 5;
$total = ceil($count / $num); 前ページと次ページの例外制御 ユーザーが最初のページで前のページをクリックし、最後のページで次のページをクリックした場(chǎng)合はどうなりますか? この場(chǎng)合、データが範(fàn)囲を超えるため、ページネーション時(shí)にデータが表示されなくなります。 この異常な狀況を考慮する必要があるのは明らかです。したがって、ページング中に最初のページが 1 減算される場(chǎng)合は、それを最初のページとします。 最終ページに追加した場(chǎng)合は、最終ページ、つまり例外制御が完了します。 if ($page <= 1) {
$page = 1;
}
if ($page >= $total) {
$page = $total;
} 2. SQL ステートメント ページングの核心は SQL ステートメントの offset と num によって各ページの表示數(shù)を制御することであると前に述べました。 また、上記の特定の式を次のようにコードに変換しました: $num = 5;
$offset = ($page - 1) * $num; $num と $offset を 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>'; 最後に、最終的な効果を達(dá)成するために、ビジネス全體が直列に接続されます。コードは次のとおりです。
<?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);
?>
現(xiàn)時(shí)點(diǎn)ではコースウェアはダウンロードできません?,F(xiàn)在スタッフが整理中です。今後もこのコースにもっと注目してください?
このコースを視聴した生徒はこちらも學(xué)んでいます
|