有一个显示在线用户的核心模块,如果您已经在页面中并且新的用户登录,则在刷新页面之前您将看不到他。我希望它在不刷新孔页面的情况下向用户显示。我想用特定的div来刷新间隔。
<div id="cusers">
<?php $i = 0; foreach($names as $name) : ?>
<?php echo "<span style='color:". $colors[$i % 6]."'>".$name->username."</span>"; $i += 1;?></a>,
<?php endforeach; ?></div>
在上面的代码中,#cusers每5秒自动刷新一次,例如使用ajax。任何想法如何实现?
我尝试了以下内容:
<script type="text/javascript">
var refreshId = setInterval(function()
{
jQuery('#cusers').html('<?php $i = 0; foreach($names as $name) : ?><a href="index.php/forum/profile/<?php echo (int) $name->userid; ?>"><?php echo "<span>".$name->username."</span>"; $i += 1;?></a>,<?php endforeach; ?>');
}, 3000);
</script>
这会重新运行脚本,但它不会从数据库会话中获取新信息,因此它只是在我第一次加载页面时显示相同的用户。
答案 0 :(得分:0)
好的,我没有时间,所以我做了一点“外部”解决方案......这是:
它的脚本:
<script type="text/javascript">
var refreshId = setInterval(function()
{
jQuery('#cusers').load('online.php');
}, 3000);
</script>
上面我每隔3秒将online.php加载到具有id cusers的div(你必须在模块中创建这样的div或者在已经存在的另一个div上面声明)。
online.php:
<?php
$con=mysqli_connect("host","user","pass","database");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query = mysqli_query($con,"select * from prefix_session WHERE guest=0");
while($row = mysqli_fetch_array($query))
{
echo $row['username'];
}
mysqli_close($con);
?>
您可能想通过joomla框架连接到数据库,这是您的选择。我发现这样更容易导致更新joomla而不会失去此功能。
这个offcource可以用于模块,但我现在没有时间,直到我找到一些希望这也有助于其他人:)