如果我将选框放在while
循环中,它会同时显示所有数据,从右向左滑动。我希望这个表现一个接一个,当一个人完成第二个开始......最后第一个又来了,我怎么能这样做,请帮助我,我会非常感谢你,提前谢谢:)
$data=mysql_query("SELECT heading from moto_static_pages");
while($res = mysql_fetch_assoc($data)){
echo '<marquee behavior="scroll" direction="left" style="padding:0 0 10px 0;">';
echo $res['heading'];
echo '</marquee>';
}
答案 0 :(得分:1)
PHP 服务器端。一切都在服务器上计算,然后所有内容同时显示在您面前的浏览器上。因此,你的循环只是围绕最终将显示在浏览器中的内容,并立即打印出来,这就是它应该做的事情。
您需要使用JavaScript来完成此操作,因为是客户端。你不能用PHP做到这一点。
您需要从数据库中检索所有数据,将其转换为json(json_encode()
),并将其作为一个字符串发送到您的浏览器。然后,在 JavaScript 中,循环浏览json并将每个打印出来作为带有定时事件的选取框。
重申一下,除非您要使用PHP进行异步I / O操作(不是),否则您需要使用 JavaScript <强>
这是未经测试的代码,直接来自我的头脑,但希望这会指向正确的方向。
<?php
// Server-side code, get your data, json encode it too!
$data = json_encode(mysql_query("SELECT heading from moto_static_pages"));
?>
<script type = "text/javascript">
// Client side code that happens in real time in the browser
// Get your data from your php variable
var data = JSON.parse(<?php echo $data; ?>);
// Loop your data
for (var i = 0; i < data.length; i++)
{
// Output your data in marquees
setTimeout(function() {
document.write("<marquee behaviour='scroll' direction='left'>");
document.write(data[i].heading);
document.write("</marquee>");
}, 4000); // Every 4 seconds
}
</script>
不要期望此代码适合您,因此请调试它并使用var_dump()
查看您从PHP获得的内容,并console.log()
查看您在JavaScript中的内容。
最后的注释
mysql_query
已被弃用,应谨慎使用。您应该查看PDO
/ mysqli
;他们并不太难理解,他们也很有趣!