カレッヂ |
質問者 ロデオ
投稿日 2004/5/11(火) 12:21:48
過去にも同じような質問がありましたが、どうしてもうまくいきません。 簡易データベースで各ページ毎にソートをするのではなく、検索結果全体をソート したいのですが...。 http://www.rescue.ne.jp/CGI-BBS/database/database/20040504001530.shtml でのsim様の回答のように試してみましたが、どこに入れたらよいか分かりません。 こういう場合、検索結果全体を呼び出してソートをしてページ毎に分けるというような やり方でよいのでしょうか? 素人で申し訳ございませんが、宜しくお願いします。
プロバイダ参照: |
回答者 momo
[削除]
投稿日 2004/5/13(木) 22:37:07
初心者なのでたいしたことが言えませんが 過去のログのとおりにしても、全体でのソートはできません。 なぜならCGIのプログラム自体に問題があるからです。 このCGIでは 1.表示データを頭から検索する 2.該当結果が$pageに達すると、ストップ 3.HTMLにて結果を表示 4.「次へ」を押すと再び次の番号から「検索」 という流れなので、 まず、根本から直さないといけません。 ワタシも「何件HITしたか」を表示させたくて、改造しようかな・・・ と考えている最中ですので。。。 |
回答者 ともたん
[削除]
投稿日 2004/6/11(金) 22:50:20
以前、sim様にアドバイスをもらった者です。全体のソートは可能です。 しかも結構簡単です。 ただし、サーバの負荷が大きいようです。 search.cgiの62行目付近に if (!open(IN,"$file")) { &error( @BASE = <IN>; close(IN); という部分があります。 ここで、@BASEに登録データの全てがはいります。ここでソートしましょう。 if (!open(IN,"$file")) { &error( @abc = <IN>; @BASE = sort { (split(/,/,$b))[配列番号] <=> (split(/,/,$a))[配列番号] or (split(/,/,$b))[配列番号] <=> (split(/,/,$a))[配列番号] } @abc; close(IN); のように書き換えるだけです。 登録データが多くなるとサーバの負荷がかなり大きくなるようですので注意してください。 |
返信(回答)する
Web裏技 |