前提・実現したいこと
自分は今、下記のような動きをするプログラムを書いています。(他の質問サイトで同じ質問をしたのですが、他の方の意見も聞いてみたく質問させていただきました。)
同じ質問をした質問サイトのURL: http://oshiete.goo.ne.jp/qa/12183867.html
顧客検索画面
顧客番号を入力後、検索ボタンを押し、顧客検索画面に遷移、顧客番号は顧客検索結果画面に渡されます。
顧客検索結果画面(問題のプログラム)
顧客検索画面から渡された顧客番号で、DBから関連した値を画面に表示します。
修正ボタンは値を修正した場合に押し、次の画面に修正した値を渡します。
戻るボタンは顧客検索画面に戻る場合に押し、遷移します。
顧客情報修正確認画面
顧客検索結果から渡された値を表示します。
確定ボタンを押してDBに接続し、値を更新します。
戻るボタンを押したとき、顧客情報修正確認画面に表示されている値を遷移元に修正後の値を表示したいのですが、顧客検索画面で検索した値が表示され、修正後の値が上書きされてしまいます。
上記の問題(修正後の値の上書き)を解決するために下記のプログラムを作りました。
下記のプログラム(顧客検索結果画面)に何かおかしいところがあるのでしょうか?
該当のソースコード(顧客検索結果画面)
<?php $dsn = 'mysql:dbname=example;host=localhost'; $user = 'root'; $password = 'shapshap'; try{ if (isset($_GET['C_num'])){//顧客情報修正確認画面から得た値を処理 $get_C_nam[] = $_GET['C_name']; $get_C_nm[] = $_GET['C_num']; $get_C_phn[] = $_GET['C_phon']; $get_C_add[] = $_GET['C_add']; } else{//顧客検索画面から得た値を処理 $dbh = new PDO($dsn, $user, $password); $C_nm = $_GET['C_num']; $sql = 'select * from example where C_nm= '.$C_nm.''; foreach ($dbh->query($sql) as $row) { $get_C_nam[] = $row['C_nam']; $get_C_nm[] = $row['C_nm']; $get_C_phn[] = $row['C_phn']; $get_C_add[] = $row['C_add']; } } } catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?> <!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" xml:lang="ja" lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <title>顧客検索結果</title> <link rel="stylesheet" href="ser_style.css"> </head> <body> <div class="content"> <script> function check() { txt = document.form1.C_name.value; n = txt.length; if (n > 10){ alert("顧客名は10文字以内で入力してください"); return false;} txt = document.form1.C_phon.value; n = txt.length; if (n > 11){ alert("顧客電話番号は11文字以内で入力してください"); return false;} txt = document.form1.C_sa.value; n = txt.length; if (n > 50){ alert("顧客住所は50文字以内で入力してください"); return false;} txt = document.form1.C_name.value; n = txt.length; if (n == ""){ alert("顧客名に未入力がありました"); return false;} txt = document.form1.C_phon.value; n = txt.length; if (n == ""){ alert("顧客電話番号に未入力がありました"); return false;} txt = document.form1.C_sa.value; n = txt.length; if (n == ""){ alert("顧客住所に未入力がありました"); return false;} } </script> <h1>顧客検索結果</h1> <form action="c_search_fix.php" name="form1" method="GET" onSubmit="return check();"> <div class="control"> <label for="C_num">顧客番号(修正不可)</label> <input readonly id="C_num" type="text" name="C_num" maxlength="6" value="<?php print($get_C_nm[0]); ?>" > </div> <div class="control"> <label for="C_name">顧客名(全角文字のみ入力可)</label> <input pattern="[^\x20-\x7E]*" id="C_name" type="text" name="C_name" value="<?php print($get_C_nam[0]); ?>" onkeyup = "this.value = this.value.replace(/[ -~1234567890]/g, '')"> </div> <div class="control"> <label for="C_phon">顧客電話番号(半角数字のみ入力可、11桁まで入力可,ハイフンなし)</label> <input pattern="^[0-9]+$" id="C_phon" type="tel" name="C_phon" min = "0" value="<?php print($get_C_phn[0]); ?>"> </div> <div class="control"> <label for="C_sa">顧客住所</label> <input id="C_sa" type="text" name="C_sa" value="<?php print($get_C_add[0]); ?>"> </div> <div class="control"> <input type="submit" value="修正"> </div> </form> <form action="menu.php" method="GET"> <div class="control"> <input type="submit" value="メニューへ"> </div> </form> </div> </body> </html>
回答2件
あなたの回答
tips
プレビュー