Итак, вы хотите обновить график, как только какое-то значение было написано на стороне сервера, правильно? Как упоминалось в моем комментарии, использование инструкций PHP в вашем блоке JS не будет работать, поскольку PHP-код будет запущен при загрузке страницы и впоследствии не изменится. Вместо этого, вы должны использовать двухступенчатый подход:
- Используйте повторяющееся AJAX вызова для опроса изменений
- Создать PHP-страницу, которая сообщает об изменениях
JS код (с использованием Jquery):
window.setInterval(function() {
$.ajax('change-listener.php', {
success: function(data) {
if (data.changed) {
for(var i in data.newValue) {
dps.push(data.newValue[i]);
}
chart.render();
}
}
});
}, 3000);
Проверить белый ICH строки были написаны в заданный промежуток времени (если ваш таблицу, правильные записи в имеет метку времени) и возвращает соответствующие значения с помощью JSON для сценария JS:
PHP код:
$query= 'SELECT strValue FROM [YOURTABLE] WHERE created > DATE_SUB(now(),INTERVAL 3 SECOND)';
$data= array();
if ($result = $mysqli->query($query)) {
if (mysqli_num_rows($result)) {
$data['changed']= TRUE;
while($obj = $result->fetch_object()){
$data['newValues'][]= $obj->strValue;
}
} else {
$data['changed']= FALSE;
}
}
$result->close();
header('Content-Type: application/json');
print json_encode($data);
альтернативным способом было бы сохранить вновь созданные значения в сеансе пользователя:
PHP код, часть 1 (внутри скрипта, который обрабатывает хранящий O F новые значения):
session_start();
$_SESSION['newValues'][]= $str;
PHP код, часть 2 (вместо опроса базы данных, опрашивать сессии):
session_start();
if (isset($_SESSION['newValues'])) {
$data['changed']= TRUE;
$data['newValues']) $_SESSION['newValues'];
unset($_SESSION['newValues'];
} else {
$data['changed']= FALSE;
}
Второй подход представляет собой чистый сценарий однопользовательского: как в скором времени, когда скрипт PHP проверяет изменения, изменения возвращаются один раз, а затем список изменений сбрасывается, чтобы никогда не возвращать одинаковые значения дважды.
Этот код для меня не имеет смысла: вы должны знать, что части PHP исполняются и выходят из системы сразу после создания страницы, поэтому элемент '$ new' никогда не будет обновляться через PHP. Блок 'if(). Change()' немедленно будет запущен, потому что он вызовет событие изменения, а затем выполнит внутренний код. Вы определяете функцию, называемую 'check()', но в вашем опубликованном коде вы ее не выполняете. – SaschaM78
Да, я получаю проблему в функции '.change()', но для этого, как я могу использовать этот оператор, когда значение '$ new' изменяется, что означает, что число num_rows увеличивается только тогда, когда будет выполняться функция UpdateChart. – Lakshya
Я все еще не уверен, правильно ли я получил вас, но я дам вам ответ, который, надеюсь, подходит. – SaschaM78