• ベストアンサー

アンケートフォームのvalueの値をCSVには数字で書き込み、確認画面では文字を表示したい。

アンケートフォームで以下のように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); }{

  • CGI
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答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} . 'です。'; というように参照できます。

misamisa_77
質問者

補足

ありがとうございます。 %kenmei = ( 1 => '東京', 2 => '大阪', 3 => '名古屋', ); の記述はサブルーチンの中に書けばいいのですか?うまく動作しませんでした。。。。 うーん。。わたしのやり方が間違ってるのでしょうねえ・・困りました・・

その他の回答 (2)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.3

> うまく動作しませんでした 具体的に、どうなったのでしょう。 また、その動作しなかったコードも載せていただくと、何か解ると思います。

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.1

単に <select name="ken"> <option value="1">東京 <option value="2">大阪 <option value="3">名古屋 </select> とすればいいだけでは?

関連するQ&A

  • セレクトエリアの地名を確認画面で表示したい

    地域別に変化する送料をvalueの値でJavaScriptで求めています。 そのため確認ページおよびメール送信で数値が表示されてしまいます。 そこで、value はJavaScript用としてPHP用にtitle を考えましたが読み込まないようです。 読み込む方法はありますでしょうか --------------- <form name="fom_1" method="post" action="order.php"> <table summary="ご注文"> <tr> <th>住所</th> <td><select name="ken" language=javascript onChange="return ken_onclick()"> <option value="" selected>都道府県名</option> <option value="0" title="北海道">北海道</option> <option value="1" title="青森県">青森県</option></select><br> <input type="text" name="address2" size="40" /></td> </tr> </table> </form> <?php $fileNameBase="order"; 〈省略〉 function genAdminMailBody(){ ■県名: $_POST[ken] ■住所: $_POST[address2] ---- 送信日時: $mdate; 送信者情報: $_SERVER[REMOTE_ADDR] "; return $message; } ?> 確認用 html <tr> <th>住所</th> <td colspan="2"><?=$_POST[ken]?><input name="ken" type="hidden" value="<?=$_POST[ken]?>" /><br> <?=$_POST[address2]?><input name="address3" type="hidden" value="<?=$_POST[address2]?>" /></td> </tr> --------------- ■県名: $_POST[ken.title] <td colspan="2"><?=$_POST[ken.title]?><input name="ken.title" type="hidden" value="<?=$_POST[ken.title]?>" /><br>

    • ベストアンサー
    • PHP
  • フォームの確認画面がうまく表示されません

    フォームで氏名を入力して確認画面を出したいのですが、 確認画面で、名前が出ずにソースがそのまま表示されます。 どうしてもわからないので、どなたかよろしくお願いします。 <script LANGUAGE="JavaScript"> <!--// function check(){ document.open(); document.writeln('<html>\n<head>'); document.writeln('<title>送信内容確認</title>'); document.writeln('</head>\n<body>\n<table>'); document.write('<tr>\n<td>名前:</td>\n<td>'); document.write('+document.kakunin.NAME.value+'); document.writeln('</td>\n</tr>\n</table>'); document.writeln('</body>\n</html>'); document.close(); } //--> </script> </head> <body> <form NAME="kakunin" action="mailto:aaa@hotmail.com" method="POST" enctype="text/plain"> 名前<input type="text" name="NAME"><br><br> <input type="button" value=" 確認 " onClick="check()"> </body>

  • PHPでフォームに表示させたCSVを更新したい

    現在以下のようなものを作っています。 1)csvファイル(内容は id,url,name )からデータを読み込み、 2)フォーム内のテキストフィールドに表示、 3)新規登録フォームからcsvのラストに1行増やす。 ここまではできたのですが、 4)テキストフィールドに読み込んだCSVデータの一部を修正する というのはどうすればいいのでしょうか? 現在、 $fp = fopen("link.csv", "r"); while ($linkdata = fgetcsv($fp, 1000, ',')){ list($a, $b, $c) = $linkdata; … }で、 <input name="id" type="text" value="$a"><input name="id" type="text" value="$b"><input name="id" type="text" value="$c"> こんな感じで表示されています。 チェックした行を削除というのと、 表示されたテキストフィールドの中を書き換えてsubmitで更新というのを作りたいのですが…

    • ベストアンサー
    • PHP
  • リストから遷移後、詳細画面のフォームにDBから読んだ値をセットしたい

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2170989 の続きです。回答くださったLancerVIIさんの方法で遷移した後、 各個人の詳細情報を表示する画面を作ったのですが、これは更新画面を兼ねています。 ここでDBから読み込んだ値を、ドロップダウンメニューやラジオボタンの 値としてセットしたいです。 ■イメージ (1) 会員ID(id):[ 1022 ] (2) 氏名(simei):[ 田中一郎 ] (3) 会員種別(syubetu):[  A  ]▼(ABCのドロップダウンリスト) (4) 都道府県(address):[ 大阪府 ]▼(47都道府県のドロップダウンリスト) (5) 性別(seibetu):◎男 ○女(男か女のラジオボタン) 氏名などは<input type="text" value="$simei">などと流し込めば良さそうかと 想像していますが、上でいう、(3)~(5)に適切な値をセットするのに 適切な値をセットするようにするにはどのような方法がありますか? 下記のように、読み込まれた値に応じてIF分岐すれば、できなくも なさそうですが、(4)(=47都道府県)の場合は47回も分岐しなければ ならなくなります。 if($syubetu == 'A'){   echo "<input type="radio" value="A" selected>";   echo "<input type="radio" value="B">";   echo "<input type="radio" value="C">"; }elseif($syubetu == 'B'){   echo "<input type="radio" value="A">";   echo "<input type="radio" value="B" selected>";   echo "<input type="radio" value="C">"; }else{   echo "<input type="radio" value="A" >";   echo "<input type="radio" value="B">";   echo "<input type="radio" value="C"selected>"; }

    • ベストアンサー
    • PHP
  • フォーム画面の文字を質問内容のように表示したい。

    javascriptでフォントサイズが変更できるようにしたフォームに文字を入力し、そのフォーム画面を残したままその文字を変更したフォントサイズで表示したいのですが、 (1)確認ボタンを押すとフォーム画面が消えるのを消えないようにしたい。 (2)表示する文字のフォントサイズの変更の仕方がわからない。 以上の2点の解決方法をご教示下さい? 宜しくお願いいたします。 <HTML> <HEAD> <STYLE type="text/css"> <!-- INPUT {font-size: 12px;} --> </STYLE> <SCRIPT language="JavaScript"> <!-- // フォームの文字の大きさを変更 function sizeTxt(n){ document.nForm.textN.style.fontSize = n.options[n.selectedIndex].value + "px"; } function check(){ var strName; strName = document.nForm.textN.value; document.write(strName); } //--> </SCRIPT> </HEAD> <BODY> フォントサイズを選択できます。 <FORM name="nForm"> <SELECT onChange="sizeTxt(this)"> <OPTION value="8">8px</OPTION> <OPTION value="10">10px</OPTION> <OPTION value="12" selected>12px</OPTION> <OPTION value="16">16px</OPTION> <OPTION value="20">20px</OPTION> <OPTION value="24">24px</OPTION> <OPTION value="30">30px</OPTION> </SELECT><BR><BR> <INPUT type="text" size="45" name="textN"><BR> <input type="button" value=" 確認 " onClick="check()"> </FORM> <SCRIPT language="JavaScript"> </SCRIPT> </BODY> </HTML>

  • フォームに表示される文字をセンタリングさせたい。

    Javascriptの初心者です。宜しくお願いします。 テキストエリアが2つあったとします。 1のテキストエリアにある値を入力してボタンを押すと、 2のテキストエリアに1で入力した値をそのまま表示させ、 尚且つ表示された値をフォーム内でセンタリングさせたいのですが どうすればよいのかわかりません・・・。 ご存知の方がいらっしゃいましたら教えて下さい。 どうぞ宜しくお願い致します。 <html> <head> <script language="JavaScript"> <!-- function my1() { a=document.form1.text1.value; document.form1.text2.value=a; } //--> </script> </head> <body> <form name="form1"> <input type="texterea" name="text1"> <input type="texterea" name="text2"> <input type="button" value="CLICK!" onClick="my1()"> </form> </body> </html>

  • 質問です!

    下記のように記述しました。 $jusyo_ken_meiをarray構文にしたのですが、沖縄しか出ません。 2345も出せるようにしたいのですがどうしたらいいですか? <body> <form method="POST" action="text.php"> <p><input type="text" name="T1" size="20" value="<?php echo $T1 ; ?>"></p> <p><select size="1" name="$jusyo_ken"> <?php $jusyo_ken_mei = array (1 =>"沖縄県" , 2 =>"北海道", 3 =>"東京", 4 =>"大阪", 5 =>"鹿児島"); if ($jusyo_ken == ""){ echo "<option value=\"\" selected>---</optin>"; }else{ echo "<option value=\"\">--- </optin>"; } if ($jusyo_ken == "$jusyo_ken_mei[1]"){ echo "<option selected>$jusyo_ken_mei[1]</option>"; }else{ echo "<option>$jusyo_ken_mei[1]</option>"; } ?> </select></p> <p> </p> <p> </p> <p> </p> <p><input type="submit" value="送信" name="B1"><input type="reset" value="リセット" name="B2"></p> </form> </body>

    • ベストアンサー
    • PHP
  • submitボタンにvalue属性の値でないラベルを表示したい

    submitボタンを複数設置し,全てのラベルに「これを修正する」と表示したいのですが, 下記のように押下されたsubmitボタン別に,POSTする値をそれぞれ1,2,3と分けたいです. (page.phpは,$_POST["PageNumber"]として1か2か3を受け取る) ですが,value属性の値がボタンのラベルとしてボタン表面に記されてしまい,困っています. 何とかならないでしょうか? <form method="post" action="page.php"> <input type="submit" name="PageNumber" value="1"></td></tr> <input type="submit" name="PageNumber" value="2"></td></tr> <input type="submit" name="PageNumber" value="3"></td></tr> </form>

    • ベストアンサー
    • HTML
  • phpのformのvalueの値が英語なのを漢字に変えて表示には。。

    もうひとつ質問させてください。 phpで、formのvalueの値を、 value="tokyo" value="oosaka" value="nagoya" としている場合、それを表示するときにはデータベースの値にtokyoと入っているところを"東京"、oosakaとはいっているところは"大阪"というように漢字に変えて表示したいとき、どのようにプログラムを書いたほうがよいのでしょうか? また、こういった場合、valueの値に直接 value="東京"などとしたほうがよいのでしょうか? 何かの本でvalueは英数のほうがよいというのをみて、無理に英語にしているのですが。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • foreachでループした変数を他のサブルーチンに受け渡す方法を教えてください。

    ループして変数に入る値を他のサブルーチンに渡すにはどのようにしたらいいのでしょうか?以下に記述を書きましたが、sub mainの中の$dataをsub htmlの中で表示させて、sub mainでループさせた値をすべてsub mailへわたしたいのです、hiddenタグで<input type=\"hidden\" name=\"all\" value=\"$all\">とやってもうまくいきませんでした。@inの中をループさせるので@inをそのままかけばいいのでしょうか?これもうまくいきませんでした。。ようはループさせた値をすべてメールで送信したいのです。どうしたらうまくできますでしょうか? sub main{ foreach(@in){ ($name1,$value1) = split(/=/,$_); $data="$name1 : $value1"; print "$data"; print "<br>"; } sub html{ print "Content-type: text/html\n\n"; print <<EOF; <html> <head> </head> <body> &main; <form action="" method=""> <input type=\"hidden\" name=\"all\" value=\"$all\"> <input type=\"submit\" value=\"送信する\"> </form> </body> </html> EOF } sub mail { ####省略しますが、ここはメールの送信の記述です。 }

    • ベストアンサー
    • Perl

専門家に質問してみよう