- ベストアンサー
PHPでデータベースに接続してテーブルのレコードを削除する方法
- PHPを使用してデータベースに接続し、テーブル内のレコードを表示させるウェブページを作成しました。
- このページに削除ボタンを追加し、ユーザーがボタンを押すとテーブル内の特定のレコードを削除できるようにしたいと考えています。
- しかし、これまで行った方法では誤ってテーブル内のすべてのレコードを削除してしまいました。正しい削除方法についてご教示ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
やりようはいくつかあります。 以下例をあげておきます。 (1)formをわけ、ひとつひとつのformにhiddenでidをうめこんでやる <form> <input type="hidden" name="delid" value="<?PHP print htmlspecialchars($必要なid);?>"> <input type="submit" value="delete"> </form> (2)submitボタンのnameで調整する(配列でやるとらく?) <form> <input type="submit" name="id[<?PHP print urlencode($必要なid);?>]" value="delete"> <input type="submit" name="id[<?PHP print urlencode($必要なid);?>]" value="delete"> ・・・ </form> (3)セッション配列を継承し、ボタン名でわたす セッションで削除用idの一覧配列をつくっておき <input type="submit" name="id[0]" value="delete"> <input type="submit" name="id[1]" value="delete"> のように、配列のキーをわたせるようにする 場合によってはクッキーをつかって渡すのでよいかと
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>DELETE FROM entries WHERE entry_id =entry_id って全てのデータを消せ・・といってますね idにあたるものをサーバー側におくってやり DELETE FROM entries WHERE entry_id =○○で消してください
お礼
お返事ありがとうございます!yambejpさん、すみません。yambejpさんの言うとおりにやろうとしたのですが”idにあたるものをサーバー側に送る”手順で突っかかってしまいました。 考えたのは、レコードとDeleteボタンを表示させるときにそのボタンそれぞれにentry_id と同じ数字を割り当てて、ボタンが押されたらその数字を送って、 DELETE FROM entries WHERE entry_id =ボタンの数字 としてみたいのですが、うまくいきません。何回も申し訳ないのですが、補足にコードを載せるのでチェックしていただけないでしょうか。ずうずうしいかもしれませんが宜しくお願いします。
補足
<html> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <?php require_once("connect.php"); $intID = 0; $arrID = array (); $intcoount = 0; $dbRecords = mysql_query("SELECT* FROM entries", $dbLocalhost) or die("Problem reading table: " .mysql_error()); while ($arrRecords = mysql_fetch_row($dbRecords)) { echo "<p>" .$arrRecords[0] ." "; echo $arrRecords[1] . ""; echo $arrRecords[2] . ""; echo $arrRecords[3] ."</p>"; array_push($arrID, $arrRecords[0]); echo "<INPUT type ='submit' value ='Delete' name='submit' id='<?php $arrID[$intcount] ?>'>"; $intcount=$intcount+1; } if (isset($_POST["submit"])) { $dbRecordDelete = mysql_query("DELETE FROM entries WHERE entry_id = '$intID'", $dbLocalhost); } ?> <form> </body> </html>
お礼
yambejpさん、すごく時間かかってしまいましたが無事に解決することができました! お忙しいのに本当にありがとうございました。