14)商品の単価、在庫数、商品メーカ名を更新できるようにする。
  以下の表(表1)を表示させて商品の単価、在庫数、商品メーカ名を更新できるようにしてみる。
  表1
 
商品の単価、在庫数、商品メーカ名商品の単価、在庫数、商品メーカ名の更新
ID 商品コード 商品名 単価 在庫数 メーカ名
2 101 万年筆(赤)
3 102 色鉛筆(黄)
5 104 ボールペン(赤)
6 105 色鉛筆(青)
7 106 色鉛筆(緑)

  ①上記表を表示するプログラム
   ファイル名:figuer1AllUpdateMenu.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>表1のALLの更新</title>
</head>
<body>
<?php
echo "商品の単価、在庫数、商品メーカ名の更新<br>\n";
$conn=mysqli_connect('localhost','******','******');
mysqli_select_db($conn,'product_db');
$sql1="SELECT * FROM maker_tbl ORDER BY id ASC;";
$sql2="*******************************************************************************************";
if($result=mysqli_query($conn,$sql1)){
$i=0;
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
$id[$i]=$row['id'];
$maker[$i]=$row['makerName'];
$i++;
}
}
else{
echo "クエリが実行できませんでした。\n";
mysqli_close($conn);
exit(); }
if($result=mysqli_query($conn,$sql2)){
if(mysqli_num_rows($result)!=0){
echo "<form name=\"frm\" method=\"post\" action=\"figuer1AllUpdate.php\">\n";
echo "<table border=\"1\">\n
<tr><td>ID</td>
<td>商品コード</td>
<td>商品名</td>
<td>単価</td>
<td>在庫数</td>
<td>メーカ名</td></tr>\n";
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
echo "<tr>\n";
echo "<td style=\"text-align:right;\">{$row['id']}</td>\n
<td style=\"text-align:right;\">{$row['productId']}</td>\n
<td>{$row['productName']}</td>\n
<td><input type=\"text\" name=\"unitPrice[]\" size=\"6\" value=\"{$row['unitPrice']}\" style=\"text-align:right;\"></td>\n
<td><input type=\"text\" name=\"stockNumber[]\" size=\"6\" value=\"{$row['stockNumber']}\" style=\"text-align:right;\"></td>\n";
echo "<td><select name=\"makerN[]\">\n";
$i=0;
while($i<count($maker)){
if($row['makerId']==$id[$i])
echo "<option value=\"{$row['productId']},{$row['makerId']},{$id[$i]},{$maker[$i]}\" selected>{$maker[$i]}</option>\n";
else
echo "<option value=\"{$row['productId']},{$row['makerId']},{$id[$i]},{$maker[$i]}\">{$maker[$i]}</option>\n";
$i++;
}
echo "</select></td></tr>\n";
}
echo "</table>\n";
echo "<input type=\"submit\" value=\"更新\">";
echo "</form>\n";
}
}
else{
echo "条件に合ったデータは存在しません<br>\n";
}
mysqli_close($conn);
?>
</body>
</html>
  ②商品の単価、在庫数、商品メーカ名を更新する。
   ファイル名:figuer1AllUpdate.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>表1のALLデータアップデート</title>
</head>
<body>
<?php if(isset($_POST['makerN']) && isset($_POST['unitPrice']) && isset($_POST['stockNumber'])){
$conn=mysqli_connect('localhost','******','******');
mysqli_select_db($conn,'product_db');
//商品価格テーブルの読み込み。
$sql="SELECT * FROM price_tbl ORDER BY id ASC;";
if($result=mysqli_query($conn,$sql)){
$i=0;
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
$idP[$i]=$row['id'];
$productIdP[$i]=$row['productId'];
$unitPriceP[$i]=$row['unitPrice'];
$i++;
}
}
else{
echo "クエリが実行できませんでした。\n";
mysqli_close($conn);
exit();
}
//商品在庫テーブルの読み込み
$sql="SELECT * FROM stock_tbl ORDER BY id ASC;";
if($result=mysqli_query($conn,$sql)){
$i=0;
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
$idS[$i]=$row['id'];
$productIdS[$i]=$row['productId'];
$stockNumberS[$i]=$row['stockNumber'];
$i++;
}
}
else{
echo "クエリが実行できませんでした。\n";
mysqli_close($conn);
exit();
}
//商品単価テーブル(price_tbl)の更新
$i=0;
$priceFlag=0; //商品単価テーブルのアップデートがされたかどうかのフラグ
while($i<count($_POST['unitPrice'])){
$j=0;
while($j<count($unitPriceP)){
$makerN=explode(",",$_POST['makerN'][$i]);
if(($makerN[0]==$productIdP[$j]) && ($_POST['unitPrice'][$i]!=$unitPriceP[$j])){
$sql="***************************************************************************";
if(mysqli_query($conn,$sql)){
$priceFlag=1; //商品単価テーブルがアップデートされた時
}
else{
echo "アップデートに失敗しました。\n";
tableUpdate($conn);
mysqli_close($conn);
exit();
}
}
$j++;
}
$i++;
}
//商品在庫テーブル(stock_tbl)の更新
$i=0;
$stockFlag=0; //商品在庫テーブルのアップデートがされたかどうかのフラグ
while($i<count($_POST['stockNumber'])){
$j=0;
while($j<count($stockNumberS)){
$makerN=explode(",",$_POST['makerN'][$i]);
if(($makerN[0]==$productIdS[$j]) && ($_POST['stockNumber'][$i]!=$stockNumberS[$j])){
$sql="*******************************************************************************";
if(mysqli_query($conn,$sql)){
$stockFlag=1; //商品在庫テーブルがアップデートされた時
}
else{
echo "アップデートに失敗しました。\n";
tableUpdate($conn);
mysqli_close($conn);
exit();
}
}
$j++;
}
$i++;
}
//商品メーカテーブル(productmaker_tbl)の更新
$productmakerFlag=0;
for($i=0;$i<count($_POST['makerN']);$i++){
$makerN=explode(",",$_POST['makerN'][$i]);
if($makerN[1]!=$makerN[2]){
$sql="*********************************************************************************";
if(mysqli_query($conn,$sql)){
$productmakerFlag=1;
}
else{
echo "アップデートに失敗しました。\n";
tableUpdate($conn);
mysqli_close($conn);
exit();
}
}
}
if($productmakerFlag==0 && $priceFlag==0 && $stockFlag==0){
echo "データの更新はありません。<br>\n";
tableUpdate($conn);
mysqli_close($conn); exit();
}
echo "以下のように更新されました。<br>\n";
tableUpdate($conn);
mysqli_close($conn);
exit();
}
else{
echo "データが送信されてきていません。\n";
mysqli_close($conn);
}
//表1を表示させる関数
function tableUpdate($conn){
$sql1="SELECT * FROM maker_tbl ORDER BY id ASC;";
$sql2="*******************************************************************************************";
if($result=mysqli_query($conn,$sql1)){
$i=0;
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
$id[$i]=$row['id'];
$maker[$i]=$row['makerName'];
$i++;
}
}
else{
echo "クエリが実行できませんでした。\n";
mysqli_close($conn);
exit();
}
if($result=mysqli_query($conn,$sql2)){
if(mysqli_num_rows($result)!=0){
echo "<form name=\"frm\" method=\"post\" action=\"figuer1AllUpdate.php\">\n";
echo "<table border=\"1\">\n
<tr><td>ID</td>
<td>商品コード</td>
<td>商品名</td>
<td>単価</td>
<td>在庫数</td>
<td>メーカ名</td></tr>\n";
while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){
echo "<tr>\n";
echo "<td style=\"text-align:right;\">{$row['id']}</td>\n
<td style=\"text-align:right;\">{$row['productId']}</td>\n
<td>{$row['productName']}</td>\n
<td><input type=\"text\" name=\"unitPrice[]\" size=\"6\" value=\"{$row['unitPrice']}\" style=\"text-align:right;\"></td>\n
<td><input type=\"text\" name=\"stockNumber[]\" size=\"6\" value=\"{$row['stockNumber']}\" style=\"text-align:right;\"></td>\n";
echo "<td><select name=\"makerN[]\">\n";
$i=0;
while($i<count($maker)){
if($row['makerId']==$id[$i])
echo "<option value=\"{$row['productId']},{$row['makerId']},{$id[$i]},{$maker[$i]}\" selected>{$maker[$i]}</option>\n";
else
echo "<option value=\"{$row['productId']},{$row['makerId']},{$id[$i]},{$maker[$i]}\">{$maker[$i]}</option>\n";
$i++;
}
echo "</select></td></tr>\n";
}
echo "</table>\n";
echo "<input type=\"submit\" value=\"更新\">";
echo "</form>\n";
}
}
else{
echo "条件に合ったデータは存在しません<br>\n";
}
}
?>
</body>
</html>