2010-10-09 29 views
0

我对网络编程非常陌生,但我有一些数据,我真的想在我的网站上不断更新的时间序列图中呈现。 所以我一直在尝试原型代码,将显示已添加到数据库的最新整数值。 我想引用的数据库表不断插入整数值。 我的问题是这样的; 我试图使用JavaScript和PHP的组合来显示当网站上的按钮被按下时最新的条目。 但是,我能找回的唯一整数是最初加载页面时数据库中存在的最后一个整数。 看来,我用来从数据库中抓取数据的php函数在页面加载后立即运行,并且在每次按下按钮后都不会更新。这是PHP的限制(或我的知识的PHP)。任何帮助将非常感激。php,javascript和mysql实时数据问题

(PHP函数)

function getData() 

{ 包括 “config.php中”;

$db = mysql_connect($dbhost,$uname,$pass); 
    mysql_select_db ($dbname) or die ("Cannot connect"); 

    $query = "SELECT numCalls FROM $tname ORDER by claatime DESC LIMIT 1"; 
    $result = mysql_query($query); 

    while($r=mysql_fetch_array($result)) 
    { 
    $numCalls = $r["numCalls"]; 
    } 
    return $numCalls; 

}

(JavaScript函数)

function getNum() 
    { 
    var x = <?php echo getData()?>; 
    alert('the latest number is ' +x); 
    } 

回答

0

这是因为你的页面是由PHP处理一次,这就是它的要求在第一时间。

为了解决这个问题,将getData()函数的主体放在页面的单独文件中(我们称之为getData.php)。然后创建一个Ajax请求(使用像jQuery这样的JavaScript库使其更容易)。

所以你<脚本>部分应该是这样的(假设您加载了jQuery,见下文):

function getNum() { 
    $.ajax({ 
     url: "getData.php", 
     complete: function(response) { 
      alert("The latest number is " + response.responseText); 
     } 
    }); 
} 

你访问getdata.php应该是这样的:

<?php 
include "/home/store/config3.php"; 

$db = mysql_connect($dbhost,$uname,$pass); 
mysql_select_db ($dbname) or die ("Cannot connect to database"); 


$query = "SELECT numCalls FROM $tname ORDER BY calltime DESC LIMIT 1"; 
$result = mysql_query($query); 

while($r=mysql_fetch_array($result)) 
{                                       
    $numCalls = $r["numCalls"]; 
} 

header("Content-Type: text/plain"); 
print $numCalls; 
?> 

并加载jQuery只需添加

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

到您的pag顶部e(在<元首>元素中)。

+0

我跟着你写的东西,现在所有的东西都能正常工作,显然我需要填写一些关于网络编程的知识空白,但是这有助于我更多地理解,非常感谢你:) – Steve 2010-10-09 23:06:26

+0

否问题。 PHP和jQuery都非常易于使用,所以它不应该花太长的时间来加快速度。我建议你阅读W3C教程(http://www.w3schools.com/default.asp),他们有一些关于PHP,SQL,Ajax,jQuery等的简单追随者。 – 2010-10-09 23:24:18

+0

右键我一直在读一点关于jQuery和$ .ajax()调用是一种低级方法,它的好处之一是“防止浏览器缓存来自服务器的响应。如果服务器动态生成其数据,这会很有用。从网站上的实时图形数据库提供实时数据,这正是需要的。然而,我无法让jQuery函数返回一个整数值而不是alert框。我想从数据库中取出的整数通过jQuery函数返回给调用函数。 – Steve 2010-10-10 20:03:44

0

我没有看到任何重新启动连接。

尽管第二种方法并不为人所知,但浏览器和网站使用单一的客户端 - 服务器模型;客户端会收到一个回复​​,一切都会在那里停止....除非它重新启动连接。

0

您似乎并不了解Web技术如何工作的基础知识。

只是一个很短的“速成班”:

  1. 浏览器发送请求到Web服务器
  2. 的Web服务器上运行PHP脚本
  3. 无论你的脚本的输出是得到发送回浏览器(这包括你的JavaScript代码)
  4. 现在浏览器显示网页和执行JavaScript的

如您所见,要更新整数,您需要向Web服务器发出新请求。你可能想看看AjaxXMLHttpRequest要做到这一点。有足够的脚本和文档可以告诉你这是如何完成的。我认为你不应该仅仅为此目的包含一个框架。