HTML选取框更改行为

时间:2014-04-04 12:02:43

标签: php

如果我将选框放在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>';
}

1 个答案:

答案 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;他们并不太难理解,他们也很有趣!