简单的Javascript MYSQL检查功能

时间:2009-10-09 12:18:40

标签: php javascript mysql timer

我目前在网络开发方面不是很熟练,但我设法用PHP创建一个Web应用程序,用于查询MYSQL数据库并以HTML格式显示数据。

我想使用我已创建的时间戳字段检查表是否已更改,并在每次插入时更新。比较两个时间戳(前一个和当前)是关键,

但是我没有那么多javascript处理。

如何将参数传递给我的hastablechanged.php文件(上一个时间戳)并简单地将一个标志(1:已更改,0:未更改)返回给javascript? 和...如何成为一个基本的javascript函数来运行一个计时器并调用hastablechanged.php发布old_timestamp并接收标志,然后更新div?

我一直在谷歌搜索,但我发现的解决方案非常复杂,我知道我只需要一个javascript函数,我不知道如何写。

这是hastablechanged.php:

<?php 
include 'config.php';
include 'opendb.php';

$table = "data_table";
$query_timestamp = "select timestamp from {$table} where id = 0;";
$timestamp = mysql_query("{$query_timestamp}");
if (!$timestamp) {
die("query failed");
}

$row_timestamp = mysql_fetch_array($timestamp);
echo $row_timestamp['timestamp'];
?>

这是我的index.php

<!DOCTYPE HTML PUBLIC>


<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <title>Data values</title>
</head>

<body>

<div id=data>
    <? include("table.php");?>
</div>
</body>

</html>

其中“table.php”是选择数据的PHP代码,并显示它绘制一个html表。

我会非常感谢任何帮助,因为我在完成我的学位课程时遇到了这个问题

3 个答案:

答案 0 :(得分:1)

您需要Ajax和setInterval。

以下是SetInterval的工作原理 http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

SetInterval基本上只是告诉浏览器每x毫秒调用一次javascript函数。

以下是一些Ajax示例 http://www.w3schools.com/Ajax/ajax_examples.asp

Ajax基本上是javascript在不重新加载页面的情况下请求页面并获取其内容的一种方式。在下面的示例中,它尝试为所有浏览器创建一个xmlhttprequest(遗憾的是它像这样完成),然后发送请求。我们将state_change定义为当我们得到回复时要调用的函数。在这个例子中,它只需要响应并显示它,但你可以随心所欲地做任何事情。

以下是修改后的示例。它应该工作。

<html><head>
<script type="text/javascript">
var xmlhttp;
function loadPage()
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for IE7, Firefox, Opera, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET","hastablechanged.php?tablename=awesometable",true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    document.getElementById('A1').innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Problem retrieving ata:" + xmlhttp.statusText);
    }
  }
}
</script>
</head>

<body onLoad="setInterval('loadPage()', 10000)">

<p><b>Status:</b>
<span id="A1"></span>
</p>

<button onclick="loadPage()">Check Updates</button>

</body>
</html>

答案 1 :(得分:0)

为了清楚起见:您没有 拥有 来使用ajax。只需定期重新加载页面即可获得所需内容。但如果您希望应用程序顺利进行 - 那么您将不得不深入了解其他答案中概述的AJAX。

-CF

答案 2 :(得分:0)

我终于想出了怎么做。发布它可以对任何人有用。

这是php和javacript的组合,其中:

  • php文件return_timestamp.php只返回ID = 0的行的时间戳(没有真实ID,只是用触发器更新每次插入的时间戳)

  • javascript将收到的时间戳与先前收到的时间戳进行比较(第一个设置为0,因此它在开头更新div)

这样:

javascript代码这是重要的事情(我假设你们可以编写php从mysql中检索数据):

<script type="text/javascript">
$(document).ready(function() {

    $timestamp1='0';
    var refreshId = setInterval(function() {
    $.get(('return_timestamp.php', function(data) {
    $timestamp2 = data; } )

    if ( $timestamp2 != $timestamp1 ) { 

        $('#data').load('data.php');

        $timestamp1 = $timestamp2; }

}, 1000);
});
</script>

希望它有所帮助,也谢谢你的帮助!