• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ページング処理ついて困っています)

DBのデータを15件ずつ表示するページング処理を実装したい

このQ&Aのポイント
  • DBの中身を全部表示することができるが、データが多くてスクロールするのが面倒なので、データを15件ずつに分けてページングする方法が知りたい。
  • Perlを使用して図書管理システムのデータを表示しているが、一度に全部表示されてしまうため、前後のデータを表示するページング処理を実装したい。
  • 図書管理システムのデータをページングする方法を教えてください。データ数が多くてスクロールするのが面倒なので、15件ずつ表示するようにしたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.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 の値から 計算すればよいです。

nardobrea
質問者

補足

返信遅くなり申し訳ありませんでした このヒントを元にもう少し頑張ってみようと思います ありがとうございました。

その他の回答 (2)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

データベースが 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 を計算して表示すればよいです。

参考URL:
http://www.postgresql.jp/document/pg732doc/user/queries-limit.html
nardobrea
質問者

補足

t-okura様、返信遅くなり申し訳ありません。 $offsetの(ページ番号 - 1) * $limitということなのですが、ページ番号というのは$page=1;とかって設定してしまってよいのでしょうか? それでよかったとしても >>検索結果ページにページ番号のリンクを作り、クリックされたとき $offset を計算して表示すればよいです。 の作り方が良く分からず困っております。よろしければ教えて頂けますでしょうか?

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

while(my @ref = $result->fetchrow) { の意味はわかってますよね。 ここを適当に変えて、次ページへのリンクで指定してやればよい。 ほかの部分がわからないので、これ以上は無理。

nardobrea
質問者

補足

ORUKA1951さんありがとうございます。 >>while(my @ref = $result->fetchrow) { の意味 booktableに登録された各行のそれぞれのデータを配列refに入れている ってことではないでしょうか? >>ほかの部分がわからない 何が必要なのかこちらも分からないです

関連するQ&A

専門家に質問してみよう