php - mysql更改时更新页面?

标签 php javascript mysql ajax

我在一个网站上有一个页面,其工作方式类似于反向拍卖。它有一个 javascript 倒计时计时器,该计时器会根据拍卖的时间倒计时。当它达到零时,拍卖结束并刷新页面。

一切如梦如幻,但问题是如果出价我希望页面刷新显示该出价,并更新许多其他元素。

该网站目前通过 flash 检查 php 文件来做到这一点,当 flash 注意到更改时刷新页面。这很好,但我们不会删除 flash 并只使用 javascript,因此我们在 iPhone/iPad 和其他移动设备上运行网站不会有任何问题。

因此,经过漫长的积累之后,我需要一个解决方案,无论是 AJAX 还是其他方法,欢迎在这里提供任何帮助...

提前致谢

最佳答案

我在没有使用 jQuery 的情况下做了一些你想要的事情;我不想只为一个功能安装 jQuery。这有点笼统,因为我实际使用的代码对其他人来说毫无意义。我在 iframe 中使用了一个 PHP 页面来定期检查数据库中的关键字段是否发生了变化。如果它更改了 PHP 脚本,则设置一个 cookie。在主页中,一些 javascript 会定期读取 cookie 并在 cookie 指示数据已更改时刷新页面。这大约是我所做的。我修改了代码,使其不再特定于我的需求。

首先你需要一个简短的 PHP 页面来定期检查数据库(主页面需要设置适当的 cookie):

<?
//This page is named "check.php"

$OldTimestamp = $_COOKIE["timestamp"];
$id = $_COOKIE["id"];

mysql_connect('localhost','MyUsername','MyPassword');
mysql_select_db('MyDatabase');

$query = "SELECT timestamp FROM MyTable WHERE id = '$id'";
$result = mysql_query($query);
$numrows = mysql_numrows($result);

if($numrows > 0){
  $timestamp = mysql_result($result,0,"timestamp");
  if($timestamp == $OldTimestamp){
    setcookie("DataChanged", "N");
  }else{
    setcookie("DataChanged", "Y");
  }
}

?>
<html>
<head>
<meta http-equiv='refresh' content='5'>
</head>
<body>
</body>
</html>

在要刷新的页面的 iframe 中加载此页面

<iframe src='check.php' width='0' height='0' frameborder='0'></iframe>

现在您需要在要刷新的页面上使用一些 javascript。这包括我能找到的最短的 cookie 阅读器以及一些代码,用于每 15 秒检查一次 cookie 并在 cookie 指示数据已更改时刷新页面。

<script language='javascript'>
function get_cookie(name){
  return(document.cookie.match('(^|; )'+name+'=([^;]*)')||0)[2]
}
function checkDatabase(){
  if(get_cookie('DataChanged')=="Y"){
    location.href='ThisPage.php';
  }
}
setInterval(function(){checkDatabase()},15000);
</script>

关于php - mysql更改时更新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137972/

相关文章:

mysql - 更改mysql中日期的格式

php - 无法使用 php 和 bootstrap 表单将数据插入 MySQL

php - Laravel-按升序和降序排列记录

javascript - 允许 HTML 中的 Javascript 函数中使用撇号

mysql - 聚合3个表,检索其中一个表的所有数据

mysql - 如何使用我的示例中的 codeigniter 或 mysql 查询显示数据

php - Htaccess - 将目录映射到 url 并隐藏目录名称

javascript - 根据 Laravel 中未定义的父 ID 获取 ajax 下拉列表

JavaScript 回调说明

javascript - jQuery Turnbox.JS - 无需用户交互的动画