※ ChatGPTを利用し、要約された質問です(原文:ページング処理ついて困っています)
DBのデータを15件ずつ表示するページング処理を実装したい
このQ&Aのポイント
DBの中身を全部表示することができるが、データが多くてスクロールするのが面倒なので、データを15件ずつに分けてページングする方法が知りたい。
Perlを使用して図書管理システムのデータを表示しているが、一度に全部表示されてしまうため、前後のデータを表示するページング処理を実装したい。
図書管理システムのデータをページングする方法を教えてください。データ数が多くてスクロールするのが面倒なので、15件ずつ表示するようにしたい。
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><head>";
print "<meta http-equiv=\"Content-Type\" content=\"text/javascript; charset=UTF-8\">\n";
print "<title>図書管理システム</title>\n</head>";
print "<body>";
use DBI;
$dbname = "bookmanagement";
$host = "localhost";
$user = "";
$password = "";
$table = "booktable";
$conn = DBI-> connect("DBI:Pg:dbname=$dbname;host=$host", $user, $password )|| die "DBI connect failed: $DBI::errstr";
$sql = "select * from $table order by id";
$result = $conn->prepare($sql);
$ref = $result->execute;
print <<HEADER;
<body>
<div align="right"><a href="./rental.cgi">ログアウト</a></div>
<center>
<caption><h2>図書管理システム </h2></caption>
<table border=2>
<tr bgcolor="#dcdcdc">
<th>ID</th>
<th nowrap>本名称</th>
<th nowrap>著者</th>
<th>説明</th>
<th nowrap>登録日</th>
<th nowrap>状態</th>
<th nowrap>貸出日</th>
<th nowrap>貸出人</th>
</tr>
HEADER
while(my @ref = $result->fetchrow) {
print <<ROW;
<tr>
<td>$ref[0]</td>
<td>$ref[1]</td>
<td nowrap>$ref[2]</td>
<td>$ref[3]</td>
<td nowrap>$ref[4]</td>
<td nowrap>$ref[5]</td>
<td nowrap>$ref[6]</td>
<td>
ROW
if($ref[7] eq ""){
print "<br>";
}
else{
print "$ref[7]";
}
print <<ROW;
</tr>
ROW
}
print <<FOOTER;
</table>
</center>
FOOTER
$result->finish;
$conn->disconnect;
上のコードで今DBの中身が見れるようになっているのですが、一度に全部表示するようになってしまっていて
データ数(?)が多すぎてスクロールするのが面倒なので、データを15件ずつに分けて<前へ 次へ>みたいなのを
作りたいと思っているのですが、どのようにしたら分りません。おわかりになる方がいましたら実装する為の
コードを教えて頂けないでしょうか?よろしくお願い致します。
補足
返信遅くなり申し訳ありませんでした このヒントを元にもう少し頑張ってみようと思います ありがとうございました。