Perlで、HTMLページ内のチェックボックスがチェックされているか調べ、
「もしチェックされていたら○○する」という if文を書きたいのですが、
どう書けばいいのでしょうか?
テキストに入力された文字列を取得することもしているので、これを邪魔しないように
なるべくシンプルに書く書き方を教えてください。
チェックボックスやテキストは、こんな感じで書いています。
<input type="checkbox" name="uwagaki">上書きする
ファイル名 <input type="text" name="FileName" size=20 value=$FileName>
テキストの入力の取得はこんな感じ。。。
use CGI;
$FileName = param('FileName');
よろしくお願いします。
最近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のページは
・ダウンロード先は
まず、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文の条件式はどうやって書いたらいいのでしょう?
# 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
最近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のページは
・ダウンロード先は
ありがとうございます。
明日試してみます。m(_"_)m
ありがとうございます。
明日試してみます。m(_"_)m