質問編集履歴

2 編集

退会済みユーザー

退会済みユーザー

2016/10/01 17:38  投稿

[PHP]フォームを追加した場合のデータの受け渡し送信について
htmlとphpを使ってメールフォームを作っています。
[html側]
```ここに言語を入力  
<form id="contact-form" action="./check.php" method="post">
 <input type="hidden" name="sub_actions" value="confirm">
 <h3>Ordr Form</h3>
 <ul>
   <li>
     <label for="NAME">NAME</label>
     <br>
     <input type="text" id="order_title" name="order_title" size="60" value="">
   </li>
   <li>
     <label for="E-MAIL">E-MAIL</label>
     <br>
     <input type="text" class="required email" name="e_mail" size="60" value="">
   </li>
   <li>
     <label for="ADDRESS">ADDRESS</label>
     <br>
     <input type="text" class="required address" name="address" size="60" value="">
   </li>
   <li> ITEM NUMBER(* multiple possible)<br>
     <ol id="item_num">
       <li><input type="text" class="required item" name="item_num_0" size="30" value=""></li>
     </ol>
     <input type="button" value="Additional items" id="btn_add">
   </li>
   <li>
     <label for="ADDRESS">INQUIRY</label>
     <br>
     <textarea name="comment" rows="4" cols="60"></textarea>
   </li>
 </ul>
 <div class="bt">
   <input type="submit" value="confirmation screen" name="submit">
 </div>
</form>
```  
[JavaScript側]
```ここに言語を入力  
// JavaScript Document
jQuery(document).ready(function($) {
 var prefix_order_list = 'item_num_'; // 品目入力欄のname属性の接頭辞
   // "品目の追加"ボタンを押した場合の処理
   $('#btn_add').click(function(){
       // 品目入力欄を追加
       var len_list = $('#item_num > li').length;
       var new_list = '<li><input type="text" size="30" name="' + prefix_order_list + len_list + '"></li>';
       $('#item_num').append(new_list);
       // 削除ボタンの一旦全消去し、配置し直す
       $('#item_num input[type="button"]').remove();
       len_list++;
       for (var i = 0; i < len_list; i++) {
           var new_btn = '<input type="button" value="delete">';
           $('#item_num > li').eq(i).append(new_btn);
       }
           
   });
   // 削除ボタンを押した場合の処理
   $(document).on('click', '#item_num input[type="button"]', function(ev) {
       // 品目入力欄を削除
       var idx = $(ev.target).parent().index();
       $('#item_num > li').eq(idx).remove();
       var len_list = $('#item_num > li').length;
       // 入力欄がひとつになるなら、削除ボタンは不要なので消去
       if (len_list == 1) $('#item_num input[type="button"]').remove();
       // 入力欄の番号を振り直す
       for (var i=0; i<len_list; i++) {
           $('#item_num > li').eq(i).children('input[type="text"]').attr('name', prefix_order_list + i);
       }
   });
});
```  
[php側(内容確認画面)]
```ここに言語を入力  
<?php
if(!$_POST){
header('Location: http://xxxx.xxxxx.com/');/
   }
session_start();
$_SESSION = $_POST;
 
echo '<pre>';  
print_r($_SESSION);  
echo '</pre>';  
 
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Order confirmation</title>
</head>
<body>
<form id="contact-form" action="./send.php" method="post">
                   <input type="hidden" name="sub_actions" value="confirm">
                   <table>
                   <tbody>
                   <tr>
                   <th>NAME</th>
                   <td><?php echo htmlspecialchars($_POST['name']);?></td>
                   </tr>
                   <tr>
                   <th>E-MAIL</th>
                   <td><?php echo htmlspecialchars($_POST['e_mail']);?></td>
                   </tr>
<tr>
                   <th>ADDRESS</th>
                   <td><?php echo htmlspecialchars($_POST['address']);?></td>
                   </tr>
                   <tr>
                   <th style="vertical-align:top;">INQUIRY</th>
                   <td><?php echo htmlspecialchars($_POST['comment']);?>
                   </td>
                   </tr>
                   </tbody>
                   </table>
                   
                   <div class="bt">
                   <p>PCやスマホのメールフォームの修正ボタンなんかhistory.back()で十分!</p>
                   <a href="javascript:history.back();">
<input type="button" value="戻る">
</a>
                   <input type="submit" value="送信" name="submit">
                   </div>
                   </form>
```  
[php側(送信画面)]
```ここに言語を入力  
<?php
$add_header="From:xxxxx.xxx@gmail.com\r\n";
$add_header   .= "Reply-to: xxxxx.xxx@gmail.com\r\n";
$add_header   .= "AAAA". phpversion();
$opt = '-f'.'xxxxx.xxx@gmail.com';
$message =<<<HTML
It is a confirmation of the order content.
[1.NAME]
{$_SESSION['name']}
[2.E_MAIL]
{$_SESSION['e_mail']}
[3.ADDRESS]
{$_SESSION['address']}
[5.INQUIRY]
{$_SESSION['comment']}
After confirming the order details, we will contact you than the person in charge.
Please wait a moment.
HTML;
// カレントの言語を日本語に設定する
mb_language("ja");
mb_internal_encoding("UTF-8");
mail($_SESSION['e_mail'],"AAA[Order] confirmation e-mail",$message,$add_header,$opt);
//mb_send_mailは5つの設定項目がある
//mb_send_mail(送信先メールアドレス,"メールのタイトル","メール本文","メールのヘッダーFromとかリプライとか","送信エラーを送るメールアドレス");
//マスター管理者にも同じメールを送る
mail('xxxxx.xxx@gmail.com',"お問い合わせがありました",$message,$add_header,$opt);
session_destroy(); // セッションを破棄
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Order Form Sent completed</title>
</head>
<body>
<p>Sent completed</p>
</body>
</html>           </form>
</body>
</html>
```  
これは、注文フォームに必要事項を入力して送信するプログラムです。
ITEM NUMBERでは入力フォームが追加削除できます。
ここで、複数フォームを追加して数値や文字列を追加した場合で、[php側(確認画面)]で追加分も画面に表示し
[php側(送信画面)]で追加分をメールに表示させるにはどうしたらいいでしょうか?
  • PHP

    33762 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    31707 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    20043 questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1 編集

