Forum - Neue Beiträge
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abwesenheit
auf
ausschneiden
begrenzung
beitrag
count
daten
datenmasse
deswegen
id
letzte mal
listen
login
platzen
post
prinzip
sache
schleifen
speicher
user
-
Ich habe folgendes Baumforum:
http://ravenc.lima-city.de/diverses/forum.txt
Jedoch kann man sich dort nicht die neuen Beitr?ge anzeigen lassen.
Hat jemand eine Ahnung, wie ich dass Forum erweitern muss, damit dies m?glich ist?
Damit ein User erkennen kann ob er den Beitrag schon gelesen hatt.
Freue mich auf eure Antworten
mfg RaVenC -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Der ganze Code hilft nicht viel weiter.
Kannst du uns mal genau den Ausschnitt hier posten der f?r die neuen Beitr?ge wichtig ist?
VOn welchem Forum ist das? -
Speichere wann ein User das letzte mal eingeloggt war als UNIX Timestamp.
Ebenso speicherst du immer die Zeit, zu der ein Post geschrieben wurde mit einem UNIX Timestamp.
Und dann liest du alle Beitr?ge aus, die einen gr??eren UNIX Timestamp haben als die letzte Aktivit?tszeit des Users.
Zus?tzlich musst du dann mit cookies speichern, welche der neuen Beitr?ge jetzt vom User schon gelesen wurden, um diese dann nach und nach nicht mehr zu highlighten. -
Dumm ist dann nur, wenn der User seine Cookies l?scht.
Deswegen solltest du auch machen, wenn der UNIX Timestamp ?lter als 48 Stunden ist, oder 24 alle als gelesen makiert werden, -
Dumm ist dann nur, wenn der User seine Cookies l?scht.
Selber Schuld. Der Cookie muss ja nicht mal das schlie?en des Browserfensters ?berleben. Sobald man sich neu einloggt wird nach diesem Prinzip sowieso ein neuer Cookie angelegt.
Alle bis dahin neunen, nicht gelesenen Themen werden beim schlie?en des Browsers quasi als gelesen betrachtet.
Deswegen solltest du auch machen, wenn der UNIX Timestamp ?lter als 48 Stunden ist, oder 24 alle als gelesen makiert werden,
Eine Begrenzung von 48 Stunden w?re angebracht.
Ansonsten k?nnten das nach l?ngerer Abwesenheit schon ziehmliche Datenmassen sein. -
Ja stimmt.
Oder er speichert die Daten in einer DB.
Ist vielleicht sogar noch besser. -
Das Problem mit einer DB w?re, wenn man das auf die ganzen User hochrechnen w?rde, dass zu viel speicher verbrauchen w?rde. (Deutsche Sprache^^)
Da ist es doch wesentlich praktischer, wenn man SELECT id,forum FROM posts WHERE submitted>$user_last_logged_on
macht und das in nen Cookie packt.
Ansonsten m?sste auch jeden Seitenaufruf aufs neue eine relativ aufwendige Query gestartet werden, die eben nachschlagen muss, was schon angesehen wurde und welche nicht. Da ist ein Cookie, der das dem Server mitteilt schon wesentlich praktischer. -
Also du meinst das man es so macht:
post --> timestamp
user login --> timespam in cookie
post_time > cookie_time
{
neuer Beitrag
}
post_time+60*60*48 > time
{
kein neuer post?
}
Habe ich das jetzt richtig verstanden? -
newwarrior schrieb: post_time+60*60*48 > time { kein neuer post? /* Dann ist es logischerweie ein neues Post ! Ein Post ist veraltet, wenn die Zeit+48 Stunden kleiner als die jetzihe Zeit ist. */ }
Damit kannst du dir dann das hier sparen:
post_time > cookie_time
{
neuer Beitrag
}
Ansonsten stimmt das so. -
newwarrior schrieb: post_time+60*60*48 > time { kein neuer post? /* Dann ist es logischerweie ein neues Post ! Ein Post ist veraltet, wenn die Zeit+48 Stunden kleiner als die jetzihe Zeit ist. */ }
Damit kannst du dir dann das hier sparen:
post_time > cookie_time
{
neuer Beitrag
}
Ansonsten stimmt das so.
Aber wenn ich mir das dann sparen kann, wofpr brauch in dann den Cookie?
Wegen der letzten login zeit?
Die kann ich doch dann auch in der DB speichern, denn ein Timestamp nimmt ja nicht viel Platz weg. -
In den Cookie schreibst du (zus?tzlich) alle Post IDs rein, die du schon gelesen hast.
Und bei der Ausgabe werden dann alle Posts, die in der Cookie-Liste stehen, dann nicht als neu markiert.
Beitrag ge?ndert am 1.05.2006 11:10 von bladehunter -
Ich wei? wohl wie ich eine sache rein schreibe das mit dem tiemstamp.
Aber wie mache ich es wenn ich alle in einem Array habe? -
Du schreibst einfach das komplette Array in deinen Cookie
$_COOKIE['posts'] = $array
Dann kannst du bspw. die IDs mit ner FOR-Schleife auslesen
for($i=0; $i<count$_COOKIE['posts']; $i++)
{
$id = $_COOKIE['posts'][$i]['id'];
} -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage