• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpとデータベース)

PHPでデータベースに接続してテーブルのレコードを削除する方法

このQ&Aのポイント
  • PHPを使用してデータベースに接続し、テーブル内のレコードを表示させるウェブページを作成しました。
  • このページに削除ボタンを追加し、ユーザーがボタンを押すとテーブル内の特定のレコードを削除できるようにしたいと考えています。
  • しかし、これまで行った方法では誤ってテーブル内のすべてのレコードを削除してしまいました。正しい削除方法についてご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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"> のように、配列のキーをわたせるようにする 場合によってはクッキーをつかって渡すのでよいかと

isman
質問者

お礼

yambejpさん、すごく時間かかってしまいましたが無事に解決することができました! お忙しいのに本当にありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>DELETE FROM entries WHERE entry_id =entry_id って全てのデータを消せ・・といってますね idにあたるものをサーバー側におくってやり DELETE FROM entries WHERE entry_id =○○で消してください

isman
質問者

お礼

お返事ありがとうございます!yambejpさん、すみません。yambejpさんの言うとおりにやろうとしたのですが”idにあたるものをサーバー側に送る”手順で突っかかってしまいました。 考えたのは、レコードとDeleteボタンを表示させるときにそのボタンそれぞれにentry_id と同じ数字を割り当てて、ボタンが押されたらその数字を送って、 DELETE FROM entries WHERE entry_id =ボタンの数字 としてみたいのですが、うまくいきません。何回も申し訳ないのですが、補足にコードを載せるのでチェックしていただけないでしょうか。ずうずうしいかもしれませんが宜しくお願いします。

isman
質問者

補足

<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>

関連するQ&A