• 締切済み

検索結果が複数ページになるとき

病院を検索するページを作っています。 結果が複数ページになる時に、2ページ目からうまくいきません。 $hospcat = mb_convert_encoding($hospcat,"EUC-JP","SJIS"); $hospname = mb_convert_encoding($hospname,"EUC-JP","SJIS"); $hospadd = mb_convert_encoding($hospadd,"EUC-JP","SJIS"); //診療科目か病院名か住所で where条件を組み立てます $where = " where (hospcat like '$hospcat') and (hospname like '%$hospname%') and (hospadd like '%$hospadd%')"; これで、1ページ目は表示するのですが 2ページ目にはどうやってこの情報を送ったらいいのでしょうか? 参考書には以下のように書いてあるのですが。。 //ページナビゲーションのパラメータの設定 if (isset($key) and strlen($key) > 0) { //キーワードが指定されていたらパラメータに追加します $keynavi = "&key=" . urlencode($key); } else { $keynavi = ""; } 色々やって見ますが、変な検索結果が出てきます。 堂かよろしくお願いいたします。 apache 1.3.34 mysql 4.0.26 php 4.4.2 で運用しています。

みんなの回答

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

2ページ目以降は「何個目から表示するか?」をURLに含めます。 初回の検索が http://***.**.**/search.php?key=<検索キーワード> だった場合、これを http://***.**.**/search.php?key=<検索キーワード>&start=1 と書かれたとして処理(startパラメータが無かったらstartを1にする)し、1件目から1ページ分(仮に1ページ20件とします)表示します。 で、2ページ目以降があるとき(20件表示してまだ残っているとき)は、検索結果の最後に <a href="http://***.**.**/search.php?key=<検索キーワード>&start=21">次ページ</a> を出力し、ユーザーにクリックさせます。 そこがクリックされると、PHPは http://***.**.**/search.php?key=<検索キーワード>&start=21 と言うリクエストを受ける事になるので、1~20件目を表示せずにスキップし、21件目から20件分表示します(21~40件目が表示される) URLのパラメータに、何件スキップしてから表示するか含め、それで続きを表示する訳です。 つまり「続きを表示するのではなく、毎回同じキーワードで再検索するけど、何件目から表示するかを変えて、続きを表示するフリをする」わけです。

kiyomidesuyo
質問者

補足

早速回答ありがとうございます! 検索キーワード が私の質問のように複数ある場合はどのようにしたらいいのでしょうか? スミマセン、とっても初心者な質問ばかりで。。。