![](/img/trans.png)
[英]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.