如何使用php和ajax删除多条记录

Posted

技术标签:

【中文标题】如何使用php和ajax删除多条记录【英文标题】:How to delete multiple records using php and ajax 【发布时间】:2016-06-16 20:41:52 【问题描述】:

当我使用 php 显示新闻时,我有多行新闻。我正在尝试使用每行旁边的复选框同时删除多行。

这是我的 php 代码

<?
$select_news = $mysqli->query("SELECT * FROM news order by time desc limit $x,$numbershownews");

            while ($rows_news = $select_news->fetch_array(MYSQL_ASSOC))

            $id_news       = $rows_news ['id'];
            $title_news    = $rows_news ['title'];
        ?>
        <table>
        <tr rel="<? echo $id_news; ?>">

        <td class="tdtable" id="<? echo $id_news; ?>" >
        <input type="checkbox" rel="<? echo $id_news; ?>" name="checkbox[]" class="checkboxtable" value="<? echo $id_news; ?>">
        </td>
        <td class="tdtable" id="<? echo $id_news; ?>" >
        <? echo  $title_news; ?>
        </td>
        </tr
        </table
    <?
    
    ?>
<button class="deletecheckednews">Delete</button>

这是jquery代码

$(".deletecheckednews").on( 'click', function () 

  var arr = new Array();

  $(".checkboxtable:checked").each(function () 
    arr.push($(this).attr("rel"));
  );

  if(arr == "") 
    alertify.error("no selected news"); 
   else 

    $.ajax(
      type: "POST",
      url: "action/delete_multiple_news.php",
      data: arr ,
      cache: false,
      success: function(data) 
        alertify.success(data);

        $.each(arr, function(key, value) 
          $("tr[rel="+value+"]").fadeOut();
        );
      
    );

  

  return false
);

如何将此数组传递给“delete_multiple_news.php”?我试过这个$checkedneww = $_REQUEST['arr']; 和这个$checkedneww = $_POST['arr']; 但它不起作用。我将如何删除选定的行?

【问题讨论】:

error_log(print_r($_POST,1)); 这样您就可以看到您正在处理的数据结构。 我会把它放在这里作为奖励。 en.wikipedia.org/wiki/Indent_style 你的代码中的alertify.success(data);mens 是什么?请显示delete_multiple_news.php的代码 【参考方案1】:

开启

$.ajax(
type: "POST",
url: "action/delete_multiple_news.php",
data: "array_del": arr , / <-
cache: false,
success: function(data)
alertify.success(data);

在 PHP 中使用

$array_del = filter_input(INPUT_POST, 'array_del', FILTER_SANITIZE_STRING);

如果您想查看结果,请执行以下操作:

在 PHP ajax 中:

$array_del = filter_input(INPUT_POST, 'array_del', FILTER_SANITIZE_STRING);
echo json_encode($array_del);

在js中:

$.ajax(
type: "POST",
url: "action/delete_multiple_news.php",
data: arr ,
cache: false,
success: function(data)
alertify.success(data);
console.debug(data);
//$.each(arr, function(key, value) 
//    $("tr[rel="+value+"]").fadeOut();
//);


);

要删除你可以在sql中使用WHERE来过滤你想要删除的结果示例。如果结果不止一个,则创建一个循环或一个公共列。

$mysqli->query(DELETE FROM table_name WHERE some_column = $array_del[some_column]);

【讨论】:

【参考方案2】:

您在 ajax 调用 (data: arr) 中传递了一个原始数组,但您需要一个命名变量 ($_POST['arr'])。

我不确定 jquery 是否可以使用 data: arr(多年未使用它),但如果可以,那么您要查找的 ids 数组就是整个 $_POST

如果不是这样,或者你想做$_POST['arr'],你应该把你的JS改成data: arr: arr

【讨论】:

以上是关于如何使用php和ajax删除多条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用猫鼬删除nodejs中的多条记录

如何使用 Entity Framework ASP.Net MVC 5 删除多条记录? [关闭]

Bootstrap Modal ajax 保存多条记录,bootstrapValidator

如何批量删除数据库里某个表里的多条记录

php问题 confirm在ajax中如何使用?

如何使用ajax删除asp.net中的记录