1

私が取り組んでいるプロジェクトでは、ユーザーは mysql データベースに保存されている作成済みのエントリのリストを持っています。ここでは、すべてのエントリを表示するかideas、ユーザー名に一致するすべてのエントリを表示してユーザーが作成したものを表示します。

各エントリの横に、押されたときにそのエントリのみを削除する削除ボタンが必要です。以下のコードでは、削除ボタンが押されたかどうかに関係なく、すべてのエントリがすぐに削除されたように見えます。

<?php
$username = $_SESSION['Username'];
$result = mysql_query("SELECT * FROM `ideas` WHERE Username = '$username' ORDER BY `ideaID`") or die(mysql_error());
$row = mysql_fetch_row($result);

while($row = mysql_fetch_array($result))
{ ?>

<?php $id_num = $row[0] ?>
<b>Title: </b> <?= $row[2]?><br><b>Description: </b> <?= $row[3]?> <br>
<a onclick ="<?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'");?>">
<div id="deleteButton">delete</div></a>
<br><br>


<?php } ?>
4

3 に答える 3

1

問題は次の行にあります。

              <?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'");

ループを通過すると、mysql_queryは各アイテムに対してDELETEクエリを実行します。そのため、アイテムは削除されます。delete.phpを指すリンクを生成し、レコードIDを引数として渡してから、mysql_query( "DELETE code in delete.php page

于 2012-03-18T01:58:44.670 に答える
1

PHPの仕組みを誤解しています。ファイルが実行されると、すべての PHP コードが実行されます。これには、mysql_queryその削除が含まれます。<a onclick=書くかどうかは問題ではありません。それはHTML であり、PHP にとってはナンセンスです。PHPは、それ以上苦労せずに出力するだけです。

必要なのは、リンクを、必要な ID を別の PHP ページに送信するフォームに置き換えてから、削除 MySQL クエリを実行することです。このリンクは、バックグラウンドで発生した AJAX リクエストで作成することもできます。別の方法として、リンクを使用して同じことを行うこともできますが、これは不適切なスタイルと見なされます。

これが機能しない理由を理解するためのちょっとした練習として、生成されたソース コードを見てみましょう。空の になります<a onclick="">。PHP が期待どおりに動作する場合、そこには何を記述すればよいでしょうか?

于 2012-03-18T01:57:32.517 に答える
0

AJAX または完全なポストバックを使用して、クライアントからサーバーに別の要求を行う必要があります。

于 2012-03-18T01:56:12.533 に答える