实时更新MySQL数据

5

我有以下代码,它运行得很好,我想将其转换为实时更新,每隔10秒钟更新一次,而不需要刷新页面,我猜我需要使用AJAX或Jquery,但我缺乏如何做的知识。

=====VIA <?php include("database.php"); ?>====
<?php
// Create connection
$con=mysqli_connect("ip/host","user","pass","db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>

====ON THE PAGE====
<? php

$result = mysqli_query($con, "SELECT * FROM sql347511.1 ORDER BY ID DESC LIMIT 1;");

while ($row = mysqli_fetch_array($result)) {
    echo "<div class='infobox_data'>Temperature: ".$row['TEMP']."&deg;C</div>";
    echo "<div class='infobox_data'>Humidity: ".$row['HUMID']."%</div>";
    echo "<div class='infobox_time'>Captured: ".date("g:i:s a F j, Y ", strtotime($row["TIME"]))."</div>";
}

mysqli_close($con); ?>

<meta refresh> 或者 learn.jquery.com/ajax - rlatief
jQuery AJAX 是世界上最简单的事情 :)看看吧。http://api.jquery.com/jquery.ajax/ - Patrick Eaton
$.load(); - Darren
另外,只是提供信息。可能要升级使用PDO进行连接。这是被接受的做法。 - Patrick Eaton
你们能帮我看一下这段代码吗?我会非常感激的,一旦我看到它,所有的问题都可能迎刃而解。 - Sam
显示剩余3条评论
2个回答

7

搞定了, 感谢大家的帮助。

Javascript

$(document).ready(function(){    
    loadstation();
});

function loadstation(){
    $("#station_data").load("station.php");
    setTimeout(loadstation, 2000);
}

station.php

<?php
include ("database.php");

$result = mysqli_query($con, "SELECT * FROM sql347511.1 ORDER BY ID DESC LIMIT 1;");

while ($row = mysqli_fetch_array($result))
    {
    echo "<div class='infobox_data' id='infobox_temp'>" . $row['TEMP'] . "&deg;C</div>";
    echo "<div class='infobox_data' id='infobox_humid'>" . $row['HUMID'] . "%</div>";
    echo "<div class='infobox_time'>At " . date("g:i:s a F j, Y ", strtotime($row["TIME"])) . "</div>";
    }

mysqli_close($con);
?>

数据存放位置

<div id="station_data"></div>

这是一个可行的解决方案。你在大规模模型上测试过它吗?你尝试在多台电脑上运行了吗?我在20台电脑上使用了3000个连接,我的服务器CPU正在100%工作。 - rtstorm

0

你可以在双击div时进行输入,然后通过jquery获取这些输入的值:

$().val;

然后使用ajax将这个值发送到php:

$.ajax({
    url: 'url_to_php_which_update_mysql',
    data: {'data': 'value_from_input'},
    cache: false,
    success: function(response){
        $(input).val(response);
    }
});

在php文件中,你需要将$_GET['data']上传到数据库中。

谢谢Masiama,你能详细说明所需的代码吗? - Sam
我该如何更改或转换我的现有代码,以使其与AJAX请求配合工作? - Sam
@Sam 你的页面上有文本框吗? - user3795616
不,目前我只是将结果回显到一个<div>中,我应该改成输入框的方式吗? - Sam
你需要为每个<div>提供唯一的id,然后使用$('this_id').val();获取值,接着使用我的答案中的ajax。 - user3795616

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接