Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数据库php jquery中添加新记录时的通知_Php_Jquery_Notifications - Fatal编程技术网

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

在数据库php jquery中添加新记录时的通知,php,jquery,notifications,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 reco

我需要关于上面题目的建议。我有以下代码:

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)));
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            alert(response);
        }
    });
},1000);
JQUERY:

$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)));
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            alert(response);
        }
    });
},1000);
这不是我期望的工作


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

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

你应该做的如下所示

javascript:

$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)));
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            alert(response);
        }
    });
},1000);
和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)));
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "file.php",
        success : function(response){
            alert(response);
        }
    });
},1000);

您是否已检查连接到db的网络

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


如果你能告诉服务器端你得到了什么样的响应,那么我可以帮你更多。

我认为你的整个方法都行不通。我建议,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);

对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']; 

附:我的第一个答案。

什么例外?我不明白?回答是->i_案例中的新记录,但表中没有新记录。。。没有错误!我把
error:function(){alert(“error”)}
放进去,如果xdazz-answer对您有效,那么接受他的回答。因此它从-1调用count_cases,如果cases count已经有50条记录呢?
-1
只是一个init值,以防止在函数的第一次运行时发出
警报。第一次运行后,
count_cases
以-50启动,PHP返回数字后,该函数将触发警报!=50(可能>50?)顺便说一句:一个完整的
SELECT
来计算行数是非常低效的。看看xdazz回答中的
COUNT
语句好的,我已经尝试添加新记录,但是没有出现通知。。。为什么?但是,当我刷新页面时,最后一个通知会一次又一次地显示,有什么建议吗?@jin您可以首先加载初始记录计数,而不仅仅是设置为0。您可以解释代码{if(i==0){old_count=data;}else{alert('New inquiry!';old_count=data;}}i=1;