【MySQL】データベースで掲示板を作る⑦ ページング

当サイトはアフィリエイト広告を利用しています

予め、データを5件くらい投稿して保存しておく。

目次

bbs.php を変更

データベース接続後に記述

//総件数を取得
$sql = "select * from bbs_data order by id";
$res = $dbh->query($sql) or die ("データ抽出エラー1");
$row_cnt = $res->rowCount();

if($row_cnt == 0){
print "<p>登録されていません</p><br>";
}else{
print "<p>全{$row_cnt}件</p><br>";
}

1ページに表示する件数などを指定

//取り出す最大レコード数
$lim = 3;

//最初と最後のページ番号を定義
$first = 1;
$last = ceil($row_cnt / $lim);

//表示するページ位置を取得
$p = intval(@$_GET["p"]);
if($p < 1){
$p = 1;
}

//表示するレコード位置を取得
$st = ($p - 1) * $lim;

クエリを書き換える

$query = "select * from bbs_data order by id DESC LIMIT $st, $lim";
$result = $dbh->query($query) or die ("データ抽出エラー2");
$result->execute();

while 部分はそのまま。

ページング部分の表示

//各ページ番号への移動リンクを表示
for ($cnt = 1; $cnt <= $last; $cnt++) {
$pageno = "<font><a href=\"$_SERVER[PHP_SELF]?p=$cnt\"><span>$cnt</span></a></font>&nbsp";

//ページ番号と現在のページが同一の場合はリンク無しにする
if ($cnt == $p) {
$pageno = "<font><span class=\"paging_under\">$p</span></font>&nbsp";
}
echo $pageno;
}

print "</div>";

//接続を閉じる
$dbh = null;

結果はこうなります。

この記事を書いた人

目次