0

SQL クエリの結果を表示する html テーブルがあります。このテーブルはBasket、DB 内のテーブルを参照しており、Web サイト内のユーザーのバスケットを単に示しています。テーブルには、一度押された削除ボタンがあり、ユーザーのバスケットからアイテムを削除するSQLクエリを実行しています。これを行うために、htmlでpostメソッドを使用しています:

HTML

<td><form name="myForm" method="post" action="<?php $_SERVER['PHP_SELF'];?>" >
   <input type="submit" class="css3button" value="הסר"  / > 
</td>
<input type="hidden" name="product" id="product"
    value="<?php echo $product; ?>" />

PHP

if(isset($_POST['product'])){
    $removal = sprintf("DELETE FROM Basket WHERE
          Id='%s'",mysql_real_escape_string($_POST['product']));
    $remove_result = mysql_query($removal);
 }

SQLクエリが実行され、アイテムが削除されます。問題は、ページが更新されるのが早すぎることです(私は推測します)。ページを手動で再度更新した後にのみ削除を押した後、同じテーブルが再び表示されます。削除したアイテムのないテーブル。クエリが実行される前にページがリロードされていることに問題があると思いますか? それとも別のものですか?そのための解決策はありますか?

ありがとう!

4

1 に答える 1

0

あなたのファイルでは、テーブルを生成するコード(またはDBからアイテムを選択するためのSQLクエリ)がこの部分の前に実行されていると思います。

if(isset($_POST['product'])){
  $removal = sprintf("DELETE FROM Basket WHERE Id='%s'",mysql_real_escape_string($_POST['product']));
    $remove_result = mysql_query($removal);
}

そのため、テーブルが最初に生成され、その後削除が有効になります。その結果、アイテムはデータベースから削除されますが、次にページをリロードするまでテーブルにはアイテムが表示されたままになります。

スクリプトの他の SQL クエリの前にコードのこの部分を配置するだけで、問題は解決するはずです。

于 2013-06-17T09:59:08.243 に答える