- ベストアンサー
【php+mysql】mysqlのレコードが100件あるとして、それを10件ずつページを分けて表示するには?
たとえばmysqlのレコードが100件あるとして、 それを10件ずつページを分けてphpを使ってページに表示するには どうすればいいのでしょうか? googleの検索結果表示のようなかんじです。
- みんなの回答 (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)
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
全てのレコード表示は $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インジェクション対策を忘れずに。 参考まで。
- yambejp
- ベストアンサー率51% (3827/7415)
MySQLでLimitをつけてデータをわたせばよいでしょう。 PHPのページの過去ログで「mysql limit」とかで検索してみてください
お礼
ありがとうございました☆ おっしゃったとおり調べてみます。
お礼
ありがとうございました☆ 細かな書き込みで、大変わかりやすいです(*^-^) 今後も精進して初心者を早く脱出したいです。 SQLインジェクション対策についても、調べます。