2012-01-28 155 views
0

我試圖做一個PHP腳本,從數據庫中提取記錄,提取工作正常,但問題是當我點擊DELETE BUTTON時,它刪除數據庫中的所有記錄,我需要在這裏做的是刪除特定的記錄(只在該行的記錄),我該怎麼做?從MySQL數據庫中刪除一條記錄

這裏是我的代碼:

<table width="99%" border="0"> 
     <tr> 
      <td align="center">ID</td> 
      <td align="center">Username</td> 
      <td align="center">EDIT</td> 
      <td align="center">DELETE</td> 
     </tr> 

      <? 
     while ($fetch=mysql_fetch_array($q)) 
{ 
    ?>   
     <tr> 
      <td align="center"><? echo $fetch['useId']; ?></td> 
      <td align="center"><? echo $fetch['userUserName']; ?></td> 
      <td align="center"><? echo $fetch['useId']; ?></td> 
      <td align="center"> <input name="delete" type="submit" value="DELETE " onclick="<? mysql_query("DELETE FROM user WHERE useId = ". $fetch['useId'] ."") ?> "/></td> 
      </tr> 
      <? } ?> 

     </table> 
+1

在我看來,它只是在您打開頁面時刪除所有記錄。你正在混合使用JavaScript和PHP。 – jeroen 2012-01-28 15:24:41

+0

@ jeroen不,因爲我把onClick,這意味着我必須點擊做一個動作。謝謝:) – 2012-01-28 15:27:13

+0

是的,因爲在頁面發送到瀏覽器之前處理php。 – jeroen 2012-01-28 15:28:26

回答

1

正如吉榮指出的意見,你的PHP和JS混淆。由於在顯示頁面之前解析PHP,因此無法通過調用JS函數在頁面上運行PHP。你需要做的就是用你的onclick事件後回數據的頁面,以便重新加載並調用代碼刪除行:

<table width="99%" border="0"> 
    <tr> 
    <td align="center">ID</td> 
    <td align="center">Username</td> 
    <td align="center">EDIT</td> 
    <td align="center">DELETE</td> 
    </tr> 

    <? 
    if(isset($_POST['useId']) && is_numeric($_POST['useId'])) 
    { 
     mysql_query("DELETE FROM user WHERE useId = ". $_POST['useId'] .""); 
    } 

    while ($fetch=mysql_fetch_array($q)) 
    { 
    ?> 
    <form method="post" action="yourPHPScript.php"/> 
    <tr> 
     <td align="center"><? echo $fetch['useId']; ?></td> 
     <td align="center"><? echo $fetch['userUserName']; ?></td> 
     <td align="center"><? echo $fetch['useId']; ?></td> 
     <input type="hidden" name="useId" value="<? echo $fetch['useId']; ?>"/> 
     <td align="center"> <input name="delete" type="submit" value="DELETE "/></td> 
    </tr> 
    </form> 
    <? } ?> 

    </table> 

我在這裏所做的修改你的代碼添加加載頁面時檢查POST變量useId。這個頁面一旦被表單提交,就會存在。 (我假設你在表單中使用method =「POST」,如果你使用GET,那麼就相應地更新)。請注意,刪除查詢應在運行$ q查詢之前真正運行,以便在頁面刷新後看不到列表中已刪除的人員。

我還檢查useId是數字(假設您的用戶ID是數字)作爲安全檢查,以確保有人不會將僞造數據發送到您的查詢。最後,我將隱藏字段添加到包含用戶標識的表單中。

編輯:忘記也表明,您的表中的每一行都需要是一個單獨的窗體才能正常工作,因爲您只希望該行的用戶ID作爲useID值發送。或者,您也可以使用JS來確定要刪除哪一行,並將該用戶標識作爲GET var。

+0

這將總是刪除最後一條記錄,因爲所有隱藏的輸入都被命名爲'userId'。檢查我的答案,您需要爲每個條目添加一個表單以使此配置生效。 – jeroen 2012-01-28 15:49:05

+0

是的,我意識到只要我發佈:)我會更新代碼 – TheOx 2012-01-28 15:52:04

2

的PHP是前處理/同時輸出發送到瀏覽器,所以要刪除所有記錄,而你的網頁正在建設中。

你需要在很短做的是(這只是一個方法來解決它...):

  • 給每個條目的單獨形式
  • 添加一個隱藏字段的標識進入
  • 發表您的形式到另一個網頁,做刪除操作,當用戶提交表單