Anzeigen lassen, wer meine Seite besucht hat

thehasso

Erfahrenes Mitglied
Hallo,


ich wollte gerne meinen usern die möglichkeit geben, zusehen, wer zuletzt die profil Seite von ihm gesehen hat. Sprich der User B besucht das Profil von User A. So nun soll dann sehen könne, das B sein Profil gesehen hat. Sprich durch das Bild des Users.

Wie könnte man solch eine Aufgabe in PHP bewältigen


Würd mich über eine Antwort freuen.

Viele grüße
thehasso
 
Wenn der Nutzer B auf das Profil von Nutzer A geht, dann prüfst du ob dieser der letzte Besucher von Nutzer A in seinem Profil war. Dazu fragst du in einer Tabelle einer Datenbank, die am besten speziell dafür eingerichtet wurde, die Besucher von Nutzer As Profil ab (optimiert: du lässt sie nach dem Zeitstempel sortiert ausgeben [neuster Zeitstempel ganz oben] und limitierst das auf einen Datensatz, somit hast du immer nur den letzten Besucher). Falls dieser Besucher Nutzer B ist, dann passiert nichts. Falls der letzte Besucher nicht Nutzer B ist, dann fügst du einen neuen Datensatz ein (Profil von: Nutzer A; Besucher: Nutzer B; Zeit: Zeitstempel). Am besten kommst du, wenn du statt dem Namen der Nutzer einfach nur die Nutzer-ID von beiden speicherst.

Hoffe, dass ich dir helfen konnte. Ansonsten einfach noch mal nachfragen.
 
hmm und wie würde man das überprüfen, wer der letzte Besucher bzw wer mein profil aufgerufen hat? Gibt's dafür eine Funktion etc?
 
Hallo,

ich würde das so machen:

- Tabelle für das Vorhalten des Besuchs anlegen, ich nenn sie mal profilevisits

Spalte 1: id int not null autoincrement
Spalte 2: visitdate: datetime
Spalte 3: userid: int (evtl. Referenz auf user Tabelle Spalte id)

In der Logik, die das Profil eines Benutzers anzeigt, über dem Auslesen des Profils folgende Logik einbauen (Pseudocode):

Code:
Wenn Profil == Eigenes Profil 
{
  letzter_eigener_besuch = select * from profilevisits where userid = [eigene_userid] order by visitdate desc limit 1;
  fremdbesuche = select * from profilevisits where userid != [eigene_userid] and visitdate > letzter_eigener_besuch order by visitdate asc;
  while(fremdbesuche)
  {
      // htmlcode für die tabellarische Auflistung
  }
}

insert into profilevisits (visitdate, userid) values (NOW(), [eigene_userid]);

Das sollte genügen.

Grüße
 
Somit werden doch auch User C, D und E bei user A ausgegeben, unabhängig davon ob sie auf dem Profil des Users A oder B waren?

Zudem würde ich die Spalte "id" in der Tabelle weg lassen, da diese eh nicht genutzt wird.
An Stelle dieser sollte eine Spalte mit der ID des Users, dessen Profil besucht wurde hinzugefügt werden.
 
Man wählt den Primärschlüssel einfach nur geschickt:
SQL:
CREATE TABLE IF NOT EXISTS `letzte_profilbesuch` (
  `userID` smallint(6) NOT NULL,
  `visitorID` smallint(6) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`userID`,`visitorID`)
)

Und macht eine trickreiche Anweisung:
SQL:
INSERT INTO `letzte_profilbesuch`
(
  `userID`,
  `visitorID`
) VALUES (
  1,
  2
)
ON DUPLICATE KEY UPDATE
 `time` = CURRENT_TIMESTAMP

Wobei hier 1 die ID des Benutzers ist, der "besucht" wurde und 2 die ID des "Besuchers".
Das war's. Schon sind die Besuche gespeichert.
Das Auslesen und Auswerten krieg bitte selbst hin, ist auch nicht schwer.
 
Zuletzt bearbeitet von einem Moderator:
Zurück