• ベストアンサー

検索インデックスを複数指定したい場合

お忙しいところ、お世話になります。 例えば、検索用の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に表示させるように命令をおこないたいです。 ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.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" を複数設置したときと同じことです。

参考URL:
http://search.cpan.org/~shgun/CGI_Lite-1.8/CGI_Lite.pm
robben1234
質問者

お礼

ご回答ありがとうございます。 返事が、送れて申し訳ありません。 input type="checkbox" を複数設置の場合と同じようにする考えは思いつきませんでした。 参考URLは内容が長いので、ちょっときついですけど、 がんばります。 また、ご教授よろしくお願いします。

その他の回答 (4)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

index=10-40 とした場合、$in{'index'}に 10-40と入るでしょうから、 (変数は適宜読み替えてください) @index = split("-",$in{'index'}); とすれば配列に入ります。 これを if ($index == $index[0] or $index == $index[1]) { #HIT } とかすればいいと思いますが(やり方はいろいろあります。元のソースによって処理が変わると思います)、 これで分かるんだったら質問してないよなぁと思うので、 詳しい解説は実際のソースがないと説明できません。

robben1234
質問者

お礼

ご回答ありがとうございます。 返事が、送れて申し訳ありません。 上記のように書かれているものを一回変数で分ける 方法ですね。 参考になりました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 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)
回答No.2

そこだけ修正しても、 CGIの中身を修正しないと動かないと思いますが・・・?

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 言語が何だかわかりませんが、 .cgi?mode=list&index=10-40 という形にして indexを受け取ってから-で分割すれば10と40という値が取れると思います。 その10と40を使ってはどうでしょうか? 分割した数を変数に持っておけば、ループ処理にて実行できるので 3個以上になっても簡単に対応できると思います。

robben1234
質問者

お礼

回答ありがとうございます。 すいません。PerlのCGIで作成しております。 内容的にはcgiがmodeとしてlistとindexの10と40を受け取れればよいのであっておりますが、指定が 10-40では10と40という値は取れませんでした。 何か指定方法があったかなあと探しております。

関連するQ&A