/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Forum, nye poster
Fra : Bo Rattenborg


Dato : 20-01-03 15:46

Hvordan kan jeg vise at der er kommet nye poster i et forum ?

Jeg har prøvet følgende:
Gemme last_login_:time, som er det tidspunkt hvor personen sidst loggede ud.

Nå så personen logger ind, så sammenlignes personens last_login_time med
tiden for de nyeste indlæg i forumet. Hvis posterne er nyere end
last_login_time, så står der f.eks. '[new]' efter indlægget.

Problemet er dog at posten er ny indtil at personon igen logger ud, hvilket
jo ikke er hensigten

En anden løsning jeg har arbejdet med er, at linket til hver gruppe
(grupperne er der hvor indlæggende er), pladseres en
&last_answer_add=xxxxxxxx i linket, hvor xxxxxxxx så er en dato for det
sidste indlæg i gruppen, så fremstår linket til gruppen som ikke-besøgt, og
kan derfor have et udseenede der skiller sig ud fra de grupper, hvor der
ikke er nye indlæg.

Problemet er dog, at jeg ved at gøre det på den måde, f.eks. ikke kan skrive
'[new]'. Et andet problem er denne metode heller ikke tager hensyn til hvem
der er logget ind, men kun bruger browserens buffer, hvilket gør at metoden
ikke virker hvis flere personer deler den samme browser.

Hvordan ville I løse det ?

Bo



 
 
