删除复选框选中的记录[复制]


可能重复:</ strong>

使用复选框删除选中的值 </ p>
</ blockquote>

\ n

我想删除使用Checkbox选择的记录</ p>

复选框代码</ p>

 &lt; input name =“复选框[  ]“type =”checkbox“value =”&lt;?= $ row [s_id]?&gt;“  id =“checkbox []”&gt; 
</ code> </ pre>

ON删除按钮</ p>

  if($ _ POST ['delete  '])
{
$的CNT =阵列();
// $ CNT = array_count_values($ _ POST [复选框]);
$的CNT =计数($ _ POST [' 复选框']);
有关( $ i = 0; $ i&lt; $ cnt; $ i ++)
{
$ del_id = $ checkbox [$ i];
// $ sql =“DELETE FROM t_s_list WHEREs_id ='”。mysql_real_escape_string ($ del_id)。“'”;
$ sql =“DELETE * FROM t_s_list WHEREs_id ='$ del_id'”;
$ result = mysql_query($ sql);
mysql_error();
$ NEW =“删除所选记录”;
}
$ NEW =“未删除所选记录”;
}
</ code> </ pre>
</ div>

展开原文

原文

Possible Duplicate:
Delete values selected using checkbox

I want to delete records that has been selected using Checkbox

Checkbox code

<input name="checkbox[]" type="checkbox" value="<?=$row[s_id]?>" id="checkbox[]">

ON delete button

if($_POST['delete'])
{
$cnt=array();
//$cnt=array_count_values($_POST[checkbox]);
$cnt=count($_POST['checkbox']);
for($i=0; $i < $cnt; $i++)
{
        $del_id=$checkbox[$i];
        //$sql = "DELETE FROM t_s_list WHERE `s_id`='".mysql_real_escape_string($del_id)."'";
        $sql = "DELETE * FROM t_s_list WHERE `s_id`= '$del_id'";
        $result = mysql_query($sql);
        mysql_error();
        $NEW="Selected records Deleted";
}
$NEW="Selected records not Deleted";
}

php

3个回答



决定添加我自己的答案,该答案基本上基于@Sanjay Mohnani的答案。</ p>

 <  code> if($ _ POST ['delete']){
//存储复选框值数组
$ allCheckBoxId = $ _POST ['checkbox'];
//使用array_map为MySQL查询转义所有这些值
array_map('mysql_real_escape_string',$ allCheckBoxId);
// implode将数组值连接成一个字符串除以逗号
$ ids = implode(“,”,$ allCheckBoxId);
//构建查询
$ sql =“DELETE FROM t_s_list WHEREs_idIN($ ids)”;
//运行查询
mysql_query($ sql);

$ NEW =“已删除所选记录”;

}

</ code> </ pre>

请记住,无论何时在MySQL查询中使用来自外部世界的任何值($ _POST,$ _GET,$ _COOKIE等), 事先逃脱它。 恶意用户可以轻松操纵这些值。 这种类型的攻击称为SQL注入。 您可以使用 mysql_real_escape_string()来转义值。</ p>

如果要转义数组中的所有值,可以使用 array_map(),它将一个函数应用于数组的所有元素。</ p>

输出来自外部世界的东西时也要小心 。 例如,你永远不应该 echo $ _GET ['something']; </ code>,正确地将其转义为输出(类似 echo htmlspecialchars($ _ GET ['something'])</ code>) 。 </ p>

永远不要相信来自外部的任何内容。</ strong> </ p>

还有一件事:在HTML文档中,ID只能 用于一个元素。 在您的代码中,所有复选框都将具有ID 复选框[] </ code>,这不是一个好习惯。</ p>

请执行以下操作:</ p>

<前> &lt; input name =“checkbox []”type =“checkbox”value =“&lt;?= $ row [s_id]?&gt;” id =“checkbox_&lt;?= $ row [s_id]?&gt;”&gt;
</ code> </ pre>

确保您的元素具有不同的ID或不使用ID 一点都不 当您发布表单时,只会发布NAME,ID仅适用于客户端(例如,可以与CSS或Javascript一起使用)。</ p>
</ div>

展开原文

原文

Decided to add my own answer which is basically based on @Sanjay Mohnani's answer.

if($_POST['delete']) {
    //store the array of checkbox values
    $allCheckBoxId = $_POST['checkbox'];
    //escaping all of them for a MySQL query using array_map
    array_map ('mysql_real_escape_string', $allCheckBoxId);
    //implode will concatenate array values into a string divided by commas
    $ids = implode(",", $allCheckBoxId);
    //building query
    $sql = "DELETE FROM t_s_list WHERE `s_id` IN ($ids)";
    //running query
    mysql_query($sql);

    $NEW="Selected records Deleted";

}

Please remember, that whenever you use any value that came from the outside world ($_POST, $_GET, $_COOKIE, etc.) in a MySQL query, escape it beforehand. These values can be easily manipulated by malicious users. This type of attack is called SQL Injection. You can escape values using mysql_real_escape_string().

If you want to escape all the values in an array, you can use array_map(), which applies a function to all elements of an array.

You should also be careful when you output something that came from the outside world. For example you should never do echo $_GET['something'];, escape it properly for output (something like echo htmlspecialchars($_GET['something'])).

Never trust anything that comes from outside.

One more thing: in an HTML document, an ID can only be used on one element. In your code, all the checkboxes will have the ID checkbox[] which is not a good practice.

Please do something like:

<input name="checkbox[]" type="checkbox" value="<?=$row[s_id]?>" id="checkbox_<?=$row[s_id]?>">

which ensures that your elements have a different ID or don't use ID at all. When you post the form, only NAME will be posted, ID is for the client side only (can be used with CSS or Javascript for example).

drtsd7864
drtsd7864 得到了我的问题的答案。 谢谢....
9 年多之前 回复
doq70020
doq70020 请打开一个单独的问题,评论不适合解释:)。
9 年多之前 回复
douchendan0040
douchendan0040 还有一个问题。 我使用的是2个文件,一个是managing_records.php(用于列出所有记录),另一个是action.php(用于执行操作)。 我想要采取行动写下行动。 一个用于删除选定的记录,另一个用于发布选定的记录。 在管理记录时使用form方法作为“post”我已成功触发查询以删除所选记录。 但我也希望同时实现发布按钮,以便用户导航到操作页面并相应地更新查询。 因为这次我还要传递一组检查值。
9 年多之前 回复
dongshi1424
dongshi1424 如果您希望将表单发布到其他页面,请执行<form action =“anotherpage.php”method =“post”>。
9 年多之前 回复
douxin1163
douxin1163 向你致敬先生。谢谢你。 请帮我在另一个文件中写相同的功能。 那就是我想按下删除按钮时导航到其他页面(我将要写这个功能)。 仍然写在那个页面。
9 年多之前 回复
dongluo8303
dongluo8303 : 谢谢。 这个内爆功能我是新手。
9 年多之前 回复



尝试: - </ p>

  if($ _ POST ['delete'])\  n {
if(count($ _ POST ['checkbox'])&gt; 0){
foreach($ _ POST ['checkbox'] as $ checkbox)
{
$ del_id = $ checkbox;

$ sql =“DELETE * FROM t_s_list WHEREs_id ='$ del_id'”;

$ result = mysql_query($ sql);

mysql_error();

}
echo“Selected Rows deleted”;

} else {
$ NEW =“无需删除”;

}

}
</ code> </ pre>
</ div>

展开原文

原文

try:-

if($_POST['delete'])  
{  
if(count($_POST['checkbox']) > 0) {  
   foreach($_POST['checkbox'] as $checkbox)  
   {  
        $del_id=$checkbox;  
        $sql = "DELETE * FROM t_s_list WHERE `s_id`= '$del_id'";  
        $result = mysql_query($sql);  
        mysql_error();  

   }  
   echo "Selected Rows deleted";  
} else {  
     $NEW="Nothing to Delete";  
}

}

duanba2001
duanba2001 哦,这个代码也容易受到SQL注入攻击。
9 年多之前 回复
dongqing904999
dongqing904999 你有任何形式的名称为删除的元素。 你能尝试在foreach循环中放置一个echo并查看它是否跳过,同时放置一个print_r($ _ POST ['checkbox'])。 在循环之前获得更好的主意
9 年多之前 回复
douzhulan1815
douzhulan1815 如果您选择了10个复选框,则实际上并不想运行10个查询。 在foreach中构建1个查询,然后运行它。
9 年多之前 回复
du155305
du155305 使用此代码我得到msg为“已删除的选定代码”,但实际上记录没有删除。 这意味着foreach循环正在跳过。
9 年多之前 回复



尝试此代码,</ p>

  if($ _ POST ['delete'])

{
$ allCheckBoxId = $ _POST ['checkbox'];
$ ids = implode(“,”,$ allCheckBoxId);
$ sql =“从t_s_list删除WHEREs_idIN(”。$。ids 。“)”;
mysql_query($ sql)或die(mysql_error());
$ NEW =“删除所选记录”;

}
</ code> </ pre>
</ DIV>

展开原文

原文

Try this code,

if($_POST['delete'])
{
    $allCheckBoxId = $_POST['checkbox'];
    $ids = implode(",", $allCheckBoxId);
    $sql = "DELETE from t_s_list WHERE `s_id` IN (".$ids.")";
    mysql_query($sql) or die(mysql_error());
    $NEW="Selected records Deleted";

}

duanjia4969
duanjia4969 您需要做的就是包含'anotherfile.php';。 请阅读关于include()的PHP手册。 如果您还有其他问题,请打开一个新问题。
9 年多之前 回复
dqvs45976
dqvs45976 我想在另一个文件中写这个删除函数,请你解释一下需要发送什么值。 如何修改代码。
9 年多之前 回复
dongyukang7006
dongyukang7006 -1删除查询*的语法错误无法使用
9 年多之前 回复
dongluo8439
dongluo8439 请在所有POST值上应用mysql_real_escape_string。 您的代码将导致安全漏洞(SQL注入)。 @Aditii:请不要在互联网上使用此代码,直到Sanjay修复它为止。
9 年多之前 回复
dpj775835868
dpj775835868 谢谢先生,请你解释一下这段代码,因为我对此更新鲜。
9 年多之前 回复
立即提问