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