php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.01.2012, 19:53  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard [Erledigt] Nachverfolgung gelesener News pro User

Hallo,

für mein Projekt habe ich ein News-System erstellt. Es soll nun nachverfolgt werden, welcher User welche News gelesen hat. Am Ende sollen immer die drei neusten News, mindestens jedoch alle ungelesenen angezeigt werden.

Meine Frage ist nun, wie ich das konzeptionell auf Datenbankebene am besten abbilde.

Die News sind kurz gesagt in einer Tabelle mit den Spalten (id, publisher, title, text).

Meine bisherige Überlegung war, eine Tabelle anzulegen, welche Zuordnungen enthält, welche noch nicht gelesen wurden. Somit wächst die Tabelle nicht unendlich.

Zum Auslesen könnte ich einfach die ungelesenen News nehmen, und wenn die weniger als 3 sind, durch UNION auffüllen.

Was haltet ihr davon? Habt ihr ein besseres Konzept?

Danke und Gruß,
Daniel
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.01.2012, 00:20  
Erfahrener Benutzer
 
Registriert seit: 04.08.2010
Beiträge: 287
PHP-Kenntnisse:
Fortgeschritten
zwutz wird schon bald berühmt werden
Standard

Zitat:
Zitat von Daniel Beitrag anzeigen
Meine bisherige Überlegung war, eine Tabelle anzulegen, welche Zuordnungen enthält, welche noch nicht gelesen wurden. Somit wächst die Tabelle nicht unendlich.
versteh ich nicht. Genau aus dem selben Grund würde ich es anders herum machen. Oder willst du bei jeder neuen News für jeden Benutzer einen Eintrag anlegen?

Einfach ablegen, wer wann welche News gelesen hat. Evtl zeitlich limitieren, dich werden ja eh nur neuere News interessieren
zwutz ist offline   Mit Zitat antworten
Alt 03.01.2012, 00:24  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Hallo zwutz,

danke zunächst für deine Antwort. Ja, so in etwa sah mein Plan aus. Beim Erstellen von News für jeden Nutzer einen Eintrag anlegen, dass der die News nicht gelesen hat.
Sobald er dies getan hat, dein Eintrag aus der Tabelle wieder löschen. Somit enthält sie immer nur die aktuell ungelesenen Einträge.

Anders herum würde ich immer, wenn ein User die News gelesen hat, einen Eintrag erstellen. Das würde auf Dauer ziemlich wachsen, oder?

Außerdem will ich beim Auslesen ja gerade die News, die der User noch nicht gelesen hat.

Das war meine Idee dahinter...
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Alt 03.01.2012, 00:35  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

Gerade so wird ja ordentlich was in die DB gehämmert. Wenn für jeden Artikel ein Eintrag für "ungelesen" erstellt wird, dann wächst das recht schnell. Stell dir mal 200 User vor, von denen durchschnittlich 50 User einen Artikel lesen. Der Rest ist nicht mehr aktiv oder hat schlichtweg keine Lust zu lesen. Bei zwei Artikeln hättest du schon 300 überflüssige Einträge, bei vier Artikeln 600 usw...

Dann doch lieber die gelesenen Artikel in eine Tabelle setzen.
__________________
dsentker ist offline   Mit Zitat antworten
Alt 03.01.2012, 00:59  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von dsentker Beitrag anzeigen
Der Rest ist nicht mehr aktiv oder hat schlichtweg keine Lust zu lesen.
Ich glaube, ich habe mich etwas unglücklich ausgedrückt, der Fall liegt bei mir glaube ich bisschen anders.

Die Formulierung des Auftrags war: "Jeder Benutzer soll nach dem Anmelden auf der Startseite die drei aktuellsten Artikel sehen, mindestens jedoch diese, die er noch nicht gesehen hat."

Als "gesehen" wird hier bereits das Anzeigen der Titel auf der Startseite definiert. D.h. sobald sich ein User anmeldet, sieht er direkt alle neuen Artikel und damit können diese als gelesen betrachtet werden.

Fragt mich bitte nicht nach dem Sinn dieser Regelung, es ist eine feste Vorgabe. Damit dürfte ich auf Dauer deutlich weniger ungelesene als gelesene Artikel haben...

Nachdem ich es jetzt beim dritten Anlauf hoffentlich hinbekommen habe, den Sachverhalt richtig darzulegen (sorry!), glaube ich immer noch, dass es sinnvoller und auch einfacher ist, die ungelesenen Artikel zu speichern... Oder bleibt ihr bei eurer Meinung?
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Alt 03.01.2012, 08:24  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

gesehene Zeitspektren der News für jeden User speichern. Insofern man davon ausgehen kann das der User die News immer nach alter sortiert ansieht. so kannst du davon ausgehen das irgendwann alle gelesen sind ( das zeitspektrum also vom ältesten zum jüngsten reicht ) wenn nichts mehr außerhalb des gespeicherten Spektrums vorhanden ist. Das lässt sich mit ein paar Kniebeugen direkt über Datenbanktrigger lösen oder über etwas SQL + DateTime innerhalb von PHP
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 03.01.2012, 14:40  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Das ist eine sehr gute Idee! Ich speichere sowieso in der Datenbank den Zeitpunkt des letzten Logins und die News werden chronologisch sortiert. Nach einem Login kann ich davon ausgehen, dass er die ungelesenen News (die, die seit seinem letzten Login verfasst wurden) dann gesehen hat.

Somit sind die ungelesenen News immer die zwischen dem jetzigen Zeitpunkt und dem letzten Login des Users. So komme ich sogar vollständig um eine weitere Tabelle herum.

Vielen Dank!
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Alt 04.01.2012, 02:51  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nicht unbedingt, wenn du beispielsweise 5 news auf der seite anzeigst, aber 20 vorhanden sind die ungelesen sein würden, sieht er nur die ersten 5, deswegen nicht unbedingt den last login nehmen, sondern effektive "sichtung" speichern, anhand von begin -> end - dates..
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 04.01.2012, 02:55  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Daniel Beitrag anzeigen
Die Formulierung des Auftrags war: "Jeder Benutzer soll nach dem Anmelden auf der Startseite die drei aktuellsten Artikel sehen, mindestens jedoch diese, die er noch nicht gesehen hat."
Dann werden eben 20 News angezeigt... Über Sinn und Unsinn lässt sich hier trefflich streiten. Auf der anderen Seite wird es von Natur aus wenig bis gar keine User geben, die sich so selten anmelden.

Ich werde es erstmal so versuchen. Danke aber dennoch für den Hinweis!
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Antwort


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
[MySQL] DB-Abfrage, nach jedem 2. Datensatz eine "Zwischenseite" n10n50 Datenbanken 7 08.12.2011 22:03
[Algorhytmus] User Klassifizierung HCi PHP-Fortgeschrittene 4 12.05.2011 12:16
immer nächste und vorherige News Link anzeigen goodie PHP Tipps 2010 6 10.11.2010 17:21
Datei für den User umbenennen... Thallius PHP Tipps 2010 5 01.11.2010 14:00
$_SESSION user mit User aus DB abgleichen josephh PHP Tipps 2010 6 10.09.2010 21:53
News Titel in Browser anzeigen? Mimi87 PHP Tipps 2010 6 06.09.2010 17:48
Button um auf älterer News zu kommen. Risk5o PHP Tipps 2010 13 15.04.2010 01:24
News system Crithack PHP Tipps 2009 1 26.11.2009 14:20
User sollen eigenes Email-Konto im Adminbereich eingeben können!? alex-bad-bad PHP Tipps 2009 2 30.07.2009 11:44
Projekt: User über Intranetpage erstellen, auf einen VoIP-Server beta1234 PHP Tipps 2009 2 22.07.2009 13:21
[Erledigt] News anzeigen wenn "true" Freakli Datenbanken 3 22.02.2009 18:57
User mit PHP aus DB löschen MistaJ PHP Tipps 2008 10 01.12.2008 19:38
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
Session: Untersch. Seiten f. eingeloggte User und norm. User PHP Tipps 2005-2 2 20.07.2005 12:46
[Erledigt] MySQL user rausfinden Datenbanken 4 26.05.2005 12:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:50 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