0

我需要你的建议。我从数据库获取数据到表:ID,名称。表中有操作:删除、启用、阻止。When action Delete is selected, I would like, that respectively record will be deleted. 但是,我的脚本不起作用并且总是删除最后一条记录,即使我选择了另一条记录。我认为问题是,所有记录的选择名称和隐藏输入名称都是相似的。但我找不到方法,如何用不同的名称创建它们。欢迎任何建议。

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";
}

桌子

4

2 回答 2

2

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

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

// 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>";
        }
    }
}
于 2013-01-03T23:19:23.380 回答
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>";
于 2013-01-03T23:15:55.850 回答