2011-06-06 51 views
4

我有這張PHP/HTML,以POST形式包裝。如何僅將刪除按鈕單擊的行的ID傳回服務器?PHP動態HTML問題

 <table> 
      <tr> 
       <th>File Path</th> 
       <th>Expiration</th> 
      </tr> 
      <?php 
       $result = mysql_query ($list_query); 
       $row_count = mysql_numrows ($result); 

       for ($i = 0; $i < $row_count; $i++) { 
        $id = mysql_result ($result, $i, "id"); 
        $path = mysql_result ($result, $i, "path"); 
        $expiration = mysql_result ($result, $i, "expires"); 
      ?> 
        <tr> 
         <td width="60%"> 
          <?php echo $path; ?> 
         </td> 
         <td> 
          <?php echo $expiration; ?> 
         </td> 
         <td> 
          <input type="submit" value="Delete Expiration" /> 
         </td> 
        </tr> 
      <?php 
       } 
      ?> 
     </table> 
+0

你輸入字段沒有任何形式的。 – afaolek 2011-06-06 18:00:18

+0

正如我在我的問題中指出的那樣,整張桌子都被包裹在一張表格中。 – Nik 2011-06-06 18:02:32

+0

你甚至不需要在這裏的表單。你可以建立一個「刪除鏈接」(你甚至可以把它變成一個帶有「onclick」Javascript事件的按鈕),將查詢ID傳遞給查詢參數(例如'/delete_expiration.php?id=1234')。然後您可以處理該頁面上的刪除。 – 2011-06-06 18:11:39

回答

6

使用表單中的隱藏字段。

<input type="hidden" name="id" value="<?php echo $id ?>"> 

您還應該爲每個新行開始一個新表單。

for ($i = 0; $i < $row_count; $i++) { 
        $id = mysql_result ($result, $i, "id"); 
        $path = mysql_result ($result, $i, "path"); 
        $expiration = mysql_result ($result, $i, "expires"); 
      ?> 
        <tr> 
         <td width="60%"> 
          <?php echo $path; ?> 
         </td> 
         <td> 
          <?php echo $expiration; ?> 
         </td> 
         <td> 
         <form method="POST" action="?"> 
          <input type="hidden" name="id" value="<?php echo $id ?>"> 
          <input type="submit" value="Delete Expiration" /> 
         </form> 
         </td> 
        </tr> 
      <?php 
       } 
      ?> 
+0

一個表格可以存在於另一個表格裏嗎?我不知道。 – afaolek 2011-06-06 18:10:57

+0

實際上,在這個解決方案中不需要外部表單。 – Extrakun 2011-06-06 18:17:29

+0

@afaolek不應該有一個表格包裝整個表格,而是需要有很多小表格來處理按鈕。你甚至可以在每行的「Edit」,「Delete」,「Change Order」等等上有很多表單。 '用於javascript – 2011-06-06 18:21:26

0

您應該設置一個隱藏字段某處包含你的行中的ID,幷包裹隱藏字段,並在每行一個表單提交按鈕:

<form> 
<input type="hidden" name="id" value="<?php echo $id; ?>" /> 
<input type="submit" value="Delete" /> 
</form> 

點擊後,獲得與ID $ _ POST [ '身份證']。

格爾茨,

XpertEase然而

+0

這仍然是一個重複的答案,但至少代碼是完整的。 – 2011-06-06 18:14:09

2

我同意的解決方案Extrakun提出,爲更完整,我想你指向使用JavaScript和DOM的選項。你可以使用jQuery在這個問題解釋說:

jquery + table row edit - String problem

+0

這對我所需要的東西來說太複雜了。 – Nik 2011-06-06 18:03:22

+0

這就是爲什麼我說你用Extrakun提出的解決方案更好,我仍然認爲使用Javascript是一種非常可行的編輯解決方案,並且通常也會降低服務器負載,所以值得在我的眼中提及這種特殊問題類型。特別是如果你期望很多用戶,我會建議這種方法。 – 2011-06-06 18:05:07