MYSQLとPHPを使ってサイトを作っています。


悩んでいるのが、50件のデータを1ページに表示することは出来るのですが、例えば1ページに25件表示して、残りを次のページに表示したいのですがやり方がわかりません。

簡単に言うと次のページを自動で生成したいって事です。

どなたか、教えてください。

回答の条件
  • 1人2回まで
  • 登録:2006/06/05 19:45:22
  • 終了:2006/06/05 20:40:37

回答(3件)

id:Chiether No.1

Chiether回答回数40ベストアンサー獲得回数12006/06/05 19:57:40

ポイント30pt

ページ数 = 全件 / 表示数( 端数切上 )

あとはMySQLを使用しているならば

offset と limit を使うのが一般的だと思います。


ただし、デメリットもあります。

1.全件のレコード数をカウントする検索SQLと

  実際のn件を取得する検索SQLの2発投げる事になる。

2.今回は問題ないが、別のDBを使用した場合に

  offset, limit が使えるとは限らない。

3.データ改竄でありえないページ番号を表示する事を

  毛嫌いするクライアントがいる事。


PEARライブラリを用いて Pear::Pager を用いる方法も

頭の片隅に覚えておいてもいいかもしれません。

http://pear.php.net/manual/ja/package.html.pager.php

id:black_kenchan

貴重なご意見ありがとうございます。

僕には、ちょっとまだ難しかったですが、

お心遣いが嬉しかったです。

参考になりました。

2006/06/05 20:38:01
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/06/05 19:58:14

ポイント20pt

こういった処理は手組みをするよりもPEARのPagerを使うと簡単です。

マニュアルは日本語訳されています。

簡単な使い方はこちらに載っていました。

どうしてもPEARを使えない環境の場合、PEARのソースコードを読むとどんな処理をしているのかが分かると思います。

(MySQLの場合はLIMITを使ってあれこれしていたはずです。)

参考になれば幸いです。

id:black_kenchan

ありがとうございます。

少しむずかしかったですが、参考になりました。

2006/06/05 20:39:01
id:kuippa No.3

くいっぱ回答回数1030ベストアンサー獲得回数132006/06/05 19:58:56

ポイント50pt

記述するSQLにlimit句をつけてみてはどうですか?

たとえば最初のページは

limit 0,25

というようになっているかと思いますが、

次のページを開いたときに

limit 25,25

となるようにすればいいわけです。


これをやるには次のページへなどというリンクを作成し、

自分自身へリンクを張ってやります。

その際にpage=2などという引数を渡してあげます。


list.phpという表示するためのPHPがあったとしたら、

$page = $_GET['page'];

で引数をとってやり、

pageに何も無い場合は0をセットしてやれば

SQL文を作成するときに

たとえば

$SQL = "select * from table "

$SQL .= "limit ". (25 * $page) .",25";

というような抽出の仕方ができます。


…。文章で説明して伝わりましたかね??

id:black_kenchan

ズバリ解りやすかったです。

僕のレベルにピッタリでした。

本当にありがとうございます。

2006/06/05 20:40:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません