はじめましてこんばんはm(_ _)m
いろいろ検索してみましたが解決出来ませんでしたので何卒ご教授願います。
あるフリーのcgiを利用させてもらっているのですが一部改造したいと思っております。
cgiはフォームメール用で以下のプログラムによってhtml側のデータを読み取ってくれます。この時にhtml側のデータを全て読み取ってくれるのですが一部のみを抜粋して上から順に表示させたいと思います。
例えばhtml側が以下の3項目でこの順番だとして()内はNAMEです。
【html側】
質問=NAME属性(A)
名前=NAME属性(B)
電話=NAME属性(C)
これをメールで受け取った時に以下のメール文のようにNAME属性(B)が先頭に来るようにしたいのです。
【メール文】
(B)= 山田太郎
(C)=0123456789
(A)=好きな食べ物はイチゴ
(B)の行が上から何番目という様に指定する方法では出来るのですが複数ファイルがあり(B)の行番号が変動する為指定出来ません。
【html側】が以下のようになっているとして以下のプログラムはどのように指定すればよろしいですか?当方初心者の為質問内容が分かりにくいかと存じますが何卒よろしくお願いいたします。
質問=NAME属性(A)
名前=NAME属性(B)
電話=NAME属性(C)
foreach (0..$count-1) {
if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; }
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
HTML側の並び順で入力データが送られて来ることを期待して、ということであれば、
foreach (0..$count-1) { の前に、
push(@DATA_N,shift @DATA_N);
push(@DATA_V,shift @DATA_V);
を挿入すればよろしいかと思います。
okmotokun 様
度々のご指導ありがとうございます。プログラム追加してみましたところ1行目が最終行になりました!他にもいろいろいじってみたところ値のみが1行ずれたり項目のみがずれたり反対になったりといろいろ便利なプログラムなようです。教えていただき感謝いたします。
後、厚かましいようで大変申し訳ございませんがHTML側のソースが以下のように質問1~質問100くらいあり(この質問数は101個になったりいろいろ変動します)その後に名前や住所が来るのですがこの状況(住所の後も項目数が変動します)で【名前項目を最上部に持ってきて】その他の項目は表示順にさせたいのですが可能でしょうか?cgiプログラム1つを修正無しで使いまわして多数のHTMLページに対応させたいです。
何卒ご指導宜しくお願いします。
【HTMLソース】
<HTML>
<BODY>
<FORM method="POST" action="mailform.cgi">
質問1<INPUT SIZE="50" TYPE="text" NAME="q1">
~中略~
質問100<INPUT SIZE="50" TYPE="text" NAME="q100">
メールアドレス:<INPUT SIZE="50" TYPE="text" NAME="email">
名前<INPUT size="58" type="text" name="Name">
住所1<INPUT SIZE="50" TYPE="text" NAME="add1">
住所2<INPUT SIZE="50" TYPE="text" NAME="add2">
</FORM>
</BODY>
</HTML>
No.1
- 回答日時:
フォームに入力されたデータは、HTMLでの並び順(行番号順)に送られて来るとは限りません。
したがって、HTMLでの行番号順にメール本文を整形しても意図したようになるとはいえません。
データは、「識別名=入力値」という形で、これを「&」記号で繋げて送られてきます。
この場合ですと、A=質問&B=名前&C=電話 というふうに送られて来るわけです。順番は変わるかも知れません。
ですから通常は、フォーム要素の識別名(NAME)と同じ変数名に入力値を代入して後の処理するようにしています。
あるフリーのcgiを利用しているとのことですが、お使いのスクリプトはそのようになっていませんか。
okmotokun 様
早速のご指導ありがとうございます。すごく参考になります。
フリーのcgiは
&jis("--- ここから ---"); print OUT "$msg\n\n";
$count = @DATA_N;
foreach (0..$count-1) {
if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; }
}
&jis("--- ここまで ---"); print OUT "\n$msg\n";
となっております。これで一応HTML側の並び順でメールが送られて来ます。この場合どの様に記述を変更すればB=名前が一番上にきてそれ以外がHTML順に並びますか?
度々申し訳ございませんがご指導宜しくお願いしますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
申込みフォームの内容をメール...
-
フォームメールの送信日時設定方法
-
ひとことメッセージって・・・
-
自動返信メール機能付きのCGIフ...
-
ビジネスメールの敬称
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
指定した演算を実施の結果を表...
-
テキストボックスの番号を使っ...
-
お問い合わせフォームから送信...
-
excel vba でユーザーフォーム...
-
DATE型変数を初期化する方法
-
VBAでInputBoxの再入力をさせる...
-
Excel-VBAでInputBox+Pulldown...
-
DataGridView 列ごとの入力制限
-
教えて!全角文字「μ」の半角
-
Googleフォームを回答したか確...
-
accessで該当するレコードがな...
-
TETXの入力制限について色々と…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページでCGIのフォームを...
-
サーバーのエラーでおしえてく...
-
CGIのメールフォームを、ウェブ...
-
ホームページの事でおしえてく...
-
DWでメールフォームを作りたい!
-
文字化けについて(フォーム送信)
-
postmailを使って日本語と英語...
-
cgi
-
申込みフォームの内容をメール...
-
CGIフォームに書いてある @ が...
-
送信フォームの全角文字情報がc...
-
一言メールフォームを設置したい
-
FC2のメールフォームの設置方法...
-
【GAS】Gmail本文をブラウザ表...
-
postmail フォーム複数設置に関...
-
KENTさん clipmail.cgiの携帯...
-
投稿フォームのアドレスを知る...
-
メールフォームCGIの設置方法に...
-
自動返信文に余計な文字が入る
-
フォームメールの送信日時設定方法
おすすめ情報