Уведомление о добавлении новой записи в базу данных php-jquery - PullRequest
3 голосов
/ 27 января 2012

Мне нужен совет по поводу названия выше. У меня есть следующий кусок кода:

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 ]

6 голосов
/ 27 января 2012

Ваш цикл даже не будет запущен один раз, потому что $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'];
3 голосов
/ 07 июля 2016

Небольшой твик к ответу 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 голосов
/ 27 января 2012

Я думаю, что весь ваш подход не будет работать.Я предлагаю, чтобы 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);
1 голос
/ 27 января 2012

Вы проверили, подключены ли вы к БД?

я имею в виду $connection переменная возвращает true ?, потому что я не нашел в php кода, который подключается к базе данных.

Если бы вы могли сказать, какой ответ вы получаетеконец сервера, тогда я могу помочь вам немного больше.

...