2014-10-29 103 views
1

如何在无需加载页面的情况下刷新计数。我尝试了几个jQuery和Ajax,但它不适合我。当用户提交它收到的请求时,我也试过这个链接automatic reload of div container 1,但是当用户在页面打开时提交另一个请求时,它保持为1,不会移动到2.与更新和完成相同。刷新Mysql计数,无需重新加载页面

<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>

回答

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); 
+0

我会给这个尝试我没有想到分离视图和结果 – Donny 2014-10-29 20:16:39

+0

谢谢你得到它的工作 – Donny 2014-10-30 16:22:30

1

莉塞特是正确的,你只能用AJAX来做到这一点。 AJAX专为诸如此类的调用而设计。当服务器向客户端发送数据时,大多数情况下,Web的状态较少,必须对服务器进行另一个调用以获取更新的信息。

另一种选择,但不是真的推荐使用一个HTML框架,只显示计数值,然后使用JavaScript来保持刷新页面。

附注而不是问题的一部分。如果您正在使用INNODB,请尽量避免使用COUNT(*),因为这将不得不忽略索引。如果你使用MyISAM,这很好。

1

您可以使用JavaScript的setInterval定期调用得到的结果/页NUMER一个Ajax请求并更新分页等。

你有另一种选择是使用套接字通知所有连接的用户是一个新的页面可用。它更复杂。

如果您有分页,那么有更好的方法来获得MySQL查询结果的数量。你可以使用SQL_CALC_FOUND_ROWS和FOUND_ROWS()

相关问题