Jesper Brunholm (20-01-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 20-01-03 19:57

Bo Rattenborg wrote:
> Hvordan kan jeg vise at der er kommet nye poster i et forum ?
>
> Jeg har prøvet følgende:
> Gemme last_login_:time, som er det tidspunkt hvor personen sidst loggede ud.
>
> Nå så personen logger ind, så sammenlignes personens last_login_time med
> tiden for de nyeste indlæg i forumet. Hvis posterne er nyere end
> last_login_time, så står der f.eks. '[new]' efter indlægget.
>
> Problemet er dog at posten er ny indtil at personon igen logger ud, hvilket
> jo ikke er hensigten

så er der jo ikke andet for end (for hver post/besked) at holde styr på
om personen har læst dem, og i så fald sætte login-time=reading-time.

Det giver nok en tabel med et seriøst antal poster, men jeg tror ikke at
det er spor uoverkommeligt.

> En anden løsning jeg har arbejdet med er, at linket til hver gruppe
> (grupperne er der hvor indlæggende er), pladseres en
> &last_answer_add=xxxxxxxx i linket, hvor xxxxxxxx så er en dato for det
> sidste indlæg i gruppen, så fremstår linket til gruppen som ikke-besøgt, og
> kan derfor have et udseenede der skiller sig ud fra de grupper, hvor der
> ikke er nye indlæg.

ikke forstået

> Problemet er dog, at jeg ved at gøre det på den måde, f.eks. ikke kan skrive
> '[new]'. Et andet problem er denne metode heller ikke tager hensyn til hvem
> der er logget ind, men kun bruger browserens buffer, hvilket gør at metoden
> ikke virker hvis flere personer deler den samme browser.

sidstnævnte ville jeg nok se stort på i første runde - men jeg kan godt
se at det er rarest at komme udenom det

> Hvordan ville I løse det ?

Jeg ville nok køre et register over brugerens læsning af beskeder og så
sætte beskeden læst når han har læst den, og tråden læst når alle
beskeder er læst. Det er så god brugervenlighed at lave en "catch up" -
funktion...

Ja - du skal skrive lidt mere til, og trække lidt mere fra databasen,
men det er ikke uoverkommeligt.

mvh

Jesper Brunholm


Bo Rattenborg (20-01-2003)
Kommentar
Fra : Bo Rattenborg


Dato : 20-01-03 20:18

> Jeg ville nok køre et register over brugerens læsning af beskeder og så
> sætte beskeden læst når han har læst den, og tråden læst når alle
> beskeder er læst. Det er så god brugervenlighed at lave en "catch up" -
> funktion...
>
> Ja - du skal skrive lidt mere til, og trække lidt mere fra databasen,
> men det er ikke uoverkommeligt.

Kunne jeg ikke gøre det, at registeret kun indeholder de indlæg som er nyere
end sidste logout, så hver gang en af de nye poster er læst, så sættes den
som læst i registeret.
Når så brugeren logges ud, så slette alle poster i registeret hvor brugerid
er lig med brugerens id.

Bo



Jesper Brunholm (20-01-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 20-01-03 22:24

Bo Rattenborg wrote:
>>Jeg ville nok køre et register over brugerens læsning af beskeder og så
>>sætte beskeden læst når han har læst den, og tråden læst når alle
>>beskeder er læst. Det er så god brugervenlighed at lave en "catch up" -
>>funktion...
>>
>>Ja - du skal skrive lidt mere til, og trække lidt mere fra databasen,
>>men det er ikke uoverkommeligt.
>
>
> Kunne jeg ikke gøre det, at registeret kun indeholder de indlæg som er nyere
> end sidste logout, så hver gang en af de nye poster er læst, så sættes den
> som læst i registeret.
> Når så brugeren logges ud, så slette alle poster i registeret hvor brugerid
> er lig med brugerens id.

Jo det kan du - men det er ikke ret let for mig som bruger at vide at
når jeg har været logget ind på din side så holder alt op med at være
nyt. Jeg kunne faktisk finde på at udskyde det med at logge ind til jeg
var helt sikker på at kunne nå at læse alle nye beskeder som
interesserer mig.

Sagt på en anden måde så tror jeg ikke at det vil være god funktionalitet.

Du _kan_ selvfølgeligt lave et system som definerer at "alle beskeder
som er ældre end [timestamp] er læst af [brugerid]" (som sættes idet
brugeren trykker på 'catch up'). Hvis dette timestamp ikke er sat så er
alle de beskeder læst af [brugerid] som [brugerid] har åbnet.

På den måde kan du spare mange entries i databasen, og det er let at
sætte timestamp'et et eller andet sted, samt slette alle entries i læste
beskeder-tabellen for denne bruger når han trykker på catch up...

I virkeligheden er du nok nødt til at køre med begge to samtidig, for
når han nu derefter går ind på en besked... M.a.o: kør med timestampet
som bundgrænse og lav register over hvilke beskeder han har læst siden
han sidst trykkede på catch up.

Dette kan selvfølgeligt udvides med at systemet trykker på catch up 'for
14 dage siden' for brugeren, når han ikke har gjort det i 14 dage...


DVS: (in short) jeg bryder mig ikke om at systemet sætter alle beskeder
som ikke-nye blot fordi man logger ind. En kombination af en forældelse
af at beskeder er nye, og at brugeren selv kan markere alle beskeder som
læste er langt at foretrække. Der er dog ingen grund til at gemme
oplysninger om 4000 læste beskeder hvis dette kan klares med et
timestamp i en post. (baaahhh - Jesper - "in short" og så skriver du 6
linier *brokker lige lidt over mig selv*


/Jesper Brunholm


Bo Rattenborg (20-01-2003)
Kommentar
Fra : Bo Rattenborg


Dato : 20-01-03 22:54

> DVS: (in short) jeg bryder mig ikke om at systemet sætter alle beskeder
> som ikke-nye blot fordi man logger ind. En kombination af en forældelse
> af at beskeder er nye, og at brugeren selv kan markere alle beskeder som
> læste er langt at foretrække. Der er dog ingen grund til at gemme
> oplysninger om 4000 læste beskeder hvis dette kan klares med et
> timestamp i en post.

Jeg tror at jeg vælger dit forslag om at have en tabel med læste beskeder,
suppleret med en 'læst alle' knap.

Takker for idéen.

Bo



Jesper Brunholm (21-01-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 21-01-03 07:21

Bo Rattenborg wrote:
>>DVS: (in short) jeg bryder mig ikke om at systemet sætter alle beskeder
>>som ikke-nye blot fordi man logger ind. En kombination af en forældelse
>>af at beskeder er nye, og at brugeren selv kan markere alle beskeder som
>>læste er langt at foretrække. Der er dog ingen grund til at gemme
>>oplysninger om 4000 læste beskeder hvis dette kan klares med et
>>timestamp i en post.
>
>
> Jeg tror at jeg vælger dit forslag om at have en tabel med læste beskeder,
> suppleret med en 'læst alle' knap.

du har styr på at jeg også mente "marker alle læst" når jeg skrev "catch
up" ikke?

> Takker for idéen.

Jamen - velbekomme.

Jeg har også rodet lidt med nogle forummer, men det blev ved
planlægningen

/Jesper Brunholm


Bo Rattenborg (21-01-2003)
Kommentar
Fra : Bo Rattenborg


Dato : 21-01-03 08:07

> du har styr på at jeg også mente "marker alle læst" når jeg skrev "catch
> up" ikke?

jo jo

Bo



Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408658
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste