データの削除
商品データを削除させるSQL文について
以前に作った下記の2のデータを削除してみましょう。
phpMyAdminからSHOP、productを選択し、SQLタブから「DELETE」をクリックします。ひな形書式が表示されますのでid=2と修正し、「実行」をクリック。
「id=2」が削除されました。
入力画面を作成して商品データを削除する。
完成形はこんな感じです。削除のリンクを作成し、ここでは3を削除してみます。
表示タグから確認すると、id3のカップラーメンが削除されていることが確認できます。
それでは早速、作ってみましょう。
user-input.php
<?php require 'header.php'; ?> <div class="th0">商品番号</div> <div class="th1">商品名</div> <div class="th1">価格</div> <?php $pdo = new PDO('mysql:host=localhost;dbname=shop; charset=utf8','staff','password'); foreach ($pdo->query('select * from product') as $row){ echo '<form action="user-output.php" method="post">'; echo '<input type="hidden" name="id" value="', $row['id'], '">'; echo '<div class="td0">', $row['id'], '</div>'; echo '<div class="td1">'; echo '<input type="text" name="name" value="', $row['name'], '">'; echo '</div>'; echo '<div class="td1">'; echo '<input type="text" name="price" value="', $row['price'], '">'; echo '</div>'; echo '<div class="td2"><input type="submit" value="更新"></div>'; echo '<a href="delete-output.php?id=', $row['id'],'">削除</a>'; echo '</form>'; } ?> <?php require 'footer.php'; ?> | 「リクエストパラメータを伴うリンクの使用」 <a>タグを利用してます。 そしてdelete-output.phpが開きます。次にどの行を削除するのかを示すために、リクエストパラメータで商品番号を渡すためリンク先のファイルの後に?を付けます。 「書式;リンク先ファイル?リクエストパラメータ名=値」 |
delete-output.php
<?php require 'header.php'; ?> <?php $pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'staff','password'); $sql = $pdo->prepare('delete from product where id=?'); if ($sql->execute([$_REQUEST['id']])){ echo '削除できました'; } else { echo '削除できませんでした'; } ?> <?php require 'footer.php'; ?> | delete from product where id=?では値を設定したい部分を「?」にしておきます。 delete文を実行するには、prepareメソッドを使います。 ?の部分に設定したいのは商品番号です。商品番号はリクエストパラメータのidに入っているので、$_REQUEST['id']]で取得できます。配列にするため[ ]で囲みます。 この配列をexecuteメソッドに渡してSQL文を実行します。 |
就職・転職支援
©2020年9月 Challenge programming