2016-03-03 61 views
0

下面的php代码是一个简单的方法来计算某个表中的行数,但只有当刷新页面时才会注意到行中的任何增加或减少。那么有什么方法可以使用jQuery/ajax动态显示数据库表中的行数,而无需刷新页面并且没有任何点击功能。如何动态统计数据库中的行数?

html.php

$sql=$db->prepare("SELECT * FROM table WHERE selector=:selector"); 
$sql->execute(array(':selector'=>$selector)); 
$count=$sql->rowCount(); 
echo $count; 
+0

使用的setInterval()和每x mintues调用使用Ajax数据库。你的代码是 – msvairam

回答

1

count.php

$sql=$db->prepare("SELECT * FROM table WHERE selector=:selector"); 
$sql->execute(array(':selector'=>$selector)); 
$count=$sql->rowCount(); 
$arr = array('count' => $count) 
echo json_encode($arr); 

添加下面的脚本到你的索引文件

<script> 
$(document).ready(function() { 
    setInterval("ajaxcall()",2000); 
}); 

function ajaxcall() { 
$.ajax({ 
type: "GET", 
url: "count.php" 
success: function(response){ 
    json_object = JSON.parse(response) 
    var count = json_object.count 
    /// set this count variable in element where you want to 
    /// display count 

} 
}); 
} 
</script> 

如果你不想使用jQuery比你可以试试:

function ajaxcall() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
     json_object = JSON.parse(xhttp.responseText) 
     var count = json_object.count 
     /// set this count variable in element where you want to 
     /// display count 
    } 
    }; 
    xhttp.open("GET", "count.php", true); 
    xhttp.send(); 
    setTimeout(ajaxcall, 1000) 
} 
</script> 

而且在您的身体标记上添加加载事件

<body onload="setTimeout(ajaxcall, 3000)" > 

,或者您可以拨打阿贾克斯一些按钮,点击

<button onclick="setTimeout(ajaxcall, 3000)">clickme</button> 
+0

你需要在你的索引文件中包含jquery库。 –

+0

thnx'clickme'我怎么能改变代码来调用Ajax功能只需点击,无间隔。我试过'onclick =“ajaxcall();”'但没有区别。或者我也必须从脚本中删除setinterval。 –

+0

它的工作原理,如果你在按钮或其他元素上放置onclick =“setTimeout(ajaxcall,1000)”? –

1

试图在一个PHP函数,它是通过json_encoded(num_of_rows)的URL并返回访问的SQL查询。然后在你的javascript中,你可以通过ajax get request来获得它,指定它是json,最好在一个按钮上的onClick事件中设置一个函数,你将点击这个按钮来进行调用而不刷新页面,但只是目标标记你的javascript函数将从ajax中得到结果。希望它很清楚。