现场实时更改

Live changes on site

我正在尝试制作一个 php 文件,我将从数据库发送数据并通过它们显示 0 或 1。在我的示例中,我有一个 table 和两个 user_ids 和一个取值 0 或 1 的参数 in。从 test.php 我通过给 user_id 填写表格并提交它。当我为该用户提交它时,如果参数 in 为 1,则参数变为 0,反之亦然。在 next.php 中,我使用 <iframe src="show.php">,在 show.php 中,我显示 user_idin。我想要的是当我提交一个user_id,立即看到show.php的变化。我所做的是一直刷新页面,但它太令人不安了。你能建议别的吗?这是一些代码。

test.php

<?php
require_once 'include_php/db.php';
global $dbcnx;
?>
<form action="" method="get">
    <input type="text" name="id"/>
    <input type="submit" name="submit"/>
</form>

<?php

if(isset($_GET['submit']))
{
    $id = $_GET['id'];
    $res = mysqli_query($dbcnx, "select * from people where uid = ".$id.";");
    $row = mysqli_fetch_array($res);

    if($row['in'] == 0) $up = mysqli_query($dbcnx, "UPDATE `people` SET `in`=1 WHERE uid=".$id.";");
    else $up = mysqli_query($dbcnx, "UPDATE `people` SET `in`=0 WHERE uid=".$id.";");
}

show.php

<?php
require_once 'include_php/db.php';
global $dbcnx;

$res = mysqli_query($dbcnx, "select * from people");

while($row = mysqli_fetch_array($res))
{
    echo $row['uid']." ".$row['in']."<br/>";
}

print "<script>window.location.replace('show.php');</script>"; //here is the disturbing refresh

next.php

<iframe src="show.php">

您想要的是实时更新而不用硬刷新页面。您可以通过使用 AJAX 请求或使用 websockets 来实现此目的。

对于 ajax 请求,您可以轻松地设置超时功能以每隔 x-seconds/minutes.

刷新您的 iframe

This question 很好地描述了如何试一试。