![退会済みユーザー](https://ddjkaamml8q8x.cloudfront.net/profileImages/deletedUser/icnUserSample.jpeg)
動的にレコードを更新するプログラムをつくっています。
update2のボタンを押してレコードを選択すると、名前や値段を入力するフォームが表示され、それに入力すればレコードを更新できるようなプログラムをつくりたいです。
最後に、updateのボタンをおして新たにレコードを更新する段階で躓いています。
update2を選択したときにはGoodsIDをglobal_varという変数に格納したのですが、updateというボタンを押したときにはglobal_varが空になっておりGoodsIDが格納されなくなってしまいます。それが原因で更新することができないのですが、なぜ変数global_varがからになってしまうかがわかりません。
なのでコードの///更新処理のところに原因があると思います。
グローバル変数にしてみましたが解決しませんでした。
php
1<?php 2 $res=""; 3 $res2=[]; 4 $global_var=""; 5 $USER='root'; 6 $PW='****'; 7 $dnsinfo="mysql:dbname=salesmanagement2;host=localhost;charset=utf8"; 8 $pdo = new PDO($dnsinfo,$USER,$PW); 9 10 11 12 //任意のレコードの更新ボタンが押されたときの反応 13 if(isset($_POST['update2'])){ 14 try{ 15 $sql="select * from goods where GoodsID=?"; 16 $stmt=$pdo->prepare($sql); 17 $array=array($_POST['GoodsID']); 18 19 20 $stmt->execute($array); 21 $row=$stmt->fetch(PDO::FETCH_ASSOC); 22 $NewGoodsID=$row['GoodsID']; 23 // turn into global variable 24 $GLOBALS["global_var"] =$NewGoodsID; 25 26 $NewGoodsName=$row['GoodsName']; 27 $NewPrice=$row['Price']; 28 29 }catch(PDOException $e){ 30 $res=$e->getMessage(); 31 } 32 } 33 ///////// 34 35 36 try{ 37 $sql="select * from goods"; 38 $stmt=$pdo->prepare($sql); 39 $stmt->execute(null); 40 while($row=$stmt->fetch(PDO::FETCH_ASSOC)){ 41 $res .= "<table><tr><td>" . $row['GoodsID'] . "</td><td>" . $row['GoodsName'] . "</td><td>".$row['Price']. "yen</td><td>"; 42 $res .= "<form action='' method='post'> 43 <input type='submit' name='update2' value='update2'> 44 <input type='hidden' name='GoodsID' value={$row['GoodsID']}> 45 </td></form></tr></table>\n"; 46 } 47 }catch(PDOException $e){ 48 $res=$e->getMessage(); 49} 50 //////更新処理 51 if(isset($_POST['update'])){ 52 try{ 53 $sql="update goods set Price=?, GoodsName=? where GoodsID=?"; 54 $stmt=$pdo->prepare($sql); 55 $array=array($_POST['NewPrice'],$_POST['NewGoodsName'],$global_var); 56 $res2=$array; 57 $stmt->execute($array); 58 59 }catch(PDOException $e){ 60 $ress=$e->getMessage(); 61 } 62} 63 //// 64 65 66 67?> 68 69 70<!DOCTYPE html> 71<html> 72<head> 73<meta charset="utf-8"> 74<style> 75table{ 76 width: 50%; 77} 78td{ 79 text-align: left; 80 width: 25%; 81 vertical-align: text-bottom; 82} 83</style> 84</head> 85<body> 86 <h1>Update Goods Information </h1> 87 <?php if(isset($_POST['update2'])){ 88 ?> 89 90 <form action="" method="post" > 91 <p>GoodsID=<?php echo $NewGoodsID; ?></p> 92 <label>NewGoodsName<input type="text" name="NewGoodsName" value='<?php echo $NewGoodsName; ?>' size="40"></label> 93 <label>NewPrice<input type="text" name="NewPrice" value='<?php echo $NewPrice; ?>' size="20"> </label> 94 <input type="submit" name="update" value="update"> 95 </form> 96 <?php 97 } 98 ?> 99 <?php echo $res ;?> 100 <?php print_r($res2) ;?> 101 102 <?php echo "global_var=" . $global_var ;?> 103 104</body> 105</html>
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。