Letzte Aktivitäten

lisali

Erfahrenes Mitglied
Hallo,

ich würde gerne erfahren wie genau ich es anstelle, meine Datenbank(-Tabellen) so zu erweitern, dass ich auf einer Seite anzeigen kann, was die letzten Aktionen bzw. Aktivitäten aller Mitglieder der DB waren. Ich bezweifle, dass ich dafür eine neue Tabelle in meiner DB erstellen muss. Wahrscheinlich liegt der einzige Aufwand darin, eine längere SQL-Abfrage zu schreiben, die jeweils auf das Datum zugreift und dann entsprechende Aktion ausgibt, wenn ich mich nicht täusche? Doch da liegt auch gleich das Problem, da ich vermute, dass es sich dabei wohl um eine einzige Abfrage handelt, in dieser mehrere Tabellen gleichzeitig angesprochen bzw. ausgewählt werden.

Ich hoffe jemand hat verstanden, was ich überhaupt möchte und kann mir irgendwie auf die Sprünge helfen... :rolleyes:


Liebe Grüße,

Lisa
 
Hi,

ich würde dazu schon eine neue Tabelle anlegen, in der du dann die Aktivitäten speicherst.

Code:
user id | aktivität | datum


Was genau willst du denn speichern und wie genau soll die Ausgabe aussehen?
 
Hey,

also ich dachte an Sachen wie:

"vor 2min: x hat y folgenden Kommentar auf der Profilseite hinterlassen: abc..."
"vor 5min: x hat ein neues Bild hochgeladen: (Bildervorschau)"
"vor 1h: x ist jetzt online"

usw.

Also, ist eine neue Tabelle doch dafür ratsam? Jetzt nur aus Gründen der Einfachheit halber oder weil es auch effizienter ist?

Danke!

Liebe Grüße,

Lisa
 
Wurde nicht ganz klar was du vorhast. Wie genau deine DB zu erweitern ist, weis man erst wenn man sie kennt ;)
Daher gehe ich einfach davon aus, dass es eine Anzeige zum Anzeigen der letzten Benutzeraktivitäten seien soll.

Eigentlich bräuchte nur jedes Script einer Seite folgendes in einer entsprechend vorhandenen Tabelle ausführen:
Code:
UPDATE `user_aktion` SET `userId` = $userid, `lastAction` = 'Passender Text'

Oder um das ganze Multilingual zu halten, müsste "lastAction" eine ID sein und es eine weitere Tabelle geben mit "actionID", "languageID", "text" über die man es dann zusammenführt und anzeigen kann.

Sollen die letzten 5 Aktionen die überhaupt auf der Seite von irgendjemanden getätigt wurden angezeigt werden ist die Tabelle "user_aktion" um das Feld "date" zu erweitern und dort kommt dann der aktuelle Zeitstempel rein.

Ein weiterer Weg wäre es die Session in der Datenbank zu verarbeiten, ein Tutorial dazu gibt es hier.

Am besten schilderst dein Vorhaben nochmal genau ;)

EDIT: Nach deinem letzten Beitrag empfehle ich dir das mit den Sessions und den Pfad mit Query (ohne Session-ID), welchen der Benutzer zuletzt besucht hat in der DB zu speichern und für die Anzeige wird dieser von einem Script ausgewertet.
 
Zuletzt bearbeitet:
Ein Feld in der Datenbank wo der Timestamp gespeichert wird seit dem letzten einloggen/ausloggen.
Dann kannst du mit einer Abfrage die ungefähr so aussieht:

PHP:
$sql = "SELECT username, userid, timestamp FROM users WHERE timestamp > {definierter timestamp}";
$result = mysql_query($sql);
while($res = mysql_fetch_assoc($result))
{
       $last = $res['timestamp'];
       $last = $last /60/60/24;
       echo $res[username]." letze aktivitaet: vor  ".$last." Tagen";
}
 
Ein Feld in der Datenbank wo der Timestamp gespeichert wird seit dem letzten einloggen/ausloggen.
Dann kannst du mit einer Abfrage die ungefähr so aussieht:

PHP:
$sql = "SELECT username, userid, timestamp FROM users WHERE timestamp > {definierter timestamp}";
$result = mysql_query($sql);
while($res = mysql_fetch_assoc($result))
{
       $last = $res['timestamp'];
       $last = $last /60/60/24;
       echo $res[username]." letze aktivitaet: vor  ".$last." Tagen";
}

Hey,

danke Dir für die Mühe, aber genau das meinte ich leider nicht. Wie mein zweiter Beitrag in diesem Thread zeigt, möchte ich von allen Benutzern die letzte "Community-Aktivität" für alle anderen anzeigen lassen. Das heißt quasi, dass irgendwie mehr Transparenz für alle vorhanden ist, man dies ggf. noch eingrenzen kann, dass nur die letzten Aktionen von Freunden angezeigt werden.


EDIT: Nach deinem letzten Beitrag empfehle ich dir das mit den Sessions und den Pfad mit Query (ohne Session-ID), welchen der Benutzer zuletzt besucht hat in der DB zu speichern und für die Anzeige wird dieser von einem Script ausgewertet.

Also, in meiner Benutzertabelle ist das bereits vorhanden, dass der Query jedes einzelnen Benutzers gespeichert wird. Das sollte ja ein Vorteil sein. Aber vom rein logischen her, kann ich das jetzt nicht so überblicken. Soll ich jetzt in einer neuen Tabelle speichern, wann wer welches Query hatte oder irgendwie einfach mit PHP eine if-Abfrage mit diesen Query-Daten aus der momentanen Benutzertabelle machen, diese dann anzeigt, was getan wurde?
Ich glaube auch vielleicht zu kompliziert zu denken... :rolleyes: Ich möchte eigentlich nur wissen, wie es eigentlich "üblich" ist, soetwas zu realisieren bzw. aber auch was ratsamer wäre in meinem Fall, wo es sowieso eine Query-Spalte in der Benutzertabelle gibt?

Dankeschön!


Liebe Grüße,

Lisa
 
PHP:
if ($_GET['site'] != "logout" && isset($_SESSION['user_id'])){ 
mysql_query("UPDATE users SET query='".$_SERVER['QUERY_STRING']."',time=NOW() WHERE id='".$_SESSION['user_id']."'"); 
}

Das passiert, wenn man sich nicht gerade ausloggt und man als Mitglied angemeldet ist.

Oder meintest Du etwa die Ausgabe auf der einzelnen Profilseite?


Liebe Grüße,

Lisa
 
Ich meinte dieses: $_SERVER['QUERY_STRING']. Also was da drin steht.

Dann könnte ich ein konkretes Beispiel posten. Sonst muss ich blind raten und der Beispielcode wird eh nicht funktionieren, was für uns beide doppelte Arbeit bedeuten würde ;)
 
Das wäre z.B. (nach "index.php?"): "site=user&id=1"

Hier wäre der Benutzer wohl gerade auf der Profilseite von dem Benutzer der ID 1.
 
Zurück