2016-05-12 8 views
0

Ich machte einen Server, der überprüft, ob Leute online sind, wenn sie sich anmeldeten, und diese Informationen in eine HTML-Tabelle einfügen möchten.Javascript Ausgabe Online-Benutzernamen in HTML-Tabelle

<?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"; 
} 

?> 

können Sie sich registrieren, und wenn man in die Lobby anmelden, werden Sie in eine ‚online‘ Tabelle hinzugefügt, die jede Sekunde mit der Funktion ‚Herzschlag‘ überprüft.

Bitte entschuldigen Sie mein schlechtes Englisch.

EDIT: Ich habe Systeme arbeiten. Ich möchte lediglich das 'Echo' $ resultaat '' so ändern, dass es das $ resultat in eine Tabelle einfügt. Hinzufügen nach einem '}' wird nicht funktionieren, ich habe versucht, um das zu arbeiten, nicht sicher, ob ich alle Möglichkeiten in diesem Rückblick versuchte. Nach Anfrage habe ich das gesamte Dokument gepostet. der andere Javascript-Teil ist in ein anderes Dokument integriert; enthält:

<?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> 

Das Konsolenprotokoll ist da, um zu überprüfen, ob die Verbindung aufrechterhalten wird. Die Leute benutzen ihre ID um sich einzuloggen, keine Passwörter.

So sieht es jetzt aus, wenn 1 Person online ist; benannte Luuk. http://www.filedropper.com/screenproof Mein Ziel ist es, alle Menschen, die online sind, in eine Tabelle zu bekommen. Ich habe

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

jetzt gerade, scheint nicht zu funktionieren, alle Tipps, wie man den Fortschritt?

+0

Was haben Sie bisher versucht? – itzmukeshy7

+0

Ich habe mehrmals versucht, den Code vor, nach und nach dem 'Echo' $ resultaat '' zu bearbeiten, aber ich bin einfach nicht erfahren genug, um eine HTML-Tabelle in einem JavaScript-Skript zu erstellen. –

+0

Stellen Sie sicher, dass 'connection() -> p' korrekt ist; – itzmukeshy7

Antwort

1

Ich habe das Problem behoben;

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