Я создаю функцию, чтобы показать, сколько пользователей сейчас в сети. Это зависит от того, кто открыл страницу за последние 5 минут. Каждая загрузка страницы сохраняется в моей БД, ниже:
На данный момент у меня есть следующий код
$query = mysql_query("SELECT user_id, timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); $onlineUsers = mysql_num_rows($query);
Это просто суммирует количество строк, как я могу это сделать, поэтому он только учитывает user_id один раз? (поэтому в приведенном выше фрагменте базы данных это должно быть 2 не 5)
Поскольку mysql_*
устарел (php 5) и удален (php 7). Итак, mysqli_*
: –
<?php error_reporting(E_ALL); ini_set('display_errors',1); $conn = mysqli_connect('localhost','username','password','db name');//change credentials here $online_users = array(); if($conn){ $query = mysqli_query($conn,"SELECT DISTINCT(user_id), timestamp,page FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); if($query){ while($row = mysqli_fetch_assoc($query)){ $online_users[] = $row; } }else{ echo "query error:-".mysqli_error($conn); } }else{ echo "db connection error:-".mysqli_connect_error(); } ?> <table> <tr> <thead> <th>User Id</th> <th>timestamp></th> <th>Page Visited</th> </thead> </tr> <tbody> <?php foreach($online_users as $online_user){?< <tr> <td><?php echo $online_user['user_id'];?></td> <td><?php echo $online_user['timestamp'];?></td> <td><?php echo $online_user['page'];?></td> </tr> <?php }?> </tbody> </table>
Примечание. Если вы хотите показать онлайн-имя пользователя, тогда вам нужно сделать JOIN query
.
измените таблицу таблицы соответственно.
Это пример кода. измените его соответствующим образом.
использовать ключевое слово DISTINCT
$query = mysql_query("SELECT DISTINCT(user_id), timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); $onlineUsers = mysql_num_rows($query);
Вы можете использовать группу, например,
SELECT user_id, timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute) group by user_id;