[英]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.