2011-06-06 55 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