我只能使用复选框从数据库中删除最后一行

时间:2014-04-13 17:45:24

标签: php mysql sql arrays foreach

我有一个html表,其中包含特定数据库表中的所有行值。

我创建了一个html表列来消除数据库中的特定行,在此列中存在一个复选框,用于检查并从数据库中删除多个表行。

但是我遇到了一些问题,我只能删除最后一行,例如:让我们假设您检查第二行,然后单击“提交”按钮,没有任何反应。

但是如果检查最后一个插入的行,然后单击“提交”,它将从数据库中删除该行。

我只能删除最后一行,我无法通过选中特定数量的复选框来删除多行。

我这样做了:

example

我正在使用MVC结构:

查看:

<form method='POST'>
<?php
echo "<td><input style='width: 50px;' class='delete' value='delete'  type='submit' name='del[]' /></td>";
    foreach($editjoarray as $key){    
    echo "
    <table>
    <tr>
      <td> ".$key['id']."</td>

      <td><input type='checkbox' name='delete[]' value=".$key['id']." /></td>
    </tr>
    </table>
    </form>";

    }

型号:

function fname(){

if(isset($_POST['del']) && !empty($_POST['delete'])) {
{
    $checkbox = $_POST['delete'];
    $countCheck = count($_POST['delete']);

for($i=0;$i<$countCheck;$i++) {
$del_id = $checkbox[$i];

echo $del_id;
  $sql = "DELETE FROM mytable WHERE id=$del_id";
   $exe = mysql_query($sql) or die(mysql_error());
}
}
}


   printFunction();
}

1 个答案:

答案 0 :(得分:1)

您正在关闭循环内的表单标记,因此始终只有一个删除复选框(作为post值)。您需要将表单</form>的结束标记移到循环外部,以便所有复选框都位于相同的表单中。

<form method='POST'>
<?php foreach($editjoarray as $key){    
   /*
   delete checkboxes
   input fields
   */

} ?>
</form>