1

有一个显示在线用户的核心模块,如果您已经在页面中并且有新用户登录,则在刷新页面之前您将看不到他。我希望它在不刷新漏洞页面的情况下向用户展示。我正在考虑制作特定的 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>

这会重新运行脚本,但不会从数据库会话中获取新信息,因此它只会显示我第一次加载页面时的相同用户。

4

1 回答 1

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可以制作成一个模块,但我现在没有时间,直到我找到一些希望这对其他人也有帮助:)

于 2013-05-18T08:48:42.723 回答