如何使我的 php 页面根据数据库中的更新而变化?
How to make my php page change according to updates in database?
我这里有一个员工 table 想看看他们是在办公室还是在外。我有一个 php 文件来 select 来自数据库的状态。我尝试在数据库中将状态从 out 更改为 in,再从 in 更改为 out,但在我重新加载它之前,我无法在 php 页面中看到任何更改。当数据库发生变化时,如何让我的 php 页面自动更改?我是新手所以请帮忙......提前致谢。我这里有 php 文件:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'pass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT Name,Status FROM Employees';
mysql_select_db('new');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Name :{$row['Name']} <br> ".
"Status: {$row['Status']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
使用下面的mysql
while($row = mysql_fetch_array($retval))
{
echo "Name :{$row['Name']} <br> ".
"Status: {$row['Status']} <br> ".
"--------------------------------<br>";
}
HTTP 不是异步协议。刷新网页上数据的唯一方法是重新加载页面,例如;重新执行 SQL 查询,解析并显示结果。你可以使用 AJAX 方法做你想做的事。但是,我对 "in-house" 页面做了类似的事情,每 5 分钟重新加载一次...
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<script type="text/JavaScript">
<!--
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
// -->
</script>
<title>TITLE</title>
</head>
<body onload="JavaScript:timedRefresh(300000);">
<?php //do the query, display results ...
?>
</body>
</html>
如果你真的想要这个,你可以每隔 5 秒做一个 ajax 请求,将旧值与请求一起发送并将它们与数据库进行比较,如果有差异则触发刷新,这样你只在有实际更新时刷新你的页面。 (或者你只是每 5 秒使用 ajax 更新它,看起来比整页刷新干净很多)
虽然两者都需要轮询,但如果不每隔这么多秒检查一次,就没有简单的方法可以做到。
我这里有一个员工 table 想看看他们是在办公室还是在外。我有一个 php 文件来 select 来自数据库的状态。我尝试在数据库中将状态从 out 更改为 in,再从 in 更改为 out,但在我重新加载它之前,我无法在 php 页面中看到任何更改。当数据库发生变化时,如何让我的 php 页面自动更改?我是新手所以请帮忙......提前致谢。我这里有 php 文件:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'pass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT Name,Status FROM Employees';
mysql_select_db('new');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Name :{$row['Name']} <br> ".
"Status: {$row['Status']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
使用下面的mysql
while($row = mysql_fetch_array($retval))
{
echo "Name :{$row['Name']} <br> ".
"Status: {$row['Status']} <br> ".
"--------------------------------<br>";
}
HTTP 不是异步协议。刷新网页上数据的唯一方法是重新加载页面,例如;重新执行 SQL 查询,解析并显示结果。你可以使用 AJAX 方法做你想做的事。但是,我对 "in-house" 页面做了类似的事情,每 5 分钟重新加载一次...
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<script type="text/JavaScript">
<!--
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
// -->
</script>
<title>TITLE</title>
</head>
<body onload="JavaScript:timedRefresh(300000);">
<?php //do the query, display results ...
?>
</body>
</html>
如果你真的想要这个,你可以每隔 5 秒做一个 ajax 请求,将旧值与请求一起发送并将它们与数据库进行比较,如果有差异则触发刷新,这样你只在有实际更新时刷新你的页面。 (或者你只是每 5 秒使用 ajax 更新它,看起来比整页刷新干净很多)
虽然两者都需要轮询,但如果不每隔这么多秒检查一次,就没有简单的方法可以做到。