2014-10-29 134 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()

相關問題