我得到了这个显示的循环,因为你可以看到用户输入的用户名和消息...但是在输入消息后,用户必须重新加载我的页面才能看到它。有没有办法让while循环在网站上运行时保持不断更新?!喜欢将它设置为每秒执行一次还是什么?
<?php
include "connect.php";
$query = "SELECT * FROM messages";
$result = $con->query($query);
if($result){
while($row = $result->fetch_object())
{
echo "<ul id = 'rutor'>";
echo '<li class = "userlada">'.$row->username. "</li>";
echo '<li class = "usertext">'.$row->message. "</li>";
echo "</ul>";
}
}
?>
我不是php上的brigetest所以任何帮助都会很棒!:)
答案 0 :(得分:3)
没有
PHP是服务器端的,所以如果你开始等待并在那里循环,你只需让浏览器等待它完成。
为此,您需要查看Javascript。
答案 1 :(得分:0)
我知道这将是一个非常不受欢迎的观点,实际上没有任何有用的应用程序,并且可怕的事情要做,因为如果超过200人只是打开你的页面它将导致你的服务器崩溃。但是......
是,使用iframe可以轻松完成。方法如下:
创建一个只为这些消息提供服务的页面。让我们称它为'bad_practice.php&#39;。你想要做的是让你的代码看起来像这样:
ob_implicit_flush();//makes php NOT buffer and send data straight to screen
$last_id=1234;//or keep track of it.
while(true)
{
$new_query=DB::Query("select * from messages where id> :last_id",array(":last_id"=>$last_id));
while($row=$new_query->fetch())
{
echo "<ul id = 'rutor'>";
echo '<li class = "userlada">'.$row->username. "</li>";
echo '<li class = "usertext">'.$row->message. "</li>";
echo "</ul>";
$last_id=$row['id'];
}
sleep(1);
}
之后,您需要在主页上创建一个iframe
<iframe src="bad_practice.php">
你应该有一个不断刷新的清单。