問い合わせPHPの入力、確認表示、隠し項目仮保存、DB登録、修正の流れ

1.初期画面(POSTがない時)では通常の入力フォームと仮保存用隠しhiddenフォームを出力。入力してsubmit
すると、onsbmitでJavaScriptのフォーム入力内容チェック関数を起動する。入力内容に問題があるとアラート
を表示してPOSTしない->そのままの表示。問題がないとPOSTして確認表示画面へ移行する。


2.確認表示画面(POSTが確認でsubmitされた時)では確認表示用のテーブルにechoでフォームの各入力データの
POSTデータを表示すると同時にJavaScriptにデータを渡しhiddenフォームのvalueにコピーする。
この時htmlspecialchars関数やmb_convert_kana関数でデータを問題ないように処理しておく。
確認画面下部には修正するために戻るボタンとDB登録を実行する登録ボタンを表示。


3.各入力データのPOSTデータをJavaScriptにデータを渡しhiddenフォームのvalueにコピーする際textareaの
改行付き複数行データはそのままだとエラーになるので以下のようにする。
まずtextareaのPOSTデータをexplode関数で改行コードを区切り文字として、配列データに変換。その配列データを
JSONデータ(テキスト)に変換する。同時に確認表示用にtextareaのPOSTデータをnl2br関数でbrタグ付きデータ
も用意しておく。下部scriptタグ内JavaScriptでJSONデータをphpのprint_rで改行コード付き配列に直しつつ、
JavaScriptの配列に代入。JavaScriptの配列をjoin関数で空の区切り文字で連結して文字列データに変換。これを
textareaのvalueにコピーするとエラーにならず改行も元通り再現される。

	お問い合わせ画面php: form.phpのtextareaデータのやり取りの部分抜粋
	---------------------------------------------------------------------
	<?php
	
	〜省略〜
	
		//問い合わせ内容の複数行用のデータ渡し
		$array_text = explode("\n", $_POST["textarea_data"]);
		$json_data = json_encode($array_text);
		//問い合わせ内容のweb確認表示用データ
		$tag_text = nl2br($_POST["textarea_data"]);
	
	?>
	
	〜省略〜
	
	</form><!-- 隠しフォーム、ボタン等の終了-->
	<script>
		//問い合わせ内容の複数行用のデータ受け取り
		var json_array = <?php print_r($json_data);?>;
		var back_textarea = json_array.join("");
		document.getElementById("textarea_data").value = back_textarea;
	</script>
	---------------------------------------------------------------------
				


4.確認表示でユーザーが内容を確認し、よければ登録ボタンを押すとsubmitが登録状態でPOSTされ隠しhidden
フォームにコピーしておいた値のPOST値を使ってPDOでMySQLDBの問い合わせ内容保存テーブルの各フィールド
にINSERT文で保存する。保存完了したら、登録完了メッセージを表示する。この時データの表示なし。


5.確認表示でユーザーが内容を確認し、修正したい場合は戻るボタンを押すとsubmitが戻る状態でPOSTされ、
最初の画面と同じ修正用フォーム入力画面を出力し、隠しhiddenフォームにコピーしておいた値のPOST値を
JavaScriptにデータを渡し修正用フォームのvalueに書き戻しコピーする。この時、textareaのデータは先ほどの
要領でJSONを使って受け渡しする。