電子書籍の厳選無料作品が豊富!

毎回お世話になっております。あの今phpmy-adminで作成したデータベースにphpでつなげました。ユーザがウェブページ上で入力したものを保存してテーブルのそれぞれのレコードを表示させました。そこのページに”削除”というボタンを押すとテーブルからそのレコードだけを消せるようにしたいのですがどのようにすれば良いでしょうか?下のようなものを考えたのですが失敗してテーブルに含まれる全てのレコードを間違って消してしまいました。すみませんがよろしくお願いします。

2つテーブルがあり、entries とcommentsテーブルのフィールドはこのようになっております。
entries entry_id title entry entered_timestamp
comments comment_id commentor_name commenter_email comment timestamp

<html>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<?php

require_once("connect.php");

$booDelete = 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>";

echo "<INPUT type ='submit' value ='Delete' name='submit'>";

}
if (isset($_POST["submit"])) {

$dbRecordDelete = mysql_query("DELETE FROM entries WHERE entry_id =

entry_id", $dbLocalhost);

}

?>
<form>
</body>
</html>

「phpとデータベース」の質問画像

A 回答 (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">
のように、配列のキーをわたせるようにする

場合によってはクッキーをつかって渡すのでよいかと
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/13 09:07

>DELETE FROM entries WHERE entry_id =entry_id



って全てのデータを消せ・・といってますね
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>

補足日時:2011/05/12 13:11
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!yambejpさん、すみません。yambejpさんの言うとおりにやろうとしたのですが”idにあたるものをサーバー側に送る”手順で突っかかってしまいました。

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

お礼日時:2011/05/12 13:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!