我试图让我的网页在SQL表中最高ID(auto_increment)增加时(在注册新用户时)采取措施(在这种情况下,会发出声音)。例如。 :注册了3个用户,最高ID =3。当新用户注册时,最高ID =4。如果发生这种情况,网页会发出回声/播放声音。
Js和PHP分别为:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval(function () {
$('#show').load('data.php')
}, 3000);
});
</script>
<?php
include ('../includes/dbh.inc.php');
if ($conn->connect_error) {
die("Connection error: " . $conn->connect_error);
}
$result = $conn->query("SELECT * FROM signs WHERE id = (SELECT MAX(id) FROM signs)");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo $row['firstName'];
echo $row['lastName'];
echo $row['inOrOut'] . '<br>';
$numId = $row['ID'] . '<br>';
echo $numId;
}
$value = 1;
$value = $numId;
if ($value < $numId) {
//echo '<script type="text/javascript">play_sound();</script>';
echo "increased";
}
else
echo "nothing detected";
}
}
?>
如您所知,我尝试比较最近的ID值和最新的ID值,但是失败了。
我的尝试是存储oldID的初始值,然后在替换它之前将其与newID进行比较。
最佳答案
您不能仅使用PHP来做到这一点。但是您可以这样:
如果您有网站,则在php输出中设置当前的最高ID。您可以每5分钟使用javascript调用另一个php脚本(或您认为有意义的任何其他时间间隔),从而使您获得当前的最高数字。如果php脚本中的数字大于javascript中的数字,则可以让javascript为您播放声音。
假设您的php脚本返回一个如下所示的ID:
{"id":4}
javascript调用的示例如下:
<html>
<head></head>
<script>
let highestId = 2;
window.setInterval(async function(){
const response = await fetch('http://localhost/jstest/index.php');
const myJson = await response.json();
console.log(console.log(myJson.id));
if (highestId < myJson.id) {
highestId = myJson.id
// here you can play your sound
$s = document.getElementById('myId');
$s.innerHTML = highestId;
}
}, 5000);
</script>
<body>
<span id="myId">0</span>
</body>
</html>