- ベストアンサー
検索インデックスを複数指定したい場合
お忙しいところ、お世話になります。 例えば、検索用のa href=にXXXXX.cgi?mode=list&index=10と指定していて cgiに対し、listとindex=10に合致するものをtargetに表示するようにしておりますが、index=40も必要な場合は、どのように記述すればよろしいでしょうか? ただ単にlist&index=10&index=40では、うまくいきません。 mode=list&index=10とmode=list&index=40の結果を合わせてtargetに表示させるように命令をおこないたいです。 ご教授よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
use CGI_Lite; my $cgi= new CGI_Lite; my $form= $cgi->parse_form_data(); とすれば、 my $p= $form->{index}; の $p は ARRAY へのレファレンスになり、 @$p に、10 と 40 が入ります。(順番は無保証)。 index=10 だけで CGI を呼ぶと、$p はスカラになります。 input type="checkbox" を複数設置したときと同じことです。
その他の回答 (4)
- moon_night
- ベストアンサー率32% (598/1831)
index=10-40 とした場合、$in{'index'}に 10-40と入るでしょうから、 (変数は適宜読み替えてください) @index = split("-",$in{'index'}); とすれば配列に入ります。 これを if ($index == $index[0] or $index == $index[1]) { #HIT } とかすればいいと思いますが(やり方はいろいろあります。元のソースによって処理が変わると思います)、 これで分かるんだったら質問してないよなぁと思うので、 詳しい解説は実際のソースがないと説明できません。
お礼
ご回答ありがとうございます。 返事が、送れて申し訳ありません。 上記のように書かれているものを一回変数で分ける 方法ですね。 参考になりました。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 index=10-40とした場合、 indexの値を変数に代入したときに10-40になりませんかね? それをさらに分解処理して配列なんかに入れればループで 受け取った数分出力できると思ったのですが。 受け取ったindexの分割処理が必要になります。 1.indexの内容を受け取る 2.「-」でindexの値を分割して、取得できたものを配列に。 3.配列の数ループを行い、順に取り出す(例の場合は10と40の二回繰り返すループ) ごめんなさい、perlはあまり使わなく、ソラでソースかけません。 >何か指定方法があったかなあと探しております。 これはもう設計次第じゃないですかね? 複数のindexを指定する場合は ・104030として受け取り側で2桁ずつ分割して処理(3桁に対応出来ない) ・10-40-60として-で分割して処理(何桁でもOK) ・10-40と「-」で区切った場合は10~40を表示(範囲指定) etc 設計次第でどうにでもなると思います。
- moon_night
- ベストアンサー率32% (598/1831)
そこだけ修正しても、 CGIの中身を修正しないと動かないと思いますが・・・?
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 言語が何だかわかりませんが、 .cgi?mode=list&index=10-40 という形にして indexを受け取ってから-で分割すれば10と40という値が取れると思います。 その10と40を使ってはどうでしょうか? 分割した数を変数に持っておけば、ループ処理にて実行できるので 3個以上になっても簡単に対応できると思います。
お礼
回答ありがとうございます。 すいません。PerlのCGIで作成しております。 内容的にはcgiがmodeとしてlistとindexの10と40を受け取れればよいのであっておりますが、指定が 10-40では10と40という値は取れませんでした。 何か指定方法があったかなあと探しております。
お礼
ご回答ありがとうございます。 返事が、送れて申し訳ありません。 input type="checkbox" を複数設置の場合と同じようにする考えは思いつきませんでした。 参考URLは内容が長いので、ちょっときついですけど、 がんばります。 また、ご教授よろしくお願いします。