ログインしたユーザーがオンラインになっているかどうかをチェックし、その情報をhtmlテーブルに入れたいサーバーを作った。HTMLテーブルのJavascript出力のオンラインユーザー名
<?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をtablerowに入れたいだけです。 '}'の後に追加しても動作しません。その回帰ですべての可能性を試してみると、私はそれを回避しようとしました。リクエスト後、私はドキュメント全体を投稿しました。 もう1つの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を使ってログインしますが、パスワードはありません。
これは現在の様子です.1人はオンラインです。 Luukと名付けられた。 http://www.filedropper.com/screenproof 私の目標は、オンラインになっているすべての人をテーブルに入れることです。 私が動作するようには思えない、ちょうど今
$resultaat .= "<tr><td>{$user['username']} <br></td></tr>";
}
echo "<table>$resultaat</table>";
を試してみた、進行する方法上の任意のヒント?
これまでにお試しいただいた内容は? – itzmukeshy7
私は、 'Echo "$ resultaat"の前後にコードを編集する試みを複数回試みましたが、javascriptスクリプト内にhtmlテーブルを作成するのに十分な経験がありません。 –
'connection() - > p'が正しいことを確認してください。 – itzmukeshy7