使用mysql查询每隔几秒刷新一个文本框?

时间:2017-05-05 23:22:20

标签: php html mysql

我的代码中有这个文本框,每次加载/刷新此页面时,其内容都会填充查询结果。但由于手动刷新在我的情况下不是一个选项,我怎么能自动执行此操作(我只想刷新文本框)?我已经读过关于使用AJAX的内容,而且我一直在阅读它,但说实话,我不太懂得如何使它工作,有人可以解释我并愚蠢吗?是不是有更简单的方法来使用查询内容刷新文本框?

编辑:好的,我认为我理解了AJAX的基础知识,这个功能现在每秒刷新文本框,但这是一个小问题。它把我的桌子弄得很糟糕。我修改了HTML代码,希望有人能告诉我我做错了什么。我以为我不应该在桌子里面加一个div? Here's我的表格看起来如何,how it looks like经过这次小更新

<?php
include '../Login/db_login.php';
session_start();
$sql = "SELECT Contador FROM senhas2 WHERE ID=1";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$nome = $row['Contador']
?>
<!doctype html>
<html>
 <head>
    <meta charset="utf-8">
    <title>Página de administração - A</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script>
            setInterval(function(){
            $('#refreshtb').load('bt1admin.php');
            }, 1000) 
        </script>
 </head>

 <body>
  <form action="" id="atender" method="POST">
    <table border="1">
    <tr>
        <td>Clientes em espera:</td>
        <td><div id="refreshtb"><input id="refreshtb" type="text" value="<?php echo  "$nome";?>"readonly></div></td>
    </tr>
    <tr>
        <td>Selecionar posto de atendimento:</td>
        <td><select name="posto"><option value="n1" selected>1</option><option value="n2">2</option><option value="n3">3</option><option value="n4">4</option><option value="n5">5</option><option value="n6">6</option></select>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" form="atender" name="atender" value="Atender Cliente Seguinte"></td>
    </tr>
    </table>
  </form>
 </body>
</html>

1 个答案:

答案 0 :(得分:1)

您无法使用PHP更改页面内容。您需要使用前端语言,例如Javascript。即使加载了Javascript,Javascript也能够更改页面内容。为了每隔X秒更新一次页面内容,您需要使用Javascript的setInterval()函数每隔X秒运行一次函数。此函数将使用AJAX向您的网站发送请求并收集更多数据,然后更新文本框以包含此新数据。您可能会发现此Stackoverflow问题有用:How does AJAX work?

编辑:为了澄清我们的评论讨论中的一些混淆并回应您的编辑,我已经修改了一些代码。试试这个:

<!doctype html>
<html>
 <head>
    <meta charset="utf-8">
    <title>Página de administração - A</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script>
            setInterval(function(){
                $.ajax('bt1admin.php').done(function(data) {
                    $("#refreshtb").val(data);
                })
            }, 1000);
        </script>
 </head>

 <body>
  <form action="" id="atender" method="POST">
    <table border="1">
    <tr>
        <td>Clientes em espera:</td>
        <td><div><input id="refreshtb" type="text" value="<?php echo  "$nome";?>"readonly></div></td>
    </tr>
    <tr>
        <td>Selecionar posto de atendimento:</td>
        <td><select name="posto"><option value="n1" selected>1</option><option value="n2">2</option><option value="n3">3</option><option value="n4">4</option><option value="n5">5</option><option value="n6">6</option></select>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" form="atender" name="atender" value="Atender Cliente Seguinte"></td>
    </tr>
    </table>
  </form>
 </body>
</html>

我做了什么:

  • 首先,您有重复的#refreshtb元素,因此我删除了其中一个元素。
  • 您还在JQuery中使用.load()方法。这不会更新HTML输入的。相反,它只是替换了孩子HTML,这不是你想要的。我更新了您的脚本,现在更新#refreshtb输入元素的值。

经过测试,似乎对我来说很好。如果您在此之后仍然遇到奇怪的表格问题或由于某种原因该字段未正确更新,我怀疑这是您的bt1admin.php页面的问题。确保该页面没有输出整个表格,而是只需您想要进入文本框的值。