フォームにデータを入力し、フォームが送信されるとエラーチェックを行います。
エラーがあれば、エラーメッセージを表示するという簡単なプログラムです。
入力項目はいくつかあり正しく入力されている項目のデータは一時保管し、どこかの項目でエラーがあれば、正しく入力されている項目のデータは一時保管したデータを入れるという風にしています。
###code
下のコードはフォームのコードです。
if($fome_data->data_get(name)) echo($fome_data->data_get(name));
データがあれば初期値で代入するコードです。
html
1<input type="text" class="form-control" name="name" value="<? if($fome_data->data_get(name)) echo($fome_data->data_get(name)); ?>">
下のコードは、フォーム送信時にエラーをチェックするコードです。
php
1class Form_Data{ 2 // 保管用変数 3 private $Form_data; 4 private $Err_data; 5 6 // 入力データ用 7 public function data_set($name, $data){ 8 $this->$Form_data[$name] = $data; 9 } 10 public function data_get($name){ 11 return ($this->$Form_data[$name]); 12 } 13 14 // エラー用 15 public function err_set($name, $data){ 16 $this->$Err_data[$name] = $data; 17 } 18 public function err_get($name){ 19 echo($this->$Err_data[$name]); 20 } 21} 22 23$fome_data = new Form_Data; 24 25function Chack_Form($fd){ 26 27 // アニメ名処理 28 try{ 29 if ($_POST["name"] == ""){ 30 throw new NullException(); 31 } 32 $fd->data_set(name, $_POST["name"]); 33 }catch(Exception $e){ 34 $fd->err_set(name, $e->getMessage()); 35 } 36} 37 38if ($_SERVER['REQUEST_METHOD'] == "POST"){ 39 Chack_Form($fome_data); 40 41 echo($fome_data->err_get(name)); 42} 43
###問題
入力が間違っていた場合エラーは$fd->err_set(name, $e->getMessage());
にキーと値で保管され、フォーム入力画面に表示され、思い通りになるんですが、このエラーメッセージがなぜかフォームの入力欄にも反映されてしまします。
自分でどれだけコードを見てもなぜ表示されるのかが全くわかりません。助けてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/09 15:10
退会済みユーザー
2017/11/09 15:54
2017/11/10 09:56
退会済みユーザー
2017/11/10 10:08
2017/11/11 02:51 編集
退会済みユーザー
2017/11/13 01:54