Joomla谁在线自动刷新

时间:2013-05-17 07:36:40

标签: jquery joomla

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

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

1 个答案:

答案 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可以用于模块,但我现在没有时间,直到我找到一些希望这也有助于其他人:)