刷新Mysql Count而不重新加载页面

时间:2014-10-29 19:42:23

标签: php mysql

如何在不加载页面的情况下刷新计数。我尝试了几个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;
&#13;
&#13;

3 个答案:

答案 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()