<html>
<head>
<title>前後のページへのリンクを表示する</title>
</head>
<body>
<h3>前後のページへのリンクを表示する</h3>
<?php
// 接続設定(サーバ/データベース/ユーザ/パスワード)
$sv = "localhost";
$dbname = "BOOKDB;;
$user = "root";
// 表示文字コード
$disp_enc = "SJIS";
// データの文字コードを変換する関数
function cnv_dbstring($string, $enc) {
// 文字コードを変換する
$det_enc = mb_detect_encoding($string);
↑文字列のエンコーディングを変換後のエンコーディングで指定されたエンコーディングに変換します。
if ($det_enc and $det_enc != $enc) {
return mb_convert_encoding($string, $enc, $det_enc);
}
else {
return $string;
}
}
// データベースに接続する
$conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
mysql_select_db($dbname) or die("接続エラー");
// データ数を取得する
$sql = "SELECT COUNT(*) AS cnt FROM booktable;";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");
結果タイプのMySQL_ASSOCは結果を連想配列として取り出すこと。
$row = mysql_fetch_array($res, MYSQL_ASSOC);
↑()の次にクエリの配列結果を配列に格紊したものを1行ずつ返す。
$dtcnt = $row["cnt"];
// 取り出す最大レコード数
$lim = 10;
// 表示するページ位置を取得する
$p = intval(@$_GET["p"]);
↑指定された値BASEを奇数(デフォルトは10)とするVARのINTEGERとして値を返します
if ($p < 1) {
$p = 1;
}
// 表示するデータの位置を取得する
$st = ($p - 1) * $lim;
// 前のページ/次のページのページ番号を取得する
$prev = $p - 1;
↑内部の配列のボタンをひとつ前に戻す
if ($prev < 1) {
$prev = 1;
}
$next = $p + 1;
// データを取り出す
$sql = "SELECT * FROM booktable ORDER BY id
LIMIT $st, $lim;";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");
// 取り出したデータを表示する
echo "<table border=\"1\">";
echo "<tr>";
echo "<td>ID</td>";
echo "<td>吊前</td>";
echo "<td>書籍吊</td>";
echo "<td>著者吊</td>";
echo "<td>出版社</td>";
echo "<td>価格</td>";
echo "<td>発行年</td>";
echo "<td>評価</td>";
echo "</tr>";
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td>".$row["id"]."</td>";
echo "<td>".cnv_dbstring($row["bookname"], $disp_enc)."</td>";
echo "<td>".cnv_dbstring($row["author"], $disp_enc)."</td>";
echo "<td>".$row["pub"]."</td>";
echo "<td>".$row["price"]."</td>";
echo "<td>".$row["year"]."</td>";
echo "<td>".$row["point"]."</td>";
echo "</tr>";
}
echo "</table>";
// 前のページ/次のページへのリンク
if ($p > 1) {
echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\">
↑表示を最新の情報に更新する場合は掲示板のプログラムを
パラメータなしで再度呼び出す必要があります。したがって
[]によってプログラム自身をリンク先として指定する。
前のページ</a>";
}
if (($next - 1) * $lim < $dtcnt) {
echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\">
次のページ</a>";
}
// 接続を解除する
mysql_close($conn);
?>
</body>
</html>
