[英]How do I trigger re-rendering when a class gets new data from a prop?
[英]How can I trigger PHP if a MySQL gets a new highest ID?
我试图让我的网页在我的 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 值来做一些事情,但失败了。
我的尝试是为 oldID 存储一个初始值,然后在替换它之前将其与 newID 进行比较。
你不能只用 PHP 做到这一点。 但是你可以这样做:如果你有一个网站,你在 php.ini 的输出中设置当前的最高 ID。 您可以使用 javascript 每 5 分钟(或您认为有意义的任何其他时间跨度)调用另一个 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>
您可以使用 cookie 变量来执行此操作。 使用 php 设置 cookie 值并使用 php 文件调用发送 cookie 值。 通过这种方式,您可以识别新的最高 ID。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval(function () {
var id = getCookie("highest_id");
$('#show').load('data.php?id='+id)
}, 3000);
});
</script>
如果更改了值,请在代码中添加 set cookie。
<?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) {
$numId = 0;
if ($row = $result->fetch_assoc()) {
$numId = $row['id'];
}
$value = $_GET['id'] ?? 0;
if ($value < $numId) {
//echo '<script type="text/javascript">play_sound();</script>';
echo "increased";
setcookie("highest_id", $numId, time() - 3600);
} else {
echo "nothing detected";
}
}
?>
注意要点:
在 PHP 中: setcookie("highest_id", $numId, time() - 3600);
在脚本中: getCookie("highest_id");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.