In dem Bereich "Wer ist online?" wird über die "Vollständige Liste" ausgegeben, welcher User sich gerade in welchem Thema befindet.
Ich würde gerne auf einer "Eigenen Seite" die o.a. Funktionsweise nutzen, um danach zu suchen, welcher eingeloggte User sich gerade auf dieser speziellen Seite befindet und das dann auch anzeigen.
Müsste doch prinzipiell machbar sein, oder? Habe mal in der online.php gesucht, bin aber nicht wirklich fündig geworden, wo ermittelt wird, welcher User sich gerade in welchem Thema befindet.
Für einen Tipp wäre ich Euch dankbar.
Edit:
sorry, sehe gerade, dass ich das Thema in die falsche Ecke gestellt habe. Gehört besser unter Anpassungen->Mods und Addons.
ähm, Danke erst einmal für die Antworten, aber ich steh' auf dem Schlauch.
Die o.a. Links zeigen doch nur, wie man eine "Eigene Seite" in der vollständigen Liste von "Wer ist online" sichtbar macht. Das ist nicht das Problem.
Ich möchte auf der neu erstellten Seite quasi eine separate who is online Ausgabe erzeugen, die aber nur die User zeigt, die sich gerade auf dieser Seite befinden.
Dann musst du die Benutzer aus der Tabelle sessions abrufen. Die aufgerufene Datei wird dort auch gespeichert, so dass sich das relativ einfach realisieren lassen sollte.
ich hatte wohl das kleine Wörtchen
relativ überlesen...
Ich erhalte alles mögliche als Ergebnis bzw. mit folgendem Code gar keines mehr
PHP-Code:
$query = $db->query("
SELECT s.uid, s.location, u.uid, u.username
FROM ".TABLE_PREFIX."sessions s
LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)
WHERE s.location = '/testforum/kiste.php*'
ORDER BY u.username DESC
LIMIT 0,100
");
while($data = $db->fetch_array($query))
{
$username = "<a href=\"member.php?action=profile&uid={$data['s.uid']}\">".htmlspecialchars_uni($data['u.username'])."</a> - ";
eval("\$usernames .= \"".$templates->get("kiste_user")."\";");
}
Wie auch immer, etwas sinnvolles erscheint nicht. Wo habe ich denn da meinen Denkfehler?
Mit dem Aufruf der Seite übergebe ich auch die jeweilige UID des Users und deshalb diese Zeile '/testforum/kiste.php
*'.
Zu der Sessions-Tabelle noch eine generelle Verständnisfrage. Muss die nicht irgendwann auch mal wieder leer sein, wenn keine User mehr online sind?
@Thai-Tiger:
das passt schon mit der alten Version. Ich hinke dem Trend noch deutlich hinterher.
(04.09.2008, 22:07)Jockl schrieb: [ -> ]Zu der Sessions-Tabelle noch eine generelle Verständnisfrage. Muss die nicht irgendwann auch mal wieder leer sein, wenn keine User mehr online sind?
Auf den ersten Blick sieht der Query richtig aus. Allerdings solltest du noch eine zeitliche Begrenzung einfügen (z.B. 5 Minuten), denn die session-Tabelle wird nicht geleert, wenn sich ein Benutzer abmeldet. Die Daten werden automatisch nach einem bestimmten Zeitraum (ich glaube es ist 1 Monat) gelöscht.
Mal abgesehen davon, dass ich es leider immer noch nicht hin bekommen habe, die User anzeigen zu lassen, würde das mit der Zeitbegrenzung in etwa so aussehen können?
PHP-Code:
$timestamp = time();
$query = $db->query("
SELECT s.location, s.time, u.uid, u.username
FROM ".TABLE_PREFIX."sessions s
.......
LIMIT 0,100
");
while($data = $db->fetch_array($query))
{
if ($data['s.time'] - $timestamp <= 60*60*5) {
$username = "<a href=\"member.php?action=profile.........
}
}
Ich würde das mit in die Datenbankabfrage einfügen, damit du nicht erst alle Ergebnisse erhältst und dann aussortieren musst.
PHP-Code:
$timestamp = time() - 60*60*5;
$query = $db->query("
SELECT s.location, s.time, u.uid, u.username
FROM ".TABLE_PREFIX."sessions s
WHERE s.time > {$timestamp}
...
");
Erst einmal vielen Dank für den Verbesserungsvorschlag! Für so etwas bin ich immer dankbar!
Im Prinzip funktioniert jetzt so weit alles. Im Prinzip will heißen, dass ab und an anscheinend User "verschluckt" werden oder auch noch nach längerer Zeit angezeigt werden, ob wohl sie schon geraume Zeit ausgeloggt sind. Zusammen mit der "Wer ist online?"-Liste kann man sich aber ein ganz gutes Bild machen.