![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
アンケートフォームで以下のようにoptionタグのvalueの値は東京、大阪、名古屋という風に確認画面で表示し、CSVには、東京なら1、大阪なら2名古屋なら3というふうに書き込めるようにしたいのですが、やり方がわかりません。valueの値を文字にしてしまうと当然CSVには文字が入ってしまい、valueの値を数字にしてしまうと確認画面は数字になってしまいます。。
このような場合どういう記述のしかたがありますでしょうか。ご教授願います。よろしくお願いします。
sub page3{
print <<"EOF";
Content-type: text/html
<html>
<head>
<meta content="text/html; charset=shift_jis">
<title></title>
</head>
<body>
<form method="post" action="$script">
□出身地はどちらですか?<br>
<select name="ken">
<option value="東京">東京
<option value="大阪">大阪
<option value="名古屋">名古屋
</select>
<input type="hidden" name="action" value="kakunin">
<input value="送信" type="submit"><br>
<input value="リセット" type="reset">
</form>
</body>
</html>
EOF
}
#確認画面
sub kakunin{
~
}
#CSVに書き込む
sub csv{
open(FILE, "<$file") or &err2('エラーです。');
@lines= <FILE>;
close(FILE);
unshift(@lines,"$ken\n");
open(OUT, "+<$file") or &err2();
print OUT @lines;
close (OUT);
}{
No.2ベストアンサー
- 回答日時:
このような場合、またこのような場合でなくても、データ処理の基本として共通値を持つ項目にはIDをふって扱います。
つまり、おっしゃるように、
1 東京
2 大阪
3 名古屋
……
と数値で扱い、保存しておくという事です。
フォームは以下のようにします。
<select name="ken">
<option value="1">東京
<option value="2">大阪
<option value="3">名古屋
</select>
で問題は、確認画面などで表示する際はIDではなく都道府県名を表示したい、という方法ですが、都道府県名とIDが対になったテーブルを用意しておくのが一般的です。
たとえばハッシュを用意しておくのが一番効率的でしょう。
%kenmei = (
1 => '東京',
2 => '大阪',
3 => '名古屋',
);
※他のスクリプトでも共通だとか、数が多い場合は、ファイルにしておく。
こうしておけば、あとは、
print '選択された都道府県は ' . $kenmei{$ken} . 'です。';
というように参照できます。
この回答への補足
ありがとうございます。
%kenmei = (
1 => '東京',
2 => '大阪',
3 => '名古屋',
);
の記述はサブルーチンの中に書けばいいのですか?うまく動作しませんでした。。。。
うーん。。わたしのやり方が間違ってるのでしょうねえ・・困りました・・
No.1
- 回答日時:
単に
<select name="ken">
<option value="1">東京
<option value="2">大阪
<option value="3">名古屋
</select>
とすればいいだけでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
CGIは初心者です。よろしくお願...
-
Application.ScreenUpdating = ...
-
int(input("○○"))の使い方
-
PerlでXMLを解析して出力する。
-
PICで世界時計を作りたいのですが
-
整数でないとき
-
CGI メールフォームからBCCのア...
-
CGI初心者です
-
1つのプログラム内で"html出力...
-
確認画面に空白がでます
-
optionのselectedは更新時は効...
-
perlがうごきません
-
awkの正規表現での最左最短マッ...
-
javaのパッケージ構成で各パッ...
-
実行時エラー 3020の対策
-
前日の日付取得するには?
-
フォーム選択後のリンクを作る方法
-
Use of uninitialized value ---
-
メール送信のFromアドレスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
フォームで入力した値を表示し...
-
Perlでアルファベットを数...
-
Perl/CGIでスロットマシンを作...
-
【C#】数値の範囲チェックについて
-
途中まで出来ているのですが‥(D...
-
map(STL)でinsertを行いたいで...
-
リロード後にプルダウンの選択...
-
パターンマッチで変数でマッチ...
-
cout, 小数点以下2桁を表示す...
-
半角スペースが有効にならない。
-
Excel VBAで行追加後の...
-
ラズパイで感圧センサーを動か...
-
複数行URLエンコードができるCG...
-
アンケートフォームのvalueの値...
-
linq で 楽天ウェブサービスのX...
-
デコードできない時があります><
-
このCGIサブルーチンを解説して...
-
CGIからメールに書き出しする際...
おすすめ情報