- ベストアンサー
検索結果表示ページで1 2 3... といったページ表示をさせたい
DBから社員情報を抽出して表示させるプログラムを作っています。10件ごとの表示にさせたいので、「前ページ 1 2 3... 次ページ」のようにページを数字と前・次ページのリンクで表示し、それをクリックすればそのページに飛ぶようにしたいと考えています。 「前ページ」「次ページ」のみの表示であればできたのですが、「1 2 3... 」のようにするやり方がわかりません。 基本的な問題だとは思いますが、どなたかご教授お願いいたします。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
DBは何を使っているんでしょうか?これはSQL文の問題ですね。例えばMySQLであれば、SQLの最後に"limit スタート位置,取り出す件数"という一節を付けます。お使いのDBのマニュアルを見てみて下さい。
その他の回答 (2)
- wakame0729
- ベストアンサー率32% (245/765)
リンク先にはページ指定があるんですよね?例えば&p=1とか&p=2とか。表示されたHTMLをソースで表示させて、狙い通りの値が表示されているか確認しましょう。ループの中でインクリメントしていくカウンタを使ってここを表示させようとしてるのだと思いますが、その変数がちゃんと正しい値になってるか、print文などを使って確認しましょう。あと念のためなんですが、リンク先ではページを指定すれば正しい画面が表示されるんですよね? ここから先はアルゴリズム云々の話ではなく、恐らくあなたが書いたソース自身の問題になるので、ソースを見ないと何とも言えません。が、複雑なスクリプトではないはずなので、きちんとそれぞれの変数の値が正しくなっているかを一つ一つ確認すればちゃんと動くと思います。動かないからといってすぐここで質問するのではなく、ちゃんとデバッグをしましょう。経験のある我々だって間違いがなく書いてそのまま動くプログラムなんてほとんどない、たいていはどこかに間違いがあって、それを一つ一つ潰して動くようにするのですから。
お礼
ご指摘ありがとうございました。wakame0729さんのおっしゃるとおり、甘えがあったかと思います。月曜にならないとソースに触れないので、月曜になり次第デバッグ作業をもう一度やってみようと思います。 >リンク先ではページを指定すれば正しい画面が表示されるんですよね? 検索ボタンを押して初めに表示される画面は1~10件が正しく表示されますが、そこから1.2.3...のページリンクをクリックしても動きがおかしくなってしまいます。私の今のやり方ではページリンクの「1.2.3...」の部分を表示させるコードを書いているだけで、例えば3をクリックしたときに31~40件目を表示させるようにする仕組みがわからず、こちらで質問させていただいた次第です。 何度もお時間を割いていただきましてありがとうございました。今一度アドバイスをいただければ幸いです。どうぞ宜しくお願いいたします。
- wakame0729
- ベストアンサー率32% (245/765)
ページングですね。手順としては $num=データ総数 $par=1ページの表示件数 $maxpage = ceil($num / $par); $maxpage=総ページ数 あとはこのページ総数分ループさせて表示させます。 前ページ、次ページができるのでしたら、これでできますよね?
お礼
早速のご回答ありがとうございます。今手元にソースがないので確かめられないのですが、その方法は試してみました。ページのリンクはこれでできたのですが、リンクをクリックしても動きがおかしくて・・・きちんと1ページ目や2ページ目に飛ばず、最後のページに飛んでしまったり、真っ白になってしまったりします。
お礼
何度もお答えいただきまして本当にありがとうございます。使用DBはMySQLです。10件ずつの表示であればスタート位置を「ページ*10-9」の値にしてあげれば取れそうですね。やっと解決できそうです。大変助かりました。本当にありがとうございました!