Seite aktualisieren wenn ein Datensatz gelöscht wird
Verfasst: 25.02.2013 20:37
Hallo.
Folgendes Problem stört mich seit ettlichen wochen und verfolgt mich regelrecht.
Ich bin gerade dabei einen kleinen Chat für meine Klasse zu erstellen es geht um den Punkt der Benutzerliste.
Ich schaff es zwar bei Login einen Benutzernamen in die SQL-DB zu speichern und es bei Allen eingeloggten Usern am Browser aktualisiert wird jedoch nicht, das gegenteil
Also wenn sich jemand ausloggt wird zwar der Datensatz in der Datenbank gelöscht allerdings refresht bei keinem der eingeloggten User die Seite sodass der User immer als eingeloggt angezeigt ist. Sobald sich ein neuer User einloggt bleibt der alte (schon ausgeloggte User) immernoch stehen und der Browser fügt quasi nur den neuen Benutzer auf dem Browser ein aber aktualisiert nicht wirklich..
Folgenden Code verwende ich:
Im übrigen schaff ich es auch nicht für Benutzer die den Logout-Link in der Benutzerleiste nicht finden und einfach den Browser schließen den Namen aus der Datenbank zu entfernen und anschließend die Seite zu aktualisieren.
Also wenn der Browser geschlossen wird, die Seasson zerstört wird ist der Nutzername immernoch in der Datenbank. Ich hab keine ahnung wie ich das realisieren soll
Bitte um Hilfe
Bones van Helghast
Folgendes Problem stört mich seit ettlichen wochen und verfolgt mich regelrecht.
Ich bin gerade dabei einen kleinen Chat für meine Klasse zu erstellen es geht um den Punkt der Benutzerliste.
Ich schaff es zwar bei Login einen Benutzernamen in die SQL-DB zu speichern und es bei Allen eingeloggten Usern am Browser aktualisiert wird jedoch nicht, das gegenteil
Also wenn sich jemand ausloggt wird zwar der Datensatz in der Datenbank gelöscht allerdings refresht bei keinem der eingeloggten User die Seite sodass der User immer als eingeloggt angezeigt ist. Sobald sich ein neuer User einloggt bleibt der alte (schon ausgeloggte User) immernoch stehen und der Browser fügt quasi nur den neuen Benutzer auf dem Browser ein aber aktualisiert nicht wirklich..
Folgenden Code verwende ich:
Code: Alles auswählen
<?php
function getNewMessagesSince($timestamp, $limit) {
$lastupdate = array();
$html = '';
if($timestamp == -1) {
$sql = 'SELECT id, user FROM chat_online ORDER BY id ASC LIMIT '.intval($limit);
}
else {
$sql = 'SELECT id, user FROM chat_online WHERE id > '.intval($timestamp).' ORDER BY id ASC LIMIT '.intval($limit);
}
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res)) {
$lastupdate[] = $row['id'];
$user_db = $row['user'];
html. = '<div style="font-family : arial, tahoma, verdana, helvetica, sans-serif;"> ' .htmlentities($row['user'], ENT_QUOTES, 'ISO8859-15'). '</div>';
}
if(count($lastupdate)) {
rsort($lastupdate);
return array(
'lastupdate' => array_shift($lastupdate),
'html' => $html
);
}
return false;
}
$lastupdate = isset($_POST['lastupdate']) ? $_POST['lastupdate'] : null;
$limit = isset($_POST['limit']) ? $_POST['limit'] : 10;
$timeout = time() + 10;
while(!($row = getNewMessagesSince($lastupdate, $limit)) && time() < $timeout) {
usleep(200000);
}
echo json_encode($row);
?>
Also wenn der Browser geschlossen wird, die Seasson zerstört wird ist der Nutzername immernoch in der Datenbank. Ich hab keine ahnung wie ich das realisieren soll

Bitte um Hilfe
Bones van Helghast