人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: black_kenchan
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP サイト データ 自動
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Chiether
●30ポイント

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

あとは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

◎質問者からの返答

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

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

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

参考になりました。


2 ●
●20ポイント

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

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

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

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

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

参考になれば幸いです。

◎質問者からの返答

ありがとうございます。

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


3 ● くいっぱ
●50ポイント

記述する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";

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


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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