PHPでショッピングカートを!【3.準備:商品削除】

PHP

前回、商品修正を作成しました。
今回は、商品削除を作成します。

商品削除

商品削除を作成します。

ファイル名:goods_del.php

<記述例>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>商品削除</title>
    <style type="text/css">
<!--
table {margin: 10px;padding: 10px;}
table tr:nth-child(even) {background: cornsilk;}
table tr:nth-child(odd) {background: wheat;}
table tr th,td {border-bottom: 1px solid tan; padding: 2px 5px; text-align: center;}
table .right{text-align: right;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px; margin-left: 170px;}
-->
    </style>
  </head>
  <body>
    <main>
      <section>

<?php

try
{

$dsn='mysql:dbname=fshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');

$sql='SELECT id,name,price FROM goods';
$stmt=$dbh->prepare($sql);
$stmt->execute();

$dbh=null;

}
catch(Exception $e)
{
  print ' ただいま障害により大変ご迷惑をおかけしております。';
  exit();
}

print '<h3>商品削除</h3>';
print '削除する商品を選択してください。<br>';
print '<table><tr>';
print '<td>削除</td><td>商品ID</td><td>商品名</td><td>価格</td></tr>';

while(true)
{
  $rec=$stmt->fetch(PDO::FETCH_ASSOC);
  if($rec==false){break;}
  $id=$rec['id'];
  $name=$rec['name'];
  $price=$rec['price'];
  print '<tr><td>';
  print '<form method="post" action="goods_del_chk.php">';
  print '<input type="submit" value="削除"></td>';
  print '<td class="right"><input type="hidden" name="id" value="'.$id.'">'.$id.'</td>';
  print '<td><input type="hidden" name="name" value="'.$name.'">'.$name.'</td>';
  print '<td class="right"><input type="hidden" name="price" value="'.$price.'">'.number_format($price).'</form></td>';
}
print '</tr></table>';

?>
<button class="btn" onclick="location.href='goods_ctl.php'">商品管理へ</button>

      </section>
    </main>
  </body>
</html>

<表示例>

これも、商品修正と同じように一覧から
削除する商品を選択します。

商品削除確認

商品削除で選択したデータを削除するのか
再確認します。

ファイル名:goods_del_chk.php

<記述例>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>商品削除チェック</title>
    <style type="text/css">
<!--
.del{font-weight: bold; font-size: 20px; color:red; padding: 5px 10px;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px; margin-left: 180px;}
-->
    </style>
  </head>
  <body>
    <main>
      <section>

<?php
$id=$_POST['id'];
$name=$_POST['name'];
$price=$_POST['price'];

$id=htmlspecialchars($id);
$name=htmlspecialchars($name);
$price=htmlspecialchars($price);
?>
<h3>商品削除チェック</h3>
商品ID:<?php print $id; ?><br>
商品名:<?php print $name; ?><br>
価格:<?php print $price; ?><br>

この商品を削除してよろしいでしょうか。<br>

<form method="post" action="goods_del_end.php">
  <input type="hidden" name="name" value="<?php print $name ?>">
  <input type="hidden" name="price" value="<?php print $price ?>">
  <input type="hidden" name="id" value="<?php print $id ?>"><br>
  <input type="submit" class="del" value="削除する">
</form>
<br>
<button class="btn" onclick="location.href='goods_ctl.php'">商品管理へ</button>

      </section>
    </main>
  </body>
</html>

商品削除完了

選択した商品を削除します。

ファイル名:goods_del_end.php

<記述例>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>商品削除完了</title>
    <style type="text/css">
<!--
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px;}
-->
    </style>
  </head>
  <body>
    <main>
      <section>

<?php

$id=$_POST['id'];
$name=$_POST['name'];
$price=$_POST['price'];

$id=htmlspecialchars($id);
$name=htmlspecialchars($name);
$price=htmlspecialchars($price);

try
{

$dsn='mysql:dbname=fshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');

$sql='DELETE FROM goods WHERE id=?';
$stmt=$dbh->prepare($sql);
$data[]=$id;
$stmt->execute($data);

$dbh=null;

}
catch(Exception $e)
{
  print ' ただいま障害により大変ご迷惑をおかけしております。';
  exit();
}

?>

商品ID:<?php print $id; ?><br>
商品名:<?php print $name; ?><br>
価格:<?php print $price; ?><br>
この商品を削除しました。<br>
<br>
<button class="btn" onclick="location.href='goods_ctl.php'">商品管理へ</button>

      </section>
    </main>
  </body>
</html>

これで一通り商品管理するファイルを作成しました。

商品管理の動作確認をしよう

実際に商品管理の動作確認をしてみましょう。

ここに掲載した、3ファイル
[goods_del.php][goods_del_chk.php][goods_del_end.php]
前回作成した、5ファイル
[goods_ctl.php][goods_list.php]
[goods_mod.php][goods_mod_chk.php][goods_mod_end.php]
を UTF-8ファイルとして保存します。

ちょっとファイルの数が多いので商品追加の3ファイル
含め11ファイルをZIPファイルにまとめてダウンロードできるようにしました。

PHPでショッピングカートを!goods_ctl01.zip

XAMPPのコントロールパネルを起動し、
[Apache]列の[Start]と[MySQL]列の[Start]
をクリックし[Apache]と[MySQL]とを起動させてください。

ドキュメントルート(DocumentRoot)以下のフォルダに
ファイルをコピーし、[goods_ctl.php]
実行してみてください。

商品管理画面が表示されました。

[商品一覧]をクリックすると商品一覧が表示されます。

[商品修正]をクリックし、一覧から選択してください。

選択した商品が表示され商品名と価格が編集可能ですので
修正して、[修正する]をクリックしてください。

修正が完了しました。

商品管理に戻って、[商品削除]をクリックし、
削除する商品を選択します。

選択した商品が表示されますので、
[削除する]をクリックします。

商品削除が完了しました。

終わりましたら、XAMPPのコントロールパネルで
[Apache]列の[Stop]と[MySQL]列の[Stop]
をクリックし[Apache]と[MySQL]とを終了させてください。

あとは前の記事で記述した商品追加のファイルも
同じように動作すると思います。

コメント

タイトルとURLをコピーしました