• ベストアンサー

変数名をフォームの値から設定したい

フォーム上でアンケートを集計するプログラムを書いています。 年代、性別、回答という項目があり、各回答につき、年代と性別別の表を出力するものです。 IF文でやれば出来るのですが、プログラムを極力短くするために、フォームの回答から一定の変数を書き出して計算させる方法を考えています。 例えば30代の男で1番に回答があった時には、データは"age=30&sex=man&ans=1"という具合で渡されてくるので、これを並べて変数名として扱い、変数"$30man1"に1をプラスするというようなことを行いたいのですが、試行錯誤してもうまくいきませんでした。 文字列を並べた値を変数名として認識させるところがダメなようです。 可能であれば、方法をご存じの方、お教えいただければ幸いです。 よろしくお願いします。

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

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

文字列を変数名として使うには、シンボリックリファレンスと言う機能を使います。   ${"文字列"} とすれば、この「文字列」を変数名として   ${"文字列"} = 10; のように使うことができます。 ところが   ${"30man1"} は、変数名が数字で始まることになってしまうので、必ず文字になる値を先頭に持ってくるか、ダミーで1文字入れるかしないとだめです。 ところで、これはPerlの話でよいのでしょうか? CGIを作っているのだとしても、言語の問題で質問するなら、そちらのカテゴリで質問すべきですよ?

その他の回答 (1)

回答No.2

連想配列でいきましょう。

関連するQ&A

  • accessVBAでフォームのコントロール名に変数を入れたいのですが・・・

    フォームのコントロールを指定する際に変数を利用したいと考えております。 具体的には dim area,pub,age,name as string area = "tokyo" pub = "調布" age = "29"  '入力しもらった値 name = "田中" '入力しもらった値 Forms(area).Controls(city) = Forms(age).Controls(name)  上記の例は適当に指定しましたが 何がしりたいかというと「Forms(area).Controls(city)」この表現が うまく指定されません。 Controlsには変数は指定できないのでしょうか? 指定できるのであれば何か原因はあるのでしょうか? 逆に指定できないのであれば、いい方法を教えてください。

  • テキスト名を変数に入れる

    フォームでテキストに値を入れるモジュールを作成しています。 テキスト名を変数に入れ値を入れる方法を教えてください。 txtZ という名前のテキストに "A" という値を入るとすると... 通常であれば、 Forms!フォーム名!txtZ.Text = "A" と、するところ Dim strText as String strText = txtZ Forms!フォーム名!strText.Text = "A" という感じで、txtZ に値を入れたいです。 教えてください

  • C#でフォームのオブジェクト名を変数名で指定

    C#でフォームのオブジェクトを変数名で指定するにはどうしたらよいでしょうか? 例えば、フォームにラジオボタンrdo0~rdo9と、 それぞれに対応するテキストボックスtxt0~txt9が用意されている状態で、 rdo1がチェックされていたらtxt1に"OK"と表示、 rdo2がチェックされていたらtxt2に"OK"と表示・・・ といったことをfor文で実現する場合どのようにしたらよいでしょうか? 変数をオブジェクト名として認識させるための方法がわかりません。 どなたかご教授願います。 ********************************************* for(int i=0;i<10;i++) {  rdoname = "rdo" + i;  txtname = "txt" + i;  if((何らかの処理?)(rdoname).checked)   (何らかの処理?)(txtname).txt = "OK"; } **************************************** ↑この、オブジェクトとして認識する為の「何らかの処理」部がわかりません。

  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。

  • 変数名をプログラム中で作成して値を取り出す方法

    perlで変数名をプログラム中で作成して、その変数の値へアクセスする方法は、どのようにしたらよいのでしょうか? 例えば以下のスクリプトで、var_valueという変数名をプログラムで生成し、その値「12345」を取り出したい、というものです。 ================================ #! /usr/bin/perl $var_value ="12345"; $tmp1 = "var"; $tmp2 = "value"; $tmp3 = $tmp1."_".$tmp2; # $tmp3にvar_valueという文字列を作成              # print "tmp3 is $tmp3";  # 本当は$tmp3自体ではなく、$var_value=12345を取り出したい。。。 ================================ 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • アンケートの集計について

    クセルでA列に部署名、B列に年代、C列に性別、Ⅾ列~H列に質問を5問入れ回答として1~4までの数値を入れてあります。 集計として年代別、性別毎に質問に対する人数を計算したい。 例として 1、質問1で30代男性が1と回答した人数は何人か   年代、性別毎に1から4と回答した人の人数を計算したい。   質問1~5までを同時に集計したい。 ピボットテーブルでの集計方法と関数を使用した方法があれば教えてください。

  • コマンドボタン名の設定で

    お世話になります。 現在EXCELシート上に複数のコマンドボタンを置き、 そのコマンドボタン名をセルの値からとってこようとしています。 これがVBの考えでしたら ************************************************* Dim i as integer 'ループ用変数 '対象セルに値が存在しなくなるまでループ Do While Worksheets("Sheet1").Cells(i, 1) <> "" 'セルの値をコマンドボタン名に代入 Worksheets("Sheet1").CommandButton(i).Caption = Worksheets("Sheet1").Cells(i, 1).Value i = i + 1 Loop ************************************************* のようにできるのではないかと考え、いろいろと試行錯誤しているのですがうまくいきません。 VBAではこのようなやり方はできないのでしょうか? vbのように変数名でループさせるということは出来ないというような情報もあるのですが、出来ればこの考えに似たような感じのプログラムの組み方がしたいと考えております。 どなたかご教授よろしくお願いいたします。

  • PHPでFORMから来る変数名を変数にするには

    PHPでFORMから来る変数名を変数にするにはどうしたらよろしいでしょうか? 可変変数など調べたのですが、値を変数にすることは出来ても変数名を変数にする事は難しいようです。 <form action="reg.php"> <input type = "text" name = "comment"> <input type = "submit"> </form> このform内のnameが動的に変わるプログラムで,reg.phpにおいて名前(今ならcomment)を変数に格納したいと思っています。 reg.php 本来なら $comment = _REQUEST['comment']; とすると思うのですが、commentが動的に変動する場合、_REQUEST内をどう書き換えれば良いかが分からず困っています $dynamic_name = _REQUEST['ここをどう書けばよいでしょうか'] このことを考えてから今はform内ですが、formでなくてもどうやって書いてよいか分からず疑問に思いました 例えば $test = 'abc'; としたとき $test_name にtestという文字列を入れたい場合(つまりabcの変数名)どうやって入れたらよいのでしょうか?(もちろんtestと言う名前は動的に変わります) 詳しい方いらっしゃいましたらご回答いただければと思います。 良いアドバイスございましたら教えてください よろしくお願いします

    • 締切済み
    • PHP
  • classファイル内の変数名について

    2つのclassファイルをそれぞれ逆コンパイルして内容を確認したところ、 以下のように、それらしい変数名と機械的に振られたような変数名になっていました。 ・A.class → A.java  String atai = "aaa"; ← 元のプログラムと同じ変数名(atai)   ・B.class → B.java  Stinrg s1 = "aaa"; ← 機械的に振られている変数名(s1) コンパイル方法の違いで変数名が機械的になってしまうことがあるのでしょうか。 作業担当者が居なくなってしまって、当時の状況を確認することができません。 多分、同じソースファイルのはずなのですが、本当に同じ内容なのか 比較したいのに、微妙な違いがあるため比較ができなくて困っています。 引数も微妙に違っているようなので、それらしい変数名か機械的なものか どちらかに統一させてデコンパイルする方法があったら教えてください。 また原因も知りたいです。 アドバイスをお願いします。

    • ベストアンサー
    • Java
  • ACCESSのフォームからレポートへの変数の引渡し

    フォームで定義した変数をレポートに渡して利用したいがうまく渡せません。 具体的にはクエリー名をレコードソースとして利用するために変数に入れて渡そうとしています。 [フォーム]での変数定義 Dim 抽出種別 as String -----(1) 抽出種別 = "Q抽出未回収" -----(2) [レポート]開く時のイベントプロシージャー Private Sub Report_Open(Cancel As Integer) Me.RecordSource = 抽出種別 -----(3) End Sub 実行結果は印刷の各フィールドの項目に #Name? と表示されてしまいます。 (3)で変数を使わずに"Q抽出未回収"とやるとうまくプレビューされます。 変数の定義の方法や場所などいまいち理解が出来ていないものと思います。 フォームからレポートへの変数の引渡しはどうやってやればうまく出来るのでしょうか?

専門家に質問してみよう