簡體   English   中英

使用ajax計算db中的行數

[英]Counting the number of rows from db with ajax

我正在制作一些評論系統,但我遇到了問題。 我讓它看起來像一個郵件系統,這樣郵件可以從收件箱移到兩個單獨的垃圾箱 - 垃圾箱和重要的,並計算它們包含的郵件數量,這就是問題所在。

當我將我的物品從收件箱發送到垃圾箱時,它們會去那里。 而當我想將重要信息從收件箱移到重要信息箱時,不僅標記的重要消息會去那里,而且由於某種我不知道的原因,我已經發送到垃圾箱的最新消息會得到也搬到了重要的垃圾箱。 我不知道為什么會這樣。 提前致謝

為了計算有多少消息,以及如何傳輸它們,我使用了ajax。 消息傳輸一直正常工作,直到我決定要對消息進行計數。 為了在不需要刷新頁面的情況下向我顯示有多少消息,我輸入了 setinterval。

阿賈克斯

<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 嗎?

這是它的樣子

在此處輸入圖片說明

有誰知道如何解決這個問題? 抱歉上傳了更長的問題。

在我看來,您在將項目移至垃圾箱或重要位置后並未清除項目選擇。

fadeOut方法只會將它們從頁面中隱藏,但您既不會取消選中它們,也不會在 AJAX 成功時刪除它們。 因此,您將再次在btn.click()上收集他們的 ID。

嘗試刪除項目:

$('tr#'+id[i]+'').fadeOut('slow').remove();

伙計們非常感謝你們。 問題是當fadeOut 完成時,復選框仍然被選中,但沒有被看到。 在 $('tr#'+id[i]+'').fadeOut('slow') 上添加 .remove(); 對我來說就足夠了。 問題就解決了。 再次,真誠地感謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM