从表中删除错误的记录

时间:2013-01-03 23:09:58

标签: php forms select html-table

我需要你的建议。我从数据库获取数据到表:ID,名称。 表中有Actions:Delete,Enable,Block。当动作删除 选中,我想,分别记录将被删除。 但是,我的脚本不起作用,总是删除最后一条记录,即使我选择 另一个记录。我认为问题是,选择名称和隐藏输入 所有记录的名称都相似。但我找不到方法,如何创造 他们有不同的名字。 欢迎任何建议。

HTML:

  <form method='post'> 
  <table border='1'>
  <tr>
  <th> ID </th>
<th> Name </th>
<th> Action </th>
</tr>

代码:

$db = new PDO('mysql:host=localhost;dbname=****;charset=utf8', '**', '**');
$query = $db->query("SELECT ID,statusas,login,vardas,email FROM users");

while($row = $query->fetch(PDO::FETCH_BOTH)) { 
 echo "<tr><input type='hidden' name='id' value='".$row[0]."'>";
 echo "<td>".$row[0]."</td>";
 //echo "<td>".$row[1]."</td>";
 echo "<td>".$row[2]."</td>";
 //echo "<td>".$row[3]."</td>";
// echo "<td>".$row[4]."</td>";
 echo "<td><select name='action'>
             <option value='choose'>Choose..</option>
             <option value='delete'> Delete </option>
             <option value='enable'> Enable </option>
             <option value='block'> Block</option>
        </select></td>";
   echo "</tr>";
 }
 echo "<br><input type='submit' name='submit'></table></form>";

 if($_POST['submit']) {
   if ($_POST['action']== 'delete') {
   echo $_POST['id']; // delete query, but now I am just checking if I get a proper ID.
  }
}
else {
echo "bad";
}

Table

2 个答案:

答案 0 :(得分:2)

您在表单中的每一行使用相同的name属性,因此它们被覆盖并且正在使用最后一个。

你可以做的是以自己的形式包装每一行,或者你可以做这样的事情,并且只有一个提交按钮来执行每一行的操作:

// remove hidden id element

...

echo "<td><select name='action[" . $row[0] . "]'>"

...
// remove submit button in the loop, but add it after the while loop
...

if (isset($_POST['action']))
{
    foreach ($_POST['action'] as $id => $action)
    {
        if ($action !== 'choose')
        {
            // do action on the id;
            echo $id . " -> " . $action . "<br>";
        }
    }
}

答案 1 :(得分:0)

您将每个ID放在表单中,这会导致CGI发送如下内容:id = 1,id = 2,id = 3等。然后PHP只读取最后一个ID并删除它。

要解决此问题,请为每一行提供自己的表单。

while($row = $query->fetch(PDO::FETCH_BOTH)) { 
 echo "<form method='post'>";
 echo "<tr><input type='hidden' name='id' value='".$row[0]."'>";
 echo "<td>".$row[0]."</td>";
 //echo "<td>".$row[1]."</td>";
 echo "<td>".$row[2]."</td>";
 //echo "<td>".$row[3]."</td>";
// echo "<td>".$row[4]."</td>";
 echo "<td><select name='action'>
             <option value='choose'>Choose..</option>
             <option value='delete'> Delete </option>
             <option value='enable'> Enable </option>
             <option value='block'> Block</option>
        </select></td>";
   echo "</tr>";
   echo "</form>";
 }
 echo "<br><input type='submit' name='submit'></table>";