- ベストアンサー
DBのデータを15件ずつ表示するページング処理を実装したい
- DBの中身を全部表示することができるが、データが多くてスクロールするのが面倒なので、データを15件ずつに分けてページングする方法が知りたい。
- Perlを使用して図書管理システムのデータを表示しているが、一度に全部表示されてしまうため、前後のデータを表示するページング処理を実装したい。
- 図書管理システムのデータをページングする方法を教えてください。データ数が多くてスクロールするのが面倒なので、15件ずつ表示するようにしたい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いまさらながらの回答ですが、検索結果が 100件あり、1ページに10件ずつ 表示するのであれば、全部で10ページに分割することになります。 分割したページには他のページに移動するためにリンクを作ります。 例えば <a href="foo.cgi?page=1&key=検索キー>ページ 1</a> <a href="foo.cgi?page=2&key=検索キー>ページ 2</a> <a href="foo.cgi?page=3&key=検索キー>ページ 3</a> ... のようなリンクを作り、変数として渡された page の値から 計算すればよいです。
その他の回答 (2)
- t-okura
- ベストアンサー率75% (253/335)
データベースが PostgreSQL であれば OFFSET と LIMIT を使い、 検索結果の一部を取り出すことができます。 select * from $table order by id を select * from $table order by id limit $limit offset $offset とします。ここで、$limit は 1ページに表示する件数、$offset を (ページ番号 - 1) * $limit とすると、そのページに表示する データだけを抽出することができます。 検索結果ページにページ番号のリンクを作り、クリックされたとき $offset を計算して表示すればよいです。
補足
t-okura様、返信遅くなり申し訳ありません。 $offsetの(ページ番号 - 1) * $limitということなのですが、ページ番号というのは$page=1;とかって設定してしまってよいのでしょうか? それでよかったとしても >>検索結果ページにページ番号のリンクを作り、クリックされたとき $offset を計算して表示すればよいです。 の作り方が良く分からず困っております。よろしければ教えて頂けますでしょうか?
- ORUKA1951
- ベストアンサー率45% (5062/11036)
while(my @ref = $result->fetchrow) { の意味はわかってますよね。 ここを適当に変えて、次ページへのリンクで指定してやればよい。 ほかの部分がわからないので、これ以上は無理。
補足
ORUKA1951さんありがとうございます。 >>while(my @ref = $result->fetchrow) { の意味 booktableに登録された各行のそれぞれのデータを配列refに入れている ってことではないでしょうか? >>ほかの部分がわからない 何が必要なのかこちらも分からないです
補足
返信遅くなり申し訳ありませんでした このヒントを元にもう少し頑張ってみようと思います ありがとうございました。