Toon posts:

[PHP] Forums "nieuwe posts sinds ..."

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe wordt dit in vredesnaam bijgehouden? Kan me niet voorstellen dat er bij elke thread-view in een cookie wordt geregistreerd wanneer deze voor het laatst bekeken is oid...

Ideeën?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Nieuwe post sinds wat?

Verwijderd

Topicstarter
sinds je laatste bezoek aan die/dat thread/forum.

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

opgeslagen in een index tabel in de db :)

disjfa - disj·fa (meneer)
disjfa.nl


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

je hebt er slechts 1 count voor nodig en een where die eruit ziet als WHERE posttime > $lastvisitcookietime oid.

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Op vrijdag 05 juli 2002 15:19 schreef disjfa het volgende:
opgeslagen in een index tabel in de db :)
He? In welke vorm dan? :?

Verwijderd

En 'tis zo eenvoudig.

Bij elke forumgebruiker wordt een (1, soms 2) cookie achtergelaten met daarin de datum van laatste bezoek. Deze wordt vergeleken met de datum van de posts in die fora. Alle posts met een latere datum zijn dus 'nieuwe posts sinds...'

Cookie zou ik zeggen toch?

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Gewoon in een cookie een last visited date opslaan???

Of gewoon max(last topic nr) opslaan, dus dat als iemand topic 2000 leest en als last topic nr stond 1000 dan overschrijven, als last topic nr>=2000 niet overschrijven.
Dit wel op voorwaarde dat je topic nummers oplopend zijn, al lijkt me dit wel het meest logische / handige.

Verwijderd

Topicstarter
Op vrijdag 05 juli 2002 15:20 schreef Apache het volgende:
je hebt er slechts 1 count voor nodig en een where die eruit ziet als WHERE posttime > $lastvisitcookietime oid.
Ja, maar is het niet de bedoeling dat je die $lastvisitcookietime van jou zo vaak mogelijk update, waardoor er dus nooit nieuwe posts zijn in die vergelijking?

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Op vrijdag 05 juli 2002 15:21 schreef Gomez12 het volgende:
Gewoon in een cookie een last visited date opslaan???

Of gewoon max(last topic nr) opslaan, dus dat als iemand topic 2000 leest en als last topic nr stond 1000 dan overschrijven, als last topic nr>=2000 niet overschrijven.
Dit wel op voorwaarde dat je topic nummers oplopend zijn, al lijkt me dit wel het meest logische / handige.
Maar wat als je reageert op een topic wat al geopend is voor je bezoek (ouwe topics omhoog schoppen bijvoorbeeld)? Dan telt het topic nummer niet meer op.
Denk idd ook aan een cookie of een column in de db bij je username, maar hoe die precies wordt bijgehouden zou ik zo 1-2-3 niet weten.

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

Op vrijdag 05 juli 2002 15:21 schreef Oscar Alexander het volgende:

[..]

Ja, maar is het niet de bedoeling dat je die $lastvisitcookietime van jou zo vaak mogelijk update, waardoor er dus nooit nieuwe posts zijn in die vergelijking?
enkel nieuwe cookiezetten wanneer de gebruiker zijn vorige sessie verlopen is (maw browser gesloten word)

gebruiker komt terug en er is geen actieve sessie meer -> nieuwe cookietime

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Stel, ik ben hier een week niet geweest... 30 minuten geleden is er een nieuwe thread bij gekomen. Die zou dus als nieuw gemarkeerd moeten worden, right?

MAAR, als ik op de site kom, wordt mijn cookie geupdate (want ik ben er immers weer), waardoor de tijd van NU dus hoger is dan die van de thread die een half uur geleden is aangemaakt :)

Lastiger dan je denkt, geloof ik...

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

niet echt, de oude visit time slaag je natuurlijk eerst op in een session var daarna zet je de cookie met huidige tijd en je query doe je adhv die sessionvar met daarin de tijd van het vorige bezoek.

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Apache, oke. Maar hoe pak je dat aan? onBeforeUnload() werkt alleen in MS...

Verwijderd

Topicstarter
Op vrijdag 05 juli 2002 15:26 schreef Apache het volgende:
niet echt, de oude visit time slaag je natuurlijk eerst op in een session var daarna zet je de cookie met huidige tijd en je query doe je adhv die sessionvar met daarin de tijd van het vorige bezoek.
Ah, dat is een goeie! :)

Vergeef m'n gebrek aan inventiviteit op script gebied... Ben eigenlijk vormgever :)

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

ok, stel je komt op een forum voor de eerste keer

je krijgt een cookie met de tijd dat je aankomt vb 1000 (is geen echte timestamp enkel een voorbeeld)

je lastvisit-cookie, laten we hem $c_lastvisit noemen krijgt in dit geval de waarde 1000, je leest het forum enz ...

je gaat weg en komt 10 min later terug, het script ziet dat er al eens een cookie geset geweest is, dus hij neemt de waarde daarvan en steekt die in een session var die we noemen, $s_lastvisit en hij zet ook een nieuwe cookie over de oude cookie die dan de waarde 1600 zal bevatten.

je doet je query alsvolgt

SELECT count(msgid) FROM messages WHERE posttime > $s_lastvisit

volgende keer kom je terug en doet hij net hetzelfde, hij plaatste de 1600 in een session var en de nieuwe tijd in de cookie var waardoor de query je weer weergeeft hoeveel nieuwe posts er zijn sinds het aankomen bij je vorige bezoek.

