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

时间:2016-03-03 13:31:34

标签: php jquery mysql arrays ajax

当我使用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; ?>" width="4%">
        <input type="checkbox" rel="<? echo $id_news; ?>" name="checkbox[]" class="checkboxtable" value="<? echo $id_news; ?>">
        </td>
        <td class="tdtable" id="<? echo $id_news; ?>" width="50%">
        <? 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'];,但它不起作用。我该如何删除选定的行?

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

你在ajax调用(data: arr)中传递一个原始数组,但是你期望一个命名变量($_POST['arr'])。

我不确定jquery是否可以使用data: arr(多年来没有使用它)但是如果是,那么你要找的ids数组只是$_POST整体。

如果情况并非如此,或者您想要$_POST['arr'],则应将JS更改为data: {arr: arr}