人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl初級者です。

Perlで、HTMLページ内のチェックボックスがチェックされているか調べ、
「もしチェックされていたら○○する」という if文を書きたいのですが、
どう書けばいいのでしょうか?

テキストに入力された文字列を取得することもしているので、これを邪魔しないように
なるべくシンプルに書く書き方を教えてください。


チェックボックスやテキストは、こんな感じで書いています。

<input type="checkbox" name="uwagaki">上書きする
ファイル名 <input type="text" name="FileName" size=20 value=$FileName>

テキストの入力の取得はこんな感じ。。。

use CGI;
$FileName = param('FileName');

よろしくお願いします。

●質問者: uta_at_home
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI HTML Perl いるか シンプル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●50ポイント

まず、HTML側で value を設定してください。たとえば

<input type="checkbox" name="uwagaki" value="書きする">上書きする

のようにしてください。


Perl側は下記のようにして受け取ります。こうすれば、name は同じで value が異なる chekbox の value の内容を配列 uwagaki に代入していきます。

use CGI;

$obj = new CGI;

push(@uwagaki, $obj->param('uwagaki'));

◎質問者からの返答

ありがとうございます。

ちょっとやってみたのですが、うまく取り出せませんでした。

if( $uwagaki[0] ){

$result = "YES";

}

とやっても、

if( @uwagaki ){

$result = "YES";

}

とやっても、$resultは"YES"になってくれませんでした。

IF文の条件式はどうやって書いたらいいのでしょう?


2 ● shintabo
●50ポイント

# http://modperlis.bounceme.net/work/checkbox.html

# post to cb.cgi

#!/usr/bin/perl

use strict;

use warnings;

use CGI;

my $cgi = CGI->new();

my @cb = $cgi->param('cb');

print "Content-type:text/html\n\n";

if (@cb) {

print "YES<br>\n";

} else {

print "NO<br>\n";

}

for (@cb) {

print "val => $_<br>\n";

}

exit;

# OK?

◎質問者からの返答

ありがとうございます。

明日試してみます。m(_"_)m


3 ● Catfish
●50ポイント ベストアンサー

最近WEB開発をやっていないので、うろ覚えな感じは否めないのですが、

記憶をたどると、以下のようになります。


上の回答のソースだと、'uwagaki'の値として'書きする'が当てられます。



送信ページのフォームで、


<input type="checkbox" name="uwagaki" value="上書きする">上書きする

<input type="checkbox" name="uwagaki" value="さらに上書きする">さらに上書きする


と、同じnameで2つのデータを送信した場合、


use CGI;

$obj = new CGI;

push(@uwagaki, $obj->param('uwagaki'));



で、フォームデータを読み取ると、


'$uwagaki[0]' の値は '上書きする'

'$uwagaki[1]' の値は 'さらに上書きする'


になります。


ただし、サーバーのPERLにCGIモジュールがインストールされている場合です。


CGIモジュールの解説はここが分かり易そうです。

http://www.futomi.com/lecture/form/cgi-pm.html

詳細な解説は

http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod



自分でフォーム内容を取り込むなら、同じホームページの下記の記事を参考にしてください。

ここの実例のラジオボタンの「input type="radio"」を「input type="checkbox"」置き換えれば同じです。

http://www.futomi.com/lecture/form/index.html


cgi-lib.plを使用した場合は、サーバーの環境を選ばないので、お勧めです。

動作させるCGIのファイルと同じフォルダに、'cgi-lib.pl'をコピーしておけば使用できます。

・解説は

http://www.futomi.com/lecture/form/cgilib.html

http://www.webkoza.com/doc1/perl_g.htm

http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page...

・cgi-lib.plのページは

http://cgi-lib.berkeley.edu/

・ダウンロード先は

http://cgi-lib.berkeley.edu/2.18/cgi-lib.pl.txt

◎質問者からの返答

ありがとうございます。

明日試してみます。m(_"_)m

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