如何在不加载页面的情况下刷新计数。我尝试了几个jQuery和Ajax,但它不适合我。当用户提交收到的请求1时,我也尝试了此链接automatic reload of div container但是当用户在页面打开时提交另一个请求时,它保持为1并且不会移动到2.与更新和完成相同。
<tr>
<td style="width: 125px"><a href="received.php" target="Frame">Received</a></td>
<td style="width: 125px" align="center"><a href="received.php" target="Frame">
<?php
$result = mysql_query("SELECT COUNT(*) FROM requests WHERE status='received'");
while($row=mysql_fetch_array($result))
{
echo $row['COUNT(*)'];
}
?></td>
</tr>
&#13;
答案 0 :(得分:2)
通过将视图与后端分开,可以通过AJAX轻松完成:
some_php_file.php
$result = mysql_query("SELECT COUNT(*) FROM requests WHERE status='received'");
while($row=mysql_fetch_array($result))
{
echo $row['COUNT(*)'];
}
your_view.html
<tr>
<td style="width: 125px"><a href="received.php" target="Frame">Received</a></td>
<td style="width: 125px" align="center">
<a href="received.php" target="Frame">
<span class="update_me_value"></span>
</a>
</td>
</tr>
your_js.js
// wrap me in a loop setInterval or what not
$.ajax({
type: METHOD GOES HERE
//hit your php backend
success: function(data) {
$(".update_me_value").empty().append(data);
答案 1 :(得分:1)
Morissette是正确的,你只能用AJAX做到这一点。 AJAX专为这些调用而设计。当服务器向客户端发送数据时,Web状态较少,因此必须对服务器进行另一次调用以获取更新信息。
另一个选项但不是真正推荐的选择是使用只显示计数值的HTML框架,然后使用javascript来刷新页面。
旁注而不是问题的一部分。如果您正在使用INNODB,请尝试避免COUNT(*),因为这将忽略索引。如果您使用MyISAM,这很好。
答案 2 :(得分:1)
您可以使用javascript setInterval定期调用ajax请求,该请求获取结果/页面的数量并更新您的分页等。
您拥有的另一个选项是使用套接字通知所有连接的用户新页面可用。它更复杂。
如果您有分页,那么有更好的方法来获取MySQL查询结果的数量。您可以使用SQL_CALC_FOUND_ROWS和FOUND_ROWS()