使用ajax计算db中的行数

时间:2017-11-25 17:39:41

标签: javascript php jquery ajax

我正在制作一些评论系统,我遇到了问题。我让它看起来像一个邮件系统,这样邮件就可以从收件箱移动到两个独立的垃圾箱 - 垃圾和重要的,并计算它们包含的邮件数量,这就是问题所在。

当我将收件箱中的物品发送到垃圾箱时,他们会去那里。当我想将重要信息从收件箱移动到重要的信息箱时,不仅标记的重要信息会在那里,而且,由于某些原因我不知道,我已经发送到垃圾箱的最新消息得到了也搬到了重要的垃圾箱。我不知道为什么会这样。提前致谢

为了计算有多少消息,以及如何传输它们,我使用了ajax。消息传输一直正常,直到我决定要对消息进行计数。为了让它向我显示有多少消息,而不需要刷新页面,我输入了setinterval。

的Ajax

<script type="text/javascript">
$(document).ready(function() {
    $('#btn_delete').click(function(){
        if(confirm("Are you sure you want remove to trash ?")){
            var id = [];

            $(':checkbox:checked').each(function(i){
                id[i] = $(this).val();
            });

            if(id.length === 0){ //tell you if the array is empty
                alert("Please Select atleast one checkbox");
            } else {
                $.ajax({
                    url:'private/email/trash.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');
                        }
                    }
                });
            }
        } else {
            return false;
        }
    });
});
$(document).ready(function(){
    $('#btn_important').click(function(){
        if(confirm("Are you sure you want remove to important ?")){

            var id = [];

            $(':checkbox:checked').each(function(i){
                id[i] = $(this).val();
            });

            if(id.length === 0){ //tell you if the array is empty
                alert("Please Select atleast one checkbox");
            } else {
                $.ajax({
                    url:'private/email/important.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');
                        }
                    }
                });
            }
        } else {
            return false;
        }
    });
});

setInterval(function () {
    $('#show').load('private/email/count_inbox.php');
    $('#inbox').load('private/email/count_inbox.php');
    $('#important').load('private/email/count_important.php');
    $('#trash').load('private/email/count_trash.php');
}, 5000);
</script>

计算垃圾箱

<?php
require_once("../../private/initialize.php"); 
$query = "SELECT COUNT(*) as total FROM comments WHERE deleted = 0";
$result = mysqli_query($dbc, $query);
$com = mysqli_fetch_assoc($result);
echo $com['total'];

mysqli_free_result($result);
mysqli_close($dbc);
?>

更新重要

<?php
require_once("../../private/initialize.php");

if(isset($_POST["id"])) {
    foreach($_POST["id"] as $id) {
        $query = "UPDATE comments SET deleted = 2 WHERE comment_id = '".$id."'";
        mysqli_query($dbc, $query);
    }
}
mysqli_free_result($query);
mysqli_close($dbc);

?>

重要的

<?php
require_once("../../private/initialize.php"); 
$query = "SELECT COUNT(*) as total FROM comments WHERE deleted = 2";
$result = mysqli_query($dbc, $query);
$com = mysqli_fetch_assoc($result);
echo $com['total'];

mysqli_free_result($result);
mysqli_close($dbc);
?>

首先这样做是否明智?我应该没有输入setinterval吗?

这就是它的外观

enter image description here

有没有人知道如何解决这个问题?很抱歉上传了一个较长的问题。

1 个答案:

答案 0 :(得分:0)

对我来说,在把它们移到垃圾桶或重要物品后,你不会清理物品的选择。

fadeOut方法只会将它们隐藏在页面中,但您既不会取消选中它们,也不会在AJAX成功时删除它们。因此,您正在btn.click()再次收集ID。

尝试删除项目:$('tr#'+id[i]+'').fadeOut('slow').remove();