Hopelijk is het nu wat duidelijker. :)

[edit]
AAAAAARGH een vormgever, get it off, get it off :P

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Ben ik weer... Dit zou dus moeten volstaan. Theoretisch :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    if(!isset($HTTP_COOKIE_VARS["fplastvisit"])) {
        $expires    =   time() + 604800;
        setcookie("fplastvisit", date("Y-m-d H:i:s"), $expires);
        $_SESSION["fpssn_lastvisit"]    =   date("Y-m-d H:i:s");
        
    } else {
    
        if(!isset($_SESSION["fpssn_lastcheck"])) {
            $_SESSION["fpssn_lastvisit"]    =   $HTTP_COOKIE_VARS["fplastvisit"];
            $_SESSION["fpssn_lastcheck"]    =   1;      
        }

        $expires    =   time() + 604800;
        setcookie("fplastvisit", date("Y-m-d H:i:s"), $expires);
    }

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op vrijdag 05 juli 2002 15:46 schreef Oscar Alexander het volgende:
Ben ik weer... Dit zou dus moeten volstaan. Theoretisch :)
Verder niet naar gekeken, maar gebruik aub $_COOKIE ipv $HTTP_COOKIE_VARS, tis de standaard en HTTP_COOKIE_VARS gaat er ooit uit..

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je kunt beter de last visit in je database opslaan, want dan is querien aan de hand daarvan ook een stuk eenvoudiger.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Volgens mij werkt 't hier ook zo, want als je windows opnieuw installeert (bijv ;)) en je logt daarna in weet 'ie precies hoe 't was voor de reinstall. :D
Da's dus meteen een ander voordeel boven cookies. :P

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Maar hoe werken forums dan zoals die van PHPFreakz.com (ok, slecht voorbeeld misschien) die bijhouden of er nieuwe posts in een bepaalde thread zijn? Dus dat ze gemarkt zijn omdat er nieuwe reply's zijn die jij nog niet gezien hebt en die niet meer gemarkt zijn wanneer je die thread weer verlaat. Dat is het enige stukkie wat nog ontbreekt aan me forum maar ik kan er maar geen oplossing voor vinden (zonder dat ik voor elke post een cel gebruik om bij te houden bij iedere gebruiker of hij een bepaalde thread al wel of niet gezien heeft en me db dus onnodig groot wordt).

Verwijderd

Nog iets anders, hoe kan je zien dat wanneer er een post in een topic is geplaatst wanneer je dit topic daarvoor gelezen hebt?... dan zal je toch een appart topic_readed tabel moeten maken oid en daarin de userid, topicid en wanneer de user deze voor het laatst heeft gelezen.. :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:24
drm:
Je kunt beter de last visit in je database opslaan, want dan is querien aan de hand daarvan ook een stuk eenvoudiger.
:?

Ik kan ook gewoon dingen in een sessie zitten, waarom wordt queries maken op jouw manier makkelijker ?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:24
xtentic:
Nog iets anders, hoe kan je zien dat wanneer er een post in een topic is geplaatst wanneer je dit topic daarvoor gelezen hebt?... dan zal je toch een appart topic_readed tabel moeten maken oid en daarin de userid, topicid en wanneer de user deze voor het laatst heeft gelezen.. :?
Juist

Verwijderd

Op zaterdag 06 juli 2002 08:32 schreef ddc het volgende:

[..]

Juist
:*

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ddc:
:?

Ik kan ook gewoon dingen in een sessie zitten, waarom wordt queries maken op jouw manier makkelijker ?
Omdat je dan enkel hoeft te joinen, en geen sessiedata hoeft te verwerken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:24
drm:
Omdat je dan enkel hoeft te joinen, en geen sessiedata hoeft te verwerken.
Wat is het probleem van sessiedata verwerken :?
Overigens staan bij sommige forums complete sessies al in de database (zoals Topix).

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ddc:
Wat is het probleem van sessiedata verwerken :?
Meer code. En dus minder eenvoudig.
Overigens staan bij sommige forums complete sessies al in de database (zoals Topix).
Dat is dus de ideale situatie, omdat je je gegevens uit de database en de sessie enkel door queries hoeft te combineren, en niet door (meer) code.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 02-09 09:38
Op vrijdag 05 juli 2002 22:55 schreef xtentic het volgende:
Nog iets anders, hoe kan je zien dat wanneer er een post in een topic is geplaatst wanneer je dit topic daarvoor gelezen hebt?... dan zal je toch een appart topic_readed tabel moeten maken oid en daarin de userid, topicid en wanneer de user deze voor het laatst heeft gelezen.. :?
Nog makkelijker is per thread een rijtje te maken met daarin gegevens over de thread (wat sowieso wel moet, dingen als titel, ondertitel, stichter enz. enz.). Als je in dat rijtje nu ook gewoon een veld maakt wat "lastpost" heet, en elke keer op een nieuwe post dit laat vervangen door die tijd en datum. Kun je dus met je cookie ook kijken of er sinds je laatste bezoek in die draad nog nieuwe berichten zijn geplaatst.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

iCe01:
Als je in dat rijtje nu ook gewoon een veld maakt wat "lastpost" heet, en elke keer op een nieuwe post dit laat vervangen door die tijd en datum. Kun je dus met je cookie ook kijken of er sinds je laatste bezoek in die draad nog nieuwe berichten zijn geplaatst.
Lijkt me een typisch geval van redundancy

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1