- 締切済み
[検索結果ページのロジック] 検索結果ページを作成中なのですが…
[検索結果ページのロジック] 検索結果ページを作成中なのですが… いつもお世話になりますm(_ _)m 現在検索ページを作成中なのですが、検索結果表示の ロジックが浮かばず困っています。 (検索機能は出来てます。) 仕様言語:VB2005 (ASP.net) (GridView等は使わずに、ASP的な組立てです。) (仕様) 検索結果は10件ずつ1ページに表示させます。 10件以上の場合は、「次の10件」「前の10件」の ハイパーリンクを表示させ、移動出来るように します。(リダイレクトで同一ページに表示) (解らない事) 最初の10件を含め、どのようなロジックで 作れば良いかが解りません…。 現状は (1) for i = 1 to 10 オブジェクト(i) = DB.Rows(i).Item("項目") next と10件指定して1ページ目を表示させてる状態です。 (2) 検索結果の件数は取れています。 (3) Session仕様可、URLからパラメータを取得可 です。 どのようなロジックにすれば、汎用的な検索結果ページ になるのでしょうか?頭の中で、次へボタン押下時に+10 前の10件ボタン押下時に-10すればという考えはあるのですが、 前に進まず2週間が経ってしまいました…。 よろしければご指導お願いします。切に願いますtt
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- temtecomai2
- ベストアンサー率61% (656/1071)
あとはこんな記事もあります。 http://japan.internet.com/developer/20060620/25.html #1 の回答もこの記事も、全件を取得してからゴニョゴニョして表示する処理ではなく、必要な件数分だけを取得するものですね。 だから 「何件目から取得しているのか」 や 「何件分取得しているのか」 の情報は検索用の SQL でも使用するし、結果ページのナビゲート部分を描画するのにも必要になるので URL に記述するとかで良いんじゃないでしょうかね。 あとは、最大でも 5000件しかないのに 5000件目を表示している結果ページでも 「次の 50件」 とかのリンクは無意味ですから 「最大何件あるのか」 という情報も SQL を発行して取得しておき、ナビゲートの描画に利用すればよいかと。
- temtecomai2
- ベストアンサー率61% (656/1071)
何で悩んでいるのかよくわかりません。。。 全体の検索結果やトータル件数をどこぞに保持できているとして、URL のパラメーターに 「何件目から」 「何件分」 とかを持たせるとかは? 全件分を保持しておくのが辛いのなら毎回、 「何件目から何件目まで」 というクエリーと 「全体の件数は何件?」 てな 2つのクエリーを問いかけるとか。 下記 SQL は postalCode, pref, city, town という列を持つ postalCode テーブルに対して、pref が "北海道" というレコードの一覧を postalCode 列でソートした結果のうち 51件目~100件目を返すものです。(SQL Server 2005 から使えるやりかたっぽいです) with query as ( select ROW_NUMBER() over (order by postalCode) as num, postalCode, pref, city, town from postalList where pref='北海道' ) select num, postalCode, pref, city, town from query where num between 51 and 100 検索条件と between n1 and n2 の n1 と n2 をパラメータにしてストアド化しておくとか。 あとはこれとは別に件数を返す SQL も発行する。 検索結果ページに 50件ずつ表示するとして、ナビゲート部分に 「前の 50件」 「次の 50件」 とかのリンクを作るのであれば、今何件目から表示しているのかとか、あと何件あるのか、とかでリンクを作成すればいいと思います。