Seite aktualisieren wenn ein Datensatz gelöscht wird

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Bones van Helghast
Mitglied
Beiträge: 157
Registriert: 19.09.2008 08:31

Seite aktualisieren wenn ein Datensatz gelöscht wird

Beitrag von Bones van Helghast »

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:

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;">&nbsp;' .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);
?>
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 :roll:

Bitte um Hilfe

Bones van Helghast
Antworten

Zurück zu „Coding & Technik“