目前我有静态节目,wwhich显示表中的3个最后一项:
数据库表:
id | question | answer
-------------------------------------------------
1 | Q? | A?
2 | Q? | A?
3 | Q? | A?
4 | Q? | A?
5 | Q? | A?
6 | Q? | A?
到目前为止,我展示了PHP foreach,最后3项。
我希望它会动态地显示每个3项具有良好动画并且将永远循环。
我怎样才能用ajax或者什么来做?提前谢谢。
编辑(删除旧代码)。
Bahaaldine Azarmi,我在这里做了什么:
1. 我创建了一个名为indexaskrefresh.php的新php文件,在php中插入了以下php代码:
$query = "SELECT * FROM que limit " .$offset. "," .$pageSize ;
mysql_query("SET NAMES 'utf8'");
$result = mysql_query($query, $func->connection);
if(!$result) //ERROR IN YOUR SQL QUERY
return false;
if(mysql_num_rows($result)==0) //NO ROWS IN TABLE pages
return false;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) // CHANGE THE RESULT TO 2 DIMMENSIONAL ARRAY
{
$returned_array[] = $row;
}
return $returned_array;
2. 接下来在我的索引文件中,我创建了名为ask
的新div,并在页面顶部创建了以下新的javascript标记(Index.php):
<script type="text/javascript">
// global vars
var offset = 0;
var pageSize = 3;
function callMyPhpScript() {
var parameters = new Object();
parameters.offset = offset;
parameters.pageSize = pageSize;
$.ajax("modules/indexaskrefresh.php", parameters)
.done(onDone)
.fail(onFail);
}
function onDone(data) {
// if no data was returned then you should reset the offset
if ( data.length == 0 ) {
offset = 0;
} else {
$('#ask').empty.append(data).show('slow');
// I assume here that data is well formed
// html code returned by you php script
offset += 3;
}
}
$(function() {
// should be move in configuration ...
var N = 5000 // Call will be made every 5 seconds.
setInterval(callMyPhpScript,N);
});
</script>
应包含响应的div(在Index.php内部):
<div id="ask" style="float:right;">
<h2 style="margin-right:15px;"> כדאי לדעת :</h2>
<?php
$i = 0;
$len = count($que);
foreach($que as $key=>$value)
{
echo '<span style="color:blue;font-weight:bold;padding:5px;">'.$value['que'].'</span><br><span style="color:green;font-weight:bold;padding:5px;">'.$value['ans'].'</span>';
if ($i == $len - 1) {
}else{
echo '<hr style="margin-right:25px;">';
}
$i++;
}
?>
</div>
没有任何事情发生,就像脚本不工作不发布任何东西或者我不知道的东西......
答案 0 :(得分:1)
所以我假设您希望每隔N秒调用一次PHP函数并刷新最后3项。
这是一种方法:
创建一个javascript函数,用于调用并发送偏移量和页面大小。 偏移量将是SQL查询中的起始ID和页面大小限制:
// global vars
var offset = 0;
var pageSize = 3;
function callMyPhpScript() {
var parameters = new Object();
parameters.offset = offset;
parameters.pageSize = pageSize;
$.ajax("http://myhost:myport/pathToMyPhpFunction", parameters)
.done(onDone)
.fail(onFail);
}
在你的php脚本中,你应该解析参数并在你的SQL查询中使用它,如下所示:
$query = "SELECT * FROM que limit " .$offset. "," .$pageSize ;
// That will return records from offset+1 to pageSize
实现onDone函数以将结果附加到HTML代码中
function onDone(data) {
// if no data was returned then you should reset the offset
if ( data.length == 0 ) {
offset = 0;
} else {
$('#myContainer').empty.append(data).show('slow');
// I assume here that data is well formed
// html code returned by you php script
offset += 3;
}
}
然后在你的html代码中,当页面加载时,调用setTimeout函数 每N秒拨打一次电话:
$(function() {
// should be move in configuration ...
var N = 5000 // Call will be made every 5 seconds.
setInterval(callMyPhpScript,N);
});
如果你想要花哨的效果,我建议使用Animate.css