退会済みユーザー

退会済みユーザー

2016/10/01 17:33  投稿

[PHP]フォームを追加した場合のデータの受け渡し送信について
htmlとphpを使ってメールフォームを作っています。
[html側]
<form id="contact-form" action="./check.php" method="post">
 <input type="hidden" name="sub_actions" value="confirm">
 <h3>Ordr Form</h3>
 <ul>
   <li>
     <label for="NAME">NAME</label>
     <br>
     <input type="text" id="order_title" name="order_title" size="60" value="">
   </li>
   <li>
     <label for="E-MAIL">E-MAIL</label>
     <br>
     <input type="text" class="required email" name="e_mail" size="60" value="">
   </li>
   <li>
     <label for="ADDRESS">ADDRESS</label>
     <br>
     <input type="text" class="required address" name="address" size="60" value="">
   </li>
   <li> ITEM NUMBER(* multiple possible)<br>
     <ol id="item_num">
       <li><input type="text" class="required item" name="item_num_0" size="30" value=""></li>
     </ol>
     <input type="button" value="Additional items" id="btn_add">
   </li>
   <li>
     <label for="ADDRESS">INQUIRY</label>
     <br>
     <textarea name="comment" rows="4" cols="60"></textarea>
   </li>
 </ul>
 <div class="bt">
   <input type="submit" value="confirmation screen" name="submit">
 </div>
</form>
[JavaScript側]
// JavaScript Document
jQuery(document).ready(function($) {
 var prefix_order_list = 'item_num_'; // 品目入力欄のname属性の接頭辞
   // "品目の追加"ボタンを押した場合の処理
   $('#btn_add').click(function(){
       // 品目入力欄を追加
       var len_list = $('#item_num > li').length;
       var new_list = '<li><input type="text" size="30" name="' + prefix_order_list + len_list + '"></li>';
       $('#item_num').append(new_list);
       // 削除ボタンの一旦全消去し、配置し直す
       $('#item_num input[type="button"]').remove();
       len_list++;
       for (var i = 0; i < len_list; i++) {
           var new_btn = '<input type="button" value="delete">';
           $('#item_num > li').eq(i).append(new_btn);
       }
           
   });
   // 削除ボタンを押した場合の処理
   $(document).on('click', '#item_num input[type="button"]', function(ev) {
       // 品目入力欄を削除
       var idx = $(ev.target).parent().index();
       $('#item_num > li').eq(idx).remove();
       var len_list = $('#item_num > li').length;
       // 入力欄がひとつになるなら、削除ボタンは不要なので消去
       if (len_list == 1) $('#item_num input[type="button"]').remove();
       // 入力欄の番号を振り直す
       for (var i=0; i<len_list; i++) {
           $('#item_num > li').eq(i).children('input[type="text"]').attr('name', prefix_order_list + i);
       }
   });
});
[php側(内容確認画面)]
<?php
if(!$_POST){
header('Location: http://xxxx.xxxxx.com/');/
   }
session_start();
$_SESSION = $_POST;
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Order confirmation</title>
</head>
<body>
<form id="contact-form" action="./send.php" method="post">
                   <input type="hidden" name="sub_actions" value="confirm">
                   <table>
                   <tbody>
                   <tr>
                   <th>NAME</th>
                   <td><?php echo htmlspecialchars($_POST['name']);?></td>
                   </tr>
                   <tr>
                   <th>E-MAIL</th>
                   <td><?php echo htmlspecialchars($_POST['e_mail']);?></td>
                   </tr>
<tr>
                   <th>ADDRESS</th>
                   <td><?php echo htmlspecialchars($_POST['address']);?></td>
                   </tr>
                   <tr>
                   <th style="vertical-align:top;">INQUIRY</th>
                   <td><?php echo htmlspecialchars($_POST['comment']);?>
                   </td>
                   </tr>
                   </tbody>
                   </table>
                   
                   <div class="bt">
                   <p>PCやスマホのメールフォームの修正ボタンなんかhistory.back()で十分!</p>
                   <a href="javascript:history.back();">
<input type="button" value="戻る">
</a>
                   <input type="submit" value="送信" name="submit">
                   </div>
                   </form>
[php側(送信画面)]
<?php
$add_header="From:xxxxx.xxx@gmail.com\r\n";
$add_header   .= "Reply-to: xxxxx.xxx@gmail.com\r\n";
$add_header   .= "AAAA". phpversion();
$opt = '-f'.'xxxxx.xxx@gmail.com';
$message =<<<HTML
It is a confirmation of the order content.
[1.NAME]
{$_SESSION['name']}
[2.E_MAIL]
{$_SESSION['e_mail']}
[3.ADDRESS]
{$_SESSION['address']}
[5.INQUIRY]
{$_SESSION['comment']}
After confirming the order details, we will contact you than the person in charge.
Please wait a moment.
HTML;
// カレントの言語を日本語に設定する
mb_language("ja");
mb_internal_encoding("UTF-8");
mail($_SESSION['e_mail'],"AAA[Order] confirmation e-mail",$message,$add_header,$opt);
//mb_send_mailは5つの設定項目がある
//mb_send_mail(送信先メールアドレス,"メールのタイトル","メール本文","メールのヘッダーFromとかリプライとか","送信エラーを送るメールアドレス");
//マスター管理者にも同じメールを送る
mail('xxxxx.xxx@gmail.com',"お問い合わせがありました",$message,$add_header,$opt);
session_destroy(); // セッションを破棄
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Order Form Sent completed</title>
</head>
<body>
<p>Sent completed</p>
</body>
</html>           </form>
</body>
</html>
これは、注文フォームに必要事項を入力して送信するプログラムです。
ITEM NUMBERでは入力フォームが追加削除できます。
ここで、複数フォームを追加して数値や文字列を追加した場合で、[php側(確認画面)]で追加分も表示し
[php側(送信画面)]で追加分も送信させるにはどうしたらいいでしょうか?
ここで、複数フォームを追加して数値や文字列を追加した場合で、[php側(確認画面)]で追加分も画面に表示し
[php側(送信画面)]で追加分をメールに表示させるにはどうしたらいいでしょうか?
  • PHP

    33762 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    31707 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    20043 questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る