在网页中实时显示MySQL表

时间:2018-06-22 10:08:41

标签: php mysql ajax

我有一个不断更新的MySQL表,它的行数少于10。是否可以在网页中实时显示此表?我听说可以使用Ajax完成此操作,到目前为止,我所看到的所有示例仍然非常令人困惑。到目前为止,我只能使用以下代码通过PHP在网页中显示静态表格:

<table>
<tr>
  <th>User ID</th>
  <th>Current Location</th>
</tr>
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME','test1');

$link=mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_NAME);

if($link===false){
    die("ERROR: Could not connect.". mysqli_connect_error());
}
$sql = "select * from last_seen";
$result = mysqli_query($link,$sql);
if($result->num_rows>0){
  while($row=$result->fetch_assoc()){
    echo "<tr><td>".$row["user_id"]."</td><td>".$row["location"]."</td></tr>";
  }
  echo "</table>";
}
else{
  echo "0 Results";
}
?>

但是我还没有找到一种无需刷新页面即可实时更新的方法。我要显示的表格如下:

user_id  location
-------  --------
1        room1
2        room2
3        room1

2 个答案:

答案 0 :(得分:1)

您可以将其用作单独页面并使用它来调用ajax,

table_data.php

<table>
<tr>
  <th>User ID</th>
  <th>Current Location</th>
</tr>
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME','test1');

$link=mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_NAME);

if($link===false){
    die("ERROR: Could not connect.". mysqli_connect_error());
}
$sql = "select * from last_seen";
$result = mysqli_query($link,$sql);
if($result->num_rows>0){
  while($row=$result->fetch_assoc()){
    echo "<tr><td>".$row["user_id"]."</td><td>".$row["location"]."</td></tr>";
  }
  echo "</table>";
}
else{
  echo "0 Results";
}
?>

和主文件 index.php

<h1>Table Data</h1>
<div id="table_data"></div>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    var RefreshTimerInterval = 5000; // every 5 seconds
    $(document).ready(getData);

    function getData() {
        $.get('table_data.php', function(result) {
             $('#table_data').html(result);

             setTimeout(getData, RefreshTimerInterval);
        }
    }
</script>

答案 1 :(得分:0)

为什么不使用jQuery将输入的数据附加到表上呢?这样,它仍然可以显示您插入的内容,而无需浪费带宽?

编辑-

哦,等等,我忘记了您可能需要ID来执行更新/删除操作。我建议将该表的逻辑放在另一个PHP脚本(例如table.php)中,然后使用对该脚本的AJAX调用来刷新该“容器”?

编辑#2-

抱歉,可能应该举一些我在说什么的例子。

假设您的表位于中,我建议您使用一个单独的PHP脚本(称为table.php),该脚本实际上为您构建该表(当您最初加载页面时,我会将这个脚本包含在主脚本中)。

在您的JS中添加以下功能...

function getNewTable() {
    $("#data-table").load("table.php");
}

更新数据后,调用getNewTable()就是这样。希望对您有帮助!