tetsunosukeのnotebook

tetsunosukeのメモです

ひとつのFormに二つ以上のsubmitがある場合の処理

自分としては

<input type="submit" name="submit1" value="一つ目の機能">
<input type="submit" name="submit2" value="二つ目の機能">

という形で書くのが筋だと思っています。

<input type="submit" name="submit" value="一つ目の機能">
<input type="submit" name="submit" value="二つ目の機能">

この形でもいいっちゃいいわけですが、これをやるとname="submit"で受け取った値が日本語になるため、文字コードが保証できなくなるケースが多いかなと。

ちょっと手抜きでCGI.pmな書き方をすると後者は

use CGI;
my $q = new CGI; 
my $func = $q->param("submit");
if($func eq '一つ目の機能'){
    &func1;    #func1の実行
} else if ($func eq '二つ目の機能') {
    &func2;    #func2の実行
} 
# 残り例外処理など...

とかけますね。でも、

use CGI;
my $q = new CGI; 
if(defined ($q->param("func1")){
    &func1;    #func1の実行
} else if(defined ($q->param("func2")){
    &func2;    #func2の実行
}
# 残り例外処理など...

これならソース内に日本語を使わなくてOKでしょう。

時に、ボタンが3つ以上あったら、どうしましょう。

思ったんだけどdefined使うよりはexists使ったほうがいいかも