「気づけばプロ並みPHP(リックテレコム」を使って勉強しています。わからないところがありまして質問させていただきます。
XAMPPを使って勉強しています。
スタッフの編集を実行する画面でつまづいてます。
実際に修正する画面になり、編集が完了しましたと出てもデーターベース上に反映されません。
以下に
編集画面(staff_edit.php)、編集確認(staff_edit_check.php)、編集実行(staff_edit_done.php)のソースコードを載せておくのでアドバイスお願いします。
また他に気づいた点があればご指摘いただけると嬉しいです。
追記ーーーーー
データベースの設定はできていて、データベース上では削除、編集を行うことはできています。 またXAMPPのバージョンは7.3.9です。
staff_edit.php
1<!DOCTYPE HTML> 2<html> 3 4<head> 5 <meta http-equiv="content-type" content="text/html;charset = UTF-8"> 6 <title>php基礎</title> 7</head> 8 9<body> 10 <?php 11 try { 12 $staff_code = $_GET['staffcode']; 13 14 // データベースに接続 15 $pdo = new PDO( 16 'mysql:dbname=shop;host=localhost;charset=utf8', 17 'root', 18 '', 19 [ 20 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 21 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 22 ] 23 ); 24 25 $sql = 'SELECT name FROM mst_staff WHERE mst_staff.code=?'; 26 $stmt = $pdo->prepare($sql); 27 $data[] = $staff_code; 28 $stmt ->execute($data); 29 30 $rec = $stmt->fetch(PDO::FETCH_ASSOC); 31 $staff_name = $rec['name']; 32 33 $pdo = null; 34 35 /* データベースから値を取ってきたり, データを挿入したりする処理 */ 36 } catch (PDOException $e) { 37 38 // エラーが発生した場合は「500 Internal Server Error」でテキストとして表示して終了する 39 // - もし手抜きしたくない場合は普通にHTMLの表示を継続する 40 // - ここではエラー内容を表示しているが, 実際の商用環境ではログファイルに記録して, Webブラウザには出さないほうが望ましい 41 header('Content-Type: text/plain; charset=UTF-8', true, 500); 42 echo 'ただいま障害により大変ご迷惑をおかけしています'; 43 exit($e->getMessage()); 44 } 45 46 // Webブラウザにこれから表示するものがUTF-8で書かれたHTMLであることを伝える 47 // (これか <meta charset="utf-8"> の最低限どちらか1つがあればいい. 両方あっても良い.) 48 header('Content-Type: text/html; charset=utf-8'); 49 50 ?> 51 52 スタッフ修正<br/> 53 <br/> 54 スタッフコード<br/> 55 <?php echo $staff_code;?> 56 <br/> 57 <br/> 58 <form method = "post" action = "staff_edit_check.php"> 59 <input type = "hidden" name = "code" value = "<?php $staff_code;?>"> 60 スタッフ名<br/> 61 <input type = "text" name = "name" style = "width:200px" value = "<?php echo $staff_name;?>"> <br/> 62 パスワードを入力してください<br/> 63 <input name = "pass" type = "password" style = "width:100px"><br/> 64 パスワードをもう一度入力してください<br/> 65 <input name = "pass2" type = "password" style = "width:100px"><br/> 66 <br/> 67 68 <input type = "button" onclick = "history.back()" value = "戻る"> 69 <input type = "submit" value ="OK"> 70 </form> 71 72 73</body> 74 75</html> 76
staff_edit_check.php
1<!DOCTYPE HTML> 2<html> 3 4<head> 5 <meta http-equiv="content-type" content="text/html;charset = UTF-8"> 6 <title>php基礎</title> 7</head> 8 9<body> 10 <?php 11$staff_code = $_POST['code']; 12$staff_name = $_POST['name']; 13$staff_pass = $_POST['pass']; 14$staff_pass2 = $_POST['pass2']; 15 16$staff_name = htmlspecialchars($staff_name); 17$staff_pass = htmlspecialchars($staff_pass); 18$staff_pass2 = htmlspecialchars($staff_pass2); 19 20if($staff_name == ''){ 21 echo 'スタッフ名が入力されていません<br/>'; 22} 23else{ 24 echo 'スタッフ名'; 25 echo $staff_name; 26 echo '<br/>'; 27} 28 29if($staff_pass == ''){ 30 echo 'パスワードが入力されていません<br/>'; 31} 32 33if($staff_pass != $staff_pass2){ 34 echo 'パスワードが一致しません<br/>'; 35} 36 37if($staff_name == '' || $staff_pass == ''|| $staff_pass != $staff_pass2){ 38 echo '<form>'; 39 echo '<input type = "button" onclick = "history.back()" value = "戻る">'; 40 echo '</form>'; 41} 42 43else{ 44 $staff_pass = md5($staff_pass); 45 echo '<form method = "post" action = "staff_edit_done.php">'; 46 echo '<input type = "hidden" name = "name" value = "'.$staff_name.'">'; 47 echo '<input type = "hidden" name = "code" value = "'.$staff_code.'">'; 48 echo '<input type = "hidden" name = "pass" value = "'.$staff_pass.'">'; 49 echo '<br/>'; 50 echo '<input type = "button" onclick = "history.back()" value = "戻る">'; 51 echo '<input type = "submit" value = "OK">'; 52 echo '</form>'; 53} 54 ?> 55</body> 56 57</html> 58
staff_edit_done.php
1<!DOCTYPE HTML> 2<html> 3 4<head> 5 <meta http-equiv="content-type" content="text/html;charset = UTF-8"> 6 <title>php基礎</title> 7</head> 8 9<body> 10 <?php 11 12 $staff_code = $_POST['code']; 13 $staff_name = $_POST['name']; 14 $staff_pass = $_POST['pass']; 15 16 $staff_name = htmlspecialchars($staff_name); 17 $staff_pass = htmlspecialchars($staff_pass); 18 19 try { 20 // データベースに接続 21 $pdo = new PDO( 22 'mysql:dbname=shop;host=localhost;charset=utf8', 23 'root', 24 '', 25 [ 26 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 27 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 28 ] 29 ); 30 31 $sql = 'UPDATE mst_staff SET name=?,password=? WHERE mst_staff.code=?'; 32 $stmt = $pdo->prepare($sql); 33 $data[] = $staff_name; 34 $data[] = $staff_pass; 35 $data[] = $staff_code; 36 $stmt->execute($data); 37 38 $pdo = null; 39 40 /* データベースから値を取ってきたり, データを挿入したりする処理 */ 41 } catch (PDOException $e) { 42 43 // エラーが発生した場合は「500 Internal Server Error」でテキストとして表示して終了する 44 // - もし手抜きしたくない場合は普通にHTMLの表示を継続する 45 // - ここではエラー内容を表示しているが, 実際の商用環境ではログファイルに記録して, Webブラウザには出さないほうが望ましい 46 header('Content-Type: text/plain; charset=UTF-8', true, 500); 47 echo 'ただいま障害により大変ご迷惑をおかけしています'; 48 exit($e->getMessage()); 49 } 50 51 // Webブラウザにこれから表示するものがUTF-8で書かれたHTMLであることを伝える 52 // (これか <meta charset="utf-8"> の最低限どちらか1つがあればいい. 両方あっても良い.) 53 header('Content-Type: text/html; charset=utf-8'); 54 55 56 57 ?> 58 修正しました<br/> 59 <br/> 60 <a href = "staff_list.php">戻る</a> 61</body> 62 63</html> 64
回答2件
あなたの回答
tips
プレビュー