If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router
Als ik thuis kom is al het gelezen weer rood...
Je kunt de inhoud van een gevulde koek makkelijk laten inkrimpen als je een maximale waarde instelt hoe lang een topic als ongelezen wordt aangegeven.
[ Voor 10% gewijzigd door RwD op 21-07-2004 13:04 ]
Verwijderd
Is het een idee om alle threads als standaard gelezen te markeren? En per gebruiker een lijst bij te houden van nog te lezen threads? Het hangt natuurlijk af van waar het forum over gaat, maar ik ga er hier van uit dat de gebruiker meer threads wel dan niet heeft gelezen. Deze strategie bespaart wat ruimte in je SQL-database.XLerator schreef op 21 juli 2004 @ 12:42:
Hoe hou jij bij welke topics een user al gelezen heeft, en welke niet?
Is het standaard ongelezen, en hou je in een apparte tabel bij welke topics door welke user op welk tijdstip gelezen zijn? En met het opbouwen van de topic-lijst, moet je dan per rij/topic van de laatste reply de datum vergelijken met die in die speciale tabel?
Ik gooi ook maar even een balletje op.
Maar nog een (performance) vraag: Hoe kijk je in de topic lijst in welke topics je al gereageerd hebt? Moet je dan bij elke topic SELECT * WHERE user_id = JOUW_ID ? Dat lijkt me nogal zwaar
If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router
Je kunt ook met cookies doen, ik heb je al een voorbeeld gegeven van een grote site die het doet.
Hou daar inderdaad bij welke gelezen zijn, en verwijder gelezen threads als ze belegen zijn uit het cookie...
Van de andere kant, ik kom nog steeds enorm veel problemen tegen als ik cookies vereis
[ Voor 20% gewijzigd door RwD op 21-07-2004 14:10 ]
1. de mensen moeten het aan hebben staan
2. maar vooral omdat het achter elke PC gelijk moet zijn
En met cookies is het ook weg na een bepaalde tijd. Al met al wil ik geen cookies
Toch bedankt voor de tip
If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router
Verwijderd
Andere vraag: Is het wenselijk om in de lijst met topics te zien of je er al op hebt gereageerd? Bij een forum wil je meestal vaker dan eens reageren op een topic (reageren op andermans reacties op jouw reacties). Wat misschien wel klantvriendelijk is, is om aan te geven of de meest recente reactie in de topic van jezelf is. Al is het maar een "last post by:".XLerator schreef op 21 juli 2004 @ 13:19:
Maar nog een (performance) vraag: Hoe kijk je in de topic lijst in welke topics je al gereageerd hebt? Moet je dan bij elke topic SELECT * WHERE user_id = JOUW_ID ? Dat lijkt me nogal zwaar
Is het geen optie om in de code van phpBB te duiken, en te kijken hoe zij het doen?XLerator schreef op 21 juli 2004 @ 14:13:
Nee ik wil het niet met cookies doen:
1. de mensen moeten het aan hebben staan
2. maar vooral omdat het achter elke PC gelijk moet zijn
En met cookies is het ook weg na een bepaalde tijd. Al met al wil ik geen cookies
Toch bedankt voor de tip
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Is phpBB minder erg?
@Doodle_Jack: Ja het is de wens van de opdrachtgever
If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router
Verwijderd
Dan lijkt mij SELECT * WHERE user_id = JOUW_ID inderdaad de beste oplossing.XLerator schreef op 21 juli 2004 @ 14:23:
@Doodle_Jack: Ja het is de wens van de opdrachtgeverEn ik vind het zelf altijd erg prettig, dus ik geef ze gelijk. Wat jij zegt kan ook, maar zowel de opdrachtgever als ik hebben liever dat je het altijd ziet
Verwijderd
In de session wordt bijgehouden welke threads je tijdens de huidige sessie al hebt bekeken; deze worden ook aangegeven als reeds gelezen.
Dit is een hele efficiënte oplossing, met als enige nadeel dat als je je browser sluit, dan automatisch alle threads als "gelezen" gelden. Ik vind dit zelf perfect acceptabel, maar ik krijg er nogal eens gezeur over van mijn gebruikers.
Een ander uiterste is dat je alle threads persé moet lezen; dit heb ik op een ander forum gezien. Sommige threads _wil_ ik niet lezen (en er zijn er trouwens honderden van in het verleden), maar ze blijven altijd en immer als "ongelezen" gemarkeerd. Op elk forum staat altijd dat er "ongelezen posts" zijn, terwijl me die helemaal niet interesseren. Zeer irritant, en het lampje is nutteloos.
Verwijderd
Mij lijkt het het makkelijkste om van elk forum (en niet van elke post) bij te houden wanneer je het het laatst bezocht. Als er dan nieuwe posts bijkomen in een topic ( $posttime > $lastread ) dan staan er dus sowieso ongelezen posts in.
Eventueel kan je ook nog gaan bijhouden in welke threads je al gepost hebt en dan ook nog eens controleren of er in die thread nog gepost na jij erin gepost hebt.
En tsja, als je echt per sé per thread 100% accuraat wil bijhouden of er nieuwe posts zijn dan vrees ik dat je geen andere optie hebt dan een gigantische tabel aan te maken waarin per user staat wanneer ie welke threads bekeken heeft.
OneOfBorg was me met twee seconden voor
[ Voor 5% gewijzigd door Verwijderd op 21-07-2004 14:30 . Reden: OneOfBorg was me met twee seconden voor ]
Dus dat minpuntje valt (iig voor ons) af
Jouw oplossing is opzich wel goed, maar ik weet dat ik me er ook aan erger dat alles ineens gelezen is. Dat wil ik niet
@vkgandalf: Wie zegt dat ik van brakke code hou
Mja, ik heb maar 1 forum, 1 laag dus. Meer hoefde ze niet. En per topic moet er dus worden bekeken
1: of er een nieuwere reply in staat sinds jij voor het laatst gekeken hebt in dat topic:
2: of jij er in gereplied hebt
Maar andere fora doen dit wel zoals ik wil. Oa het forum van onze school (CMD @ NHL)
If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router
Verwijderd
Jah, maar dat forum waar ik het over had, heeft dat dus nietXLerator schreef op 21 juli 2004 @ 14:34:
@OneOfBorg: Je hebt altijd de knop "Remark all topics as read" ofzo, voor alles en per forum.
Dus dat minpuntje valt (iig voor ons) af

Verwijderd
ThreadID | UserIDs
en die userid's kan je dan scheiden door komma's oid en daarna met de functie explode() in een array dumpen en dan met in_array nagaan of jouw userid in die array voorkomt (indien ja heb je gereplied, anders niet).
En als je dan ook wil bijhouden of je de thread al bekenen hebt kan je het op dezelfde manier doen, maar telkens er een nieuwe reply in de thread komt maak je het UserIDs veld gewoon weer leeg.
Maar als je duizende gebruikers hebt zou ik het zeker en vast zo niet doen aangezien dat waarschijnlijk een beetje te traag zal worden.
Is het dan niet simpeler om dan gewoon een select op userid te doen? Dan heb je namelijk gelijk een mooi lijstje van alle threads die je dus al gelezen hebt, ipv alle threads die iedereen gelezen hebben handmatig te vergelijken met de userid.Verwijderd schreef op 21 juli 2004 @ 14:41:
Als je niet al te veel gebruikers hebt kan je ook per thread (eventueel in een aparte tabel) bijhouden wie het topic al bekeken heeft of gereplied heeft. Iets zoals
ThreadID | UserIDs
en die userid's kan je dan scheiden door komma's oid en daarna met de functie explode() in een array dumpen en dan met in_array nagaan of jouw userid in die array voorkomt (indien ja heb je gereplied, anders niet).
AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.
Verwijderd
Ik denk dat het aannemelijk is dat er meer threads zullen zijn dan users. Dus lijkt een groot aantal velden met elk een relatief klein aantal waarden me beter dan een klein aantal velden met duizenden waarden.Banpei schreef op 21 juli 2004 @ 17:41:
[...]
Is het dan niet simpeler om dan gewoon een select op userid te doen? Dan heb je namelijk gelijk een mooi lijstje van alle threads die je dus al gelezen hebt, ipv alle threads die iedereen gelezen hebben handmatig te vergelijken met de userid.
En als je het op jouw manier doet en er post iemand iets nieuw in een thread wordt het heel wat ingewikkelder om aan te duiden welke gebruikers die thread al gelezen hebben, want dan moet je alle velden van alle users gaan parsen en daar dan die ene thread uithalen, terwijl je op mijn manier gewoon het veld kan leegmaken.