php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.05.2006, 12:15  
Erfahrener Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 154
iRadiaX
iRadiaX eine Nachricht über ICQ schicken iRadiaX eine Nachricht über AIM schicken
Standard Hilfe: Neue Beiträge markieren

Hallo,

ich bin momentan dabei, ein Forum zu programmieren. Das funktioniert auch hervorragend, jedoch wünschen sich meine User schon seit geraumer Zeit eine Funktion, welche realisiert, dass neue Beiträge beispielsweise durch einen dicken Titel hervorgehoben werden.

Nun ist die Frage, wie ich das realisieren kann. Natürlich kann ich mir das "Last-Refresh"-Timestamp des Users nehmen und beim Anzeigen der Beiträge anzeigen lassen, ob ein Thema in den letzten 5 Minuten geändert wurde. Das stellt aber nicht sicher, dass der Benutzer das Thema auch wirklich noch nicht gelesen hat.

Dann gäbe es noch die Möglichkeit, in einer externen Tabelle speichern zu lassen, welche Beiträge neu sind und die Einträge beim Aufruf des Beitrages zu löschen, jedoch würde das sehr ressourcenfressend werden (z.B. wenn ein Benutzer 1 Woche nicht online war und 5000 neue Beiträge geschrieben wurden).

Wie würdet ihr es umsetzen?

MfG,
iRadiaX
__________________
Quedilo - Downloads schneller finden
iRadiaX ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.05.2006, 12:25  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Ressourcen nimmt das natürlich mit ein, aber was willste dagegen machen?

Wie wärs damit: meldet sich der User das nächste mal an (explizit durch Login oder implizit durch Cookie oder wasauchimmer) erstellste eine Liste mit allen neuen Beiträgen seit seinem letzten Besuch (auch die, die er beim letzten Besuch scho nicht gelesen hat). Wenn er sich dann Beiträge anschaut, löschte einfach die Einträge aus der Liste für den User raus. DB-Struktur wäre dann in etwa so

Tabelle lastVisit:
id | user[id] | topic[id]

Dann sortierste alle Beiträge nach timestamp (kann mySQL ja selbst) und gehst so lange runter, bis ein Beitrag kommt, der älter ist, als der letzte Besuch vom User, denn entweder steht dieser Beitrag dann schon in der "noch nicht gelesen"-Liste, oder aber er hats schon gelesen. Du holst dann von allen Beiträgen die topic-id raus, schemißt doppelte topic-ids raus und hängst es an die Tabelle zusammen mit der user-id an. Liest der Nutzer nun einen Beitrag löscht du den Eintrag aus der Tabelle. Klickt er auf "alles als gelesen markieren" löscht einfach alle Einträge des User.

Es würde auch funktionieren, wenn es du (ressourcensparender) über Sessions machst. Wäre dann genauso, allerdings: Geht ein User einfach weg, ohne irgendwas gelesen zu haben, gehen die Informationen verloren.

Denkbar wäre eine Kombination daraus, so dass nicht auf die DB zugegriffen werden muss, wenn sowieso schon feststeht, dass er den Beitrag bereits kennt, aber die Einträge gelöscht werden, wenn sicher is, dass er ihn noch nicht kennt.

Wie du neue Beiträge löst, die auftreten, während der User anwesend ist, darfste dir erstmal selbst ausdenken

Sind auch alles nur so Gedankengänge, vielleicht gibts ja doch nen den Masterplan
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 17.05.2006, 12:35  
Erfahrener Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 154
iRadiaX
iRadiaX eine Nachricht über ICQ schicken iRadiaX eine Nachricht über AIM schicken
Standard

Hi KingCrunch,

an sich ist das keine schlechte Idee, es ist auch ressourcensparender. Problem dabei ist halt:

Zitat:
Zitat von KingCrunch
Wie du neue Beiträge löst, die auftreten, während der User anwesend ist, darfste dir erstmal selbst ausdenken
Manche User loggen sich stundenlang nicht aus und werden rummeckern "Bug!"... ich kenn das

Nunja ich warte mal auf weitere Lösungsvorschläge, vielleicht kommt ja noch was total gutes

MfG,
iRadiaX
__________________
Quedilo - Downloads schneller finden
iRadiaX ist offline  
Alt 17.05.2006, 12:44  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

"Loggen sich stundenlang nicht aus" ist in der Form inkorrekt, da nach 20 min Inaktivität die Session automatisch beendet wird. Du kannst natürlich einfach pauschal machen: Wenn jemand einen Beitrag schreibt, bekommt JEDER (ausser der Schreiberling selbst) einen Hinweis. Hätten einen interessanten Begleiteffekt, der hier im Forum zB gerne ma auftritt, beseitigt: Wenn jemand eine Antwort schreibt, jemand anderes aber auch, wird das gerne übersehen. Wenn aber nun der erste Schreiber einen Hinweis bekommt, dass ein neuer Beitrag vorhanden ist, obwohl das nicht der neuste ist (da er ja selbst der neuste beitrag ist) übersieht er ihn nicht.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 17.05.2006, 12:46  
Erfahrener Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 154
iRadiaX
iRadiaX eine Nachricht über ICQ schicken iRadiaX eine Nachricht über AIM schicken
Standard

hmm das mit den 20 minuten ist mir neu... kann man das denn irgendwie verhindern?
__________________
Quedilo - Downloads schneller finden
iRadiaX ist offline  
Alt 17.05.2006, 12:51  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Nein, und ma ehrlich: Das wäre auch Müll Es hängt mit dem Session-Handling zusammen. Der Server kann (rein technisch bedingt) nicht unterscheiden, ob der Nutzer einfach nicht reagiert, oder den Browser eventuell komplett geschlossen hat. Vielleicht ist auch der Computer komplett aus, das weiß der Server alles garnicht. Wenn man nun den Session-Timeout auf unendlich sets, würdest sehr schnell einen lustigen (und vorallen riesigen) Stapel Datenmüll auf deinem Server rumliegen haben. Schließlich beendet er dann keine Session mehr, ob der User nun da is oder nicht.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 17.05.2006, 13:21  
Erfahrener Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 154
iRadiaX
iRadiaX eine Nachricht über ICQ schicken iRadiaX eine Nachricht über AIM schicken
Standard

Nunja, wie macht phpBB es denn? es speichert 2 Cookies:

phpbb2mysql_t:
a:3:{i:1;i:1147864235;i:2;i:1147864402;i:3;i:11478 64578;}

phpbb2mysql_data:
a:2:{s:11:\"autologinid\";s:0:\"\";s:6:\"userid\"; s:1:\"2\";}

Aber da kann ich nicht viel mit anfangen
__________________
Quedilo - Downloads schneller finden
iRadiaX ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbanktabelle erstellen - brauche Hilfe Raccoon PHP Tipps 2008 1 14.06.2008 11:03
Wie bekomm ich eine neue Session-ID?? rabatz PHP Tipps 2007 1 20.02.2007 15:26
Teilbereich eines Bildes markieren und verlinken Redfish PHP Tipps 2006 4 30.05.2006 08:45
[Erledigt] Hilfe: Projektabreit Informatik und Technik bitte helft uns. Off-Topic Diskussionen 31 05.04.2006 18:25
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
brauch bitte hilfe will eine neue PHP-community PHP Tipps 2005-2 9 10.09.2005 20:17
Kontaktformular, welches auf neue html Seite führt PHP Tipps 2005-2 4 20.07.2005 11:21
neue Seite mit größe 640*480 Matthiasnet HTML, Usability und Barrierefreiheit 4 19.07.2005 17:44
[Erledigt] Hilfe bei Formular für Datenerhebung benötigt PHP Tipps 2005-2 3 16.07.2005 10:43
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
neue Seite mit X breite und min höhe + druckbefehl HTML, Usability und Barrierefreiheit 15 11.05.2005 13:34
session_id() - Neue ID beziehen RcRaCk2k PHP-Fortgeschrittene 4 03.02.2005 12:52
Hielfe: WIE neue DB Einträge zählen& farbig markieren??? Datenbanken 2 20.07.2004 12:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
neue beiträge markieren user, html eintrag als neu markieren, phpbb3 ungelesene beiträge markieren und dann gelesen auswählen, php neueste beiträge markieren cookie

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.