CGI-BBS > CGI > Perl > <select multiple>の扱い


カレッヂ
カレッヂ


質問者 ぴらおか  投稿日 7/21(土) 15:46:39
初めて質問させていただきます。
HTMLの<select>タグでいくつでも選択できるmultipleオプションをつけて
データを送って$ENV{'CONTENT_LENGTH'}から読み込むと
name=10&name=20&name=30
のように<select>で指定したnameがずらずら並んでしまいますよね。
<select>だけでなくほかのデータを混在させて送るときに
<select>のデータのみ適当な配列に放り込むようなエレガンスな方法は
無いでしょうか?(&ReadParseのような)

現在はエレガンスとは程遠い自作の関数で処理してます(^^;
回答者 yaku sima  [削除]  投稿日 7/26(木) 01:02:40
話を聞くとCGIモジュールで実現されていないんですね。(わたしはCGIモジュールがどうも気持ち悪いので、(^_^; 使ったことないです。)

まず、ぴらおかさん、自作の関数をよろしければ、見せてくれませんか。後からの操作を変えるのも面倒でしょうから。

でも、いとおう、私が自作の関数で操作するなら、QUERY_STRINGを引数にして、この値を&でsplitした配列をmapして、map内での$_を=でsplitして、このときの$1をキーにするハッシュを作り、$2をこのキーの値にする。このとき、$1がnameなら、このハッシュ表のnameなるキーの名無しの配列に入れる。そして、できたハッシュのリファレンスを返すような関数になるのでしょうか。よくありそうなかたちでしょうか。私ならこのようにするかもしれません。

CGIモジュールを継承して、ReadParseを再定義するってのもありますかね。
質問者 ぴらおか  [削除]  投稿日 8/5(日) 15:14:19
ありがとうございます。
自作の関数も、ほぼyaku simaさんのものとそっくりです。
(っていうか、やっぱ方法としてはこれくらいしかない?)
どうもでした!

このページは終了したので返信(回答)は書きこめません

Web裏技