从MySQL添加新行到表而无需刷新任何内容

时间:2019-05-11 23:47:24

标签: php jquery ajax

我有一个表,其中有一些来自SQL表的结果。我正在尝试获取新行以自动添加到表中而不刷新任何内容。我的问题是,我只能在Ajax上从外部获取结果的帮助下找到问题,但这会重置我的表。我有一张桌子,您可以在其中看到名称,状态和消息。除了状态之外,所有内容都从数据库中获取,用户可以更改行的状态,但是在数据库中不会更改,仅在用户屏幕上可以更改。我想做的是让新行自动出现在最后一行的下面,而无需刷新页面或使用Ajax的外部页面。不好意思的解释,很抱歉,如果还有其他问题,请在评论中告诉我。

我已经尝试过使用Ajax,但是只能找到有关每x秒从外部刷新页面的指南。

<?php
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset($conn,"utf8");
$name = mysqli_real_escape_string($conn, strtolower($_POST['navn']));
$sql = "SELECT * FROM users WHERE on_duty='1'";
$result = $conn->query($sql);
while ($row = mysqli_fetch_array($result)) {
    if ($row['status'] == "Ledig") {
    $row['status'] = "<font color='#9aaf07'><b>Ledig</b></font>";
}
echo '<tr><td>'.$row['id'].'</td>';
echo '<td>'.$row['callsign'].'</td>';
echo '<td><select class="form-control form-control-sm">
      <optgroup label="NÅVÆRENDE STATUS">
        <option readonly>'.$row['status'].'</option>
      </optgroup>
      <optgroup label="SETT NY STATUS">
        <option>LEDIG</option>
        <option>OPPTATT</option>
        <option>99</option>
      </optgroup>
      </select></div></td>
      <td><div contenteditable="true">test</div></td>';
}
?>

这是回显结果的代码,下面是提取结果的代码

<script type="text/javascript">
    $(document).ready(function(){
        refreshUnits();
        refreshAvail();
    });
    function refreshUnits(){
        $('#on_duty').load('on_duty.php', function(){
           setTimeout(refreshUnits, 1000);
        });
    }
    function refreshAvail(){
        $('#available_units').load('available_units.php', function(){
           setTimeout(refreshAvail, 1000);
        });
    }
</script>

非常感谢所有帮助

1 个答案:

答案 0 :(得分:0)

是的,我知道您想要什么, 您可以在$ count表中返回行计数,将其作为Ajax请求中的参数传递,然后使用Limit子句运行sql查询。