在数据库php-jquery中添加新记录时的通知

时间:2012-01-27 07:40:03

标签: php jquery notifications

我需要有关上述标题的建议。我有以下代码:

PHP:

$sql = "SELECT * FROM i_case";
$qry = pg_query($connection, $sql);
$res = pg_num_rows($qry);   

$sql_1 = "SELECT * FROM i_case";
$qry_1 = pg_query($connection, $sql_1);
$res_1 = pg_num_rows($qry_1);

do {
    echo "new record on i_case";
} while($res !=  $res_1 and !(usleep(10000)));

JQUERY:

setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            alert(response);
        }
    });
},1000);

这不是我期待的工作。

我不知道代码中的问题在哪里?

4 个答案:

答案 0 :(得分:6)

您的循环甚至不会运行一次,因为$res几乎在所有情况下都与$res_1相同。如果循环运行,那就是一个可怕的无限循环。

你应该做的就像下面一样。

javascript:

var old_count = 0;

setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(data){
            if (data > old_count) {
                alert('new record on i_case');
                old_count = data;
            }
        }
    });
},1000);

和PHP代码:

$sql = "SELECT count(*) as count FROM i_case";
$qry = pg_query($connection, $sql);
$row = pg_fetch_assoc($qry);
echo $row['count'];

答案 1 :(得分:3)

对xdazz答案进行一些调整。在加载页面时首次避免发出警报。

JS代码:

var old_count = 0;
var i = 0;
setInterval(function(){    
$.ajax({
    type : "POST",
    url : "notify.php",
    success : function(data){
        if (data > old_count) { if (i == 0){old_count = data;} 
            else{
            alert('New Enquiry!');
            old_count = data;}
        } i=1;
    }
});
},1000);

PHP代码:

include("config.php");   
$sql = "SELECT count(*) as count FROM Enquiry";
$qry = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($qry);
echo $row['count']; 

P.S。我的第一个Stackoverflow答案。

答案 2 :(得分:2)

我认为你的整个方法都行不通。我建议,PHP只生成计数和JS来检查它是否已经改变。

$sql = "SELECT * FROM i_case";
$qry = pg_query($connection, $sql);
$res = pg_num_rows($qry);   
echo $res;

在JS中,你可以做这样的事情:

var count_cases = -1;
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            if (count_cases != -1 && count_cases != response) alert('new record on i_case');
            count_cases = response;
        }
    });
},1000);

答案 3 :(得分:1)

你检查过你是否已连接到db?

我的意思是$connection变量返回true?,因为我没有在php中找到任何连接到数据库的代码。

如果您可以告诉您从服务器端获得的响应,那么我可以帮助您了解更多信息。