我试图让我的网页在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>

09-25 16:36
查看更多