Javascript在HTML表中输出在线用户名

Javascript output online usernames in HTML table

本文关键字:在线 用户 输出 HTML Javascript      更新时间:2023-09-26

我制作了一个服务器,如果人们登录,它会检查他们是否在线,并希望将这些信息放入html表中。

<?php
session_start();
include_once '../php'connect.php';
function removeRefresh(){
    $query = connection()->prepare("UPDATE `online` SET `time` = `time`+1");
    $query->execute();
    $query = connection()->prepare("DELETE FROM `online` WHERE `time` > 5");
    $query->execute();
}
function addOrRefresh($ID){
    $query = connection()->prepare("SELECT COUNT('id') FROM `online` WHERE `ID` = :ID");
    $query->bindParam(':ID', $ID);
    $query->execute();
    $count = $query->fetchColumn();
    if($count == 0){
        $query = connection()->prepare("INSERT INTO `online`(`ID`, `time`) VALUES(:ID, 0)");
        $query->bindParam(':ID', $ID);
        $query->execute();
    }
    else{
        $query = connection()->prepare("UPDATE `online` SET `time` = 0 WHERE `ID` = :ID");
        $query->bindParam(':ID', $ID);
        $query->execute();
    }
}
$action = filter_input(INPUT_GET, 'action');
if($action == 'heartbeat'){
    removeRefresh();
    $ID = $_GET['id'];
    addOrRefresh($ID);
    $query = connection()->prepare("SELECT u.username FROM `nusers` u INNER JOIN `online` o ON o.ID = u.ID");
    $query->execute();
    $onlineUsers = $query->fetchAll(PDO::FETCH_ASSOC);
    $resultaat = "";
    foreach($onlineUsers as $user){
        $resultaat .= "<p>{$user['username']} <br></p>";
    }
    echo "$resultaat";
}
?>

你可以注册,当你登录大厅时,你会被添加到一个"在线"表格中,该表格每秒都会使用"心跳"功能进行检查。

请原谅我英语不好。

编辑:我有系统在工作。我只想更改"echo"$resultaat",使其将$resultaat放入表行中。在一个"}"之后添加不会起作用,我已经尝试过解决这个问题,不确定我是否在回想中尝试了所有的可能性。根据请求,我已经发布了整个文档。另一个javascript部分集成到另一个文档中;包含:

   <?php
session_start();
$ID = $_SESSION['ID'];

if (isset($_POST['logout'])) {
    session_destroy();
    $query = connection()->prepare("DELETE FROM `online` WHERE `ID` = :ID");
    $query->bindParam(':ID', $ID);
    $query->execute();
}
?>
<html>
    <head>
        <title>Stratego</title>
        <Link href="../layout/style.css" type="text/css" rel="stylesheet" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="./js/HeartBeat.js"></script>
        <script>
            $(document).ready(function () {
                heartbeat.setSpelerId( <?php echo $ID; ?> );
                heartbeat.polling();
            });
        </script>
    </head>
    <body>
        <form method='post' name='logout' action="../setup/logout.php">
            <input type='submit' name='loggout' value='Log me out'>            
        </form>
        <a href="lobby1.php">Singleplayer</a>
        <div id="online-list">
        </div>
    </body>
    <?php echo "<script>
        function heartbeat(){
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
              if (xhttp.readyState == 4 && xhttp.status == 200) {
               console.log(xhttp.responseText);
               document.getElementById('"online-list'").innerHTML = xhttp.responseText;
              }
            };
            xhttp.open('"GET'", '"./wachtruimterInterface.php?action=heartbeat&id=" . $ID . "'", true);
            console.log('keeping in touch ༼つ ◕_◕ ༽つ');
            xhttp.send();
        }
        setInterval(heartbeat, 1000);
    </script>"; ?>
</html>

控制台日志用于检查是否正在维护连接。人们使用他们的ID登录,没有密码。

现在的情况是这样的,有一个人在线;名为Luuk。http://www.filedropper.com/screenproof我的目标是让所有在线的人坐到一张桌子上。我试过

        $resultaat .= "<tr><td>{$user['username']} <br></td></tr>";
}
echo "<table>$resultaat</table>";

刚才,似乎不起作用,有什么关于如何进步的提示吗?

我已经解决了这个问题;

    $resultaat = "";
foreach($onlineUsers as $user){
    $naam= $user['username']
    $resultaat .= "<tr><td>$naam</td></tr>";
}
echo "<table border=1>$resultaat</table>";