重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

フォームからCGIへデータをsubmitで送信する方法ですが、例えば下記において、(1)に10(2)に20(3)に30と入力すると、A=10&B=20&C=30というデータが送信されると思います。
これを送信段階で新たにname="D"を定義し、D="Aは10、Bは20、Cは30"という一つのデータとして送信することは可能でしょうか?

(1)<INPUT size="10" type="text" name="A">
(2)<INPUT size="10" type="text" name="B">
(3)<INPUT size="10" type="text" name="C">

A 回答 (2件)

そもそもname=Dの定義というのは固定なのでしょうか?


それともname=Dに実際何か入力されるものがある(つまりランダム・任意)という事でしょうか?
また必ずname=Dのものは必須でしょうか?
というのは、文面を拝見しておりまして、D=(A=10&B=20&C=30)という形式が欲しいのであれば、
CGI側で固定で書いてしまえば?という風に安直に(^^;思ったのです。

新たにname=Dを定義する意図みたいなものが分かると、
もう少し解答しやすいのではないかと思ったので投稿させて頂きました。

お役に立てずにスイマセン。。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃるとおり、CGI側で書いてしまえばよいのです。
やりたい作業はCGIへ送った値(複数)を分解し、Dの部分だけ結合してsendmailを使ってそれぞれの値を送信するというものなのですが、どうもうまくいきませんでした。というわけで、今回の質問になったわけです。

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer,
$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$buffer);

foreach $pair (@pairs){
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/</&lt;/g;
   $value =~ s/>/&gt;/g;
   $value =~ s/"/&quot;/g;
   $value =~ s/\*//g;
   $value =~ s/^//g;
   $name =~ tr/+/ /;
   $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   &jcode'convert(*value,'sjis');
   &jcode'convert(*name,'sjis');

  $value2 = "$name:$value";-----(1)
push(@NEW,$value2);
   }-----(2)

$new = join("\n",@NEW);
この$newをSendmailで送りたいのですが、このままではD=(A=10&B=20&C=30)ではなく、A=10、B=20、C=30が送られてしまうので、(1)の前にifでA、B、Cは除いておき、(2)の後でA、B、Cを結合した値を@NEWにpushすればいいのかと思ったのですが、うまくいきませんでした。

基本的に間違っているでしょうか?

お礼日時:2003/03/07 22:00

<form ~ onsubmit="this.D.value='Aは'+this.A.value+'、Bは'+this.B.value+'、Cは'+this.C.value">


(1)<INPUT size="10" type="text" name="A">
(2)<INPUT size="10" type="text" name="B">
(3)<INPUT size="10" type="text" name="C">
<input type="hidden" name="D">

</form>

かな。

# 試してません
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
でも、うまくいかなかったです。

お礼日時:2003/03/07 08:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!