php - $.ajax 不会删除带有复选框的多个表行

标签 php jquery mysql sql ajax

我目前正在努力了解为什么我的代码不执行以下多表行删除 php 代码:

incude("dbconnect.php");

if (isset($_POST["id"])) {

    foreach ($_POST["id"] as $id) {

        $sql = "DELETE FROM doctor WHERE DOC_LICENSE_NUM='.$id.'";

        if ($mydatabase->mysqli_query($sql) === TRUE) {
            echo "<div>Record deleted successfully</div>";
        } else {
            echo "Error deleting record: " . $mydatabase->error;
        }
        //$sql="DELETE from DOCTOR where DOC_LICENSE_NUM='".$id."'";
        //mysqli->query($connect, $sql);
    }
    //mysqli->close();
}

而 dbconnect 将 $mydatabase 链接到 sql。现在,我创建了一个 ID 为 btn_delete 的按钮,以便使用 JavaScript 单击函数来处理要在 SQL 中删除的多行。

<div style="float: right; margin: 0px 10px 10px 0px;"><button type="button" name="btn_delete" class="btn" id="btn_delete" ><span class="fa fa-trash" style="font-size:16px; margin-right:5px;"></span>Delete Multiple</button></div>

我所做的是,我使用 $.ajax 来收集数组中选中的复选框,并使用我的 php 的 url 来删除表中的行,如果它已进入 php,它将继续淡化行离开 table 。

$('#btn_delete').click(function(){
    if(confirm("Are you sure you want to delete these?")){
        var id=[];
        $(':checkbox:checked').each(function(i){
            id[i]=$(this).val();
            //alert(id);
        });

        if(id.length===0){
            alert("Please select at least two checkboxes");
        }else{
            $.ajax({
                url:'muldel.php',
                method: 'POST',
                data: {id:id},
                success: function(){
                    for (var i=0; i<id.length; i++){
                        $('tr#'+id[i]+'').css('background-color', '#ccc');
                        $('tr#'+id[i]+'').fadeOut('slow');
                    }
                    //location.reload();
                }

            });
        }
    }else{
        return false;
    }
});

但是,当它从我的表中淡出该行时,在我刷新它之后,它不会像我预期的那样删除这些行。我在这里错过了什么? (我忘了提及我使用了唯一的实体 key 作为我的 id)

最佳答案

从你的 jquery 中,你将 id 发布为逗号分隔,即。 1,2,3,4 等。这应该使用 explode(); 在 php 端 array(1,2,3,4) 转换为数组;或者 make array($_POST["id"]) 然后将其放入 foreach 循环中。

foreach ($array as $id) {

}

希望这有帮助

或者在php中没有foreach的替代方法,您可以在mysql中使用IN()。 如果有兴趣,请检查完整的代码。 http://www.phpzag.com/delete-multiple-rows-with-checkbox-using-jquery-php-mysql/

关于php - $.ajax 不会删除带有复选框的多个表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47260152/

相关文章:

php - 从 Facebook 的 Graph API 嵌入视频的最佳方式是什么?

php - JSON 'officially'是否支持 native 类型的转换?

javascript - 在 Javascript 中将 json 数组传递给 ajax 调用

php - 提交表单时mysql如何发出电子邮件警报?

php - Laravel Mail::send 无法在服务器上进行身份验证,但可以在本地工作

php - mysql 查询与连接

javascript - Dropzone.js addRemoveLinks 不工作

javascript - 将 CSS 应用于文本输入字段中的单个单词

mysql - 如何在将一个数据库与另一个数据库合并时解决主键冲突

java - Hibernate (mysql) 为同一个查询返回不同的结果