• ベストアンサー

【php+mysql】mysqlのレコードが100件あるとして、それを10件ずつページを分けて表示するには?

たとえばmysqlのレコードが100件あるとして、 それを10件ずつページを分けてphpを使ってページに表示するには どうすればいいのでしょうか? googleの検索結果表示のようなかんじです。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

100件程度ならば配列に全データを入れてforeachで回す。とか。 普通にLimitを使ったほうが簡単でしょうけど。 以下サンプル。適当に作ったから動かないかも。 $p = $_GET['p']; $p_start = $p*10; # 表示スタート $p_end = $p_start+10; # 表示終了 $next_p = $p++; # 次のページ $back_p = $p--; # 前のページ $i=0; $all_data_count = ceil(count($data)/10); foreach ($data as $d) { if ($p_start <= $i and $i < $p_end) { print $d; } } if ($back_p >= 0) { print "<a href=\"${cgi}?p=$back_p\">次へ</a>"; } if ($next_p <= $all_data_count) { print "<a href=\"${cgi}?p=$next_p\">次へ</a>"; }

その他の回答 (2)

回答No.2

全てのレコード表示は $sql = "SELECT * FROM tablename"; として、それを10件だけセレクトすると言う場合は $sql = "SELECT * FROM tablename LIMIT 0,10"; となります。LIMITで取得数を制限出来ます(0件目から10件を取得)。 次の10件、と言う場合は $sql = "SELECT * FROM tablename LIMIT 10,10"; さらに次の20件と言う場合は $sql = "SELECT * FROM tablename LIMIT 20,10"; ....... となります。 これをリンクに反映させれば良いです。 例えば <a href="/?a=0">最初</a> <a href="/?a=10">10</a> <a href="/?a=20">20</a> ...... と言う感じです。 変数をGETで渡す場合はSQLインジェクション対策を忘れずに。 参考まで。

kimidora
質問者

お礼

ありがとうございました☆ 細かな書き込みで、大変わかりやすいです(*^-^) 今後も精進して初心者を早く脱出したいです。 SQLインジェクション対策についても、調べます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

MySQLでLimitをつけてデータをわたせばよいでしょう。 PHPのページの過去ログで「mysql limit」とかで検索してみてください

kimidora
質問者

お礼

ありがとうございました☆ おっしゃったとおり調べてみます。

関連するQ&A