2016-01-21 44 views
0

即時試圖刪除PHP行(我做到了),但是,總是刪除最後一排,我知道爲什麼...因爲每次我在頁面刷新或輸入,每次我得到了id =「lastrow」,我的問題是,我不知道爲什麼每次我得到最後一行id ...`$ query =「SELECT * FROM ph」; $ rs = mysql_query($ query);刪除一行用PHP問題

while ($ph = mysql_fetch_array($rs)) { 
     echo utf8_encode(" 
     <tr class='etapastext'> 
      <td > 
      ".$ph['name']." 
      </td> 
      <td> 
      <input type='submit' name='".$ph['id']."' value='Eliminar' > 
      <input type='hidden' name='name' value='".$ph['id']."'> 
      </td> 
      "); }` 

然後我可以訪問我想刪除的項目的ID,我用這個代碼

$query = "DELETE FROM ph WHERE ph.id = '".$_POST['name']."'"; 
mysql_query($query); 

我使用$_POST['name']因爲是一個形式,以及我不知道如果即時通訊做的最好的辦法還是什麼IM做壞事

我附和$query我得到DELETE FROM ph WHERE ph.id = '24'當「24」始終是我的表中的最後一行

+3

SQL注入風險... – wogsland

回答

1

由於定義,應該是在一個單一的形式,每個輸入類型獨特的名字,你在做什麼是允許多個用戶輸入的類型與

name="name" 

從技術上講,當您的表單將被提交最後一個輸入類型的名稱='名稱'與表格一起發送。那就是你做錯了的地方。我不是專業人士,但根據我的觀點,您有3個選項可以從數據庫表中刪除一行。

  1. 使用GET方法與URL(最好的方式)像

    www.xyz.com/delete.php?id=5

  2. (會搞亂送您價值代碼)使用單獨的表單和提交按鈕爲每個輸入類型和最重要的,你的表格應該開始在td

  3. 你將創建一個JavaScript運行時的表單,並基於 選定的行值將填充和形式將提交, (建議,如果你想使用後,因爲它會讓你的代碼 乾淨)

希望這將有助於

0

你需要一個形式每各html.tr.td

由於您提交的整個結果,最後一個始終覆蓋以往任何一次當form.input.name相同。

除非你改變你的input.name到別的

while ($ph = mysql_fetch_array($rs)) { 
    echo ' 
     <form ....> 
     <tr class="etapastext"> 
      <td>', $ph['name'], '</td> 
      <td> 
       <input type="submit" value="Eliminar"> 
       <input type="hidden" name="name" value="', $ph['id'], '"> 
      </td> 
     </tr> 
     </form> 
    '; 
) 
0

從我所看到的迄今爲止的東西,你的<tr>標籤不被關閉while()循環中。我會假設對於$ph中的每個數組項目,您都希望它們各自擁有自己的表格行。

固定碼下面

while ($ph = mysql_fetch_array($rs)) { 
    echo utf8_encode(" 
     <tr class='etapastext'> 
      <td > 
       ".$ph['name']." 
      </td> 
      <td> 
       <input type='submit' name='".$ph['id']."' value='Eliminar' > 
       <input type='hidden' name='name' value='".$ph['id']."'> 
      </td> 
     </tr> 
    "); 
} 

希望這有助於