php - 从mysql向表中添加新行而不刷新任何内容
问题描述
我有一张表,其中有一些来自 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>
非常感谢所有帮助
解决方案
是的,我明白你想要什么,你可以返回 $count 表中的行数,将其作为 Ajax 请求中的参数传递,然后使用 Limit 子句运行 sql 查询。
推荐阅读
- bluetooth - 如何理解蓝牙循环功能 32 位响应
- java - 带有适配器“”的 ViewPager 在 AsyncTask 中需要一个视图 ID
- r - 使用 as.double() 函数将因子转换为数值变量的思考
- arrays - swift中有函数或方法Array.reduce吗?
- python - 如何修复“大小”、“发生在索引城市”错误
- java - 你如何修复不兼容的类型错误?
- c - 为什么 pthread_join 本身不会导致错误或死锁?
- c++ - 如何在使用 CMake/CPack 制作的 Mac OS 包中包含特定版本的 C++ 库?
- javascript - 使列表的高度填满整个页面
- uwp - UWP TabView 滚动按钮