Toon posts:

[PHP+MySQL] Forum - Lastvisit - Nieuwe topicicons.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een forum, nouja niet zo moeilijk is het, maar even een dingetje wat ik nergens kan achterhalen. Hoe kan ik zorgen dat je per topic waar een nieuwe post is dat je een nieuw icoon krijg te zien ipv het oude icoon.

Natuurlijk heb ik de search gebruikt, ik kwam alleem maar dingen als dit topic tegen
[rml][ PHP] nieuwe topics sinds laatste bezoek[/rml]
Zoiets moet ik niet hebben, dan krijg je local een koekje, met lastvisit, dit wordt vergeleken met de nieuwe posts.

Ik wil dus vanaf mijn site zien wat de lastvisit is, en als ik een topic NIET geopend heb dan moet hij ondanks de lastvisit een ander icon krijgen.
Dus ik zal een database moetten maken waardat instaat welke topics nieuwer zijn en of die user er al gekeken heeft.
Laat ik het simpel zeggen, phpBB is een GOED voorbeeld. Maar hoe werkt het ongeveer?

Ik wil speciaal hebben dat als je het niet bekeken hebt dat het nogsteeds op nieuw staat, natuurlijk wel een functie maken dat alles viewed is ;)

[edit]
wel er 1 ding bij vertellen:

Als het topic ouder is dan 3 dagen en jij hebt het niet bekeken moet het weer normaal zijn, als jij dus 6 weken niet online komt dan moet het wel blijven staan, maar kom je daarna iedere dag online moet het na 3 dagen weg zijn.

[offtopic]
hoop dat het duiderlijk is ;)

[ Voor 14% gewijzigd door Verwijderd op 17-04-2003 17:14 ]


Verwijderd

kan iemand het geheim van parse onthullen.. ik heb het wel voormekaar gekregen maar werkt niet super netjes volgens mij... heel irritant werk .. dat zeg ik je wel..

Verwijderd

Topicstarter
Verwijderd schreef op 17 april 2003 @ 17:19:
kan iemand het geheim van parse onthullen.. ik heb het wel voormekaar gekregen maar werkt niet super netjes volgens mij... heel irritant werk .. dat zeg ik je wel..
parse is ook een goed systeem ja, als ik de theorie hier achter weet ben ik blij :)

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Volgens mij kan dit vrij simpel, maar wellicht heb ik je niet goed begrepen.

Volgens mij moet je gewoon de 'last_visit_time' per gebruiker opslaan in de database-tabel met gebruikers. Wanneer een gebruiker inlogt heb je meteen de tijd van zijn laatste bezoek. Vervolgens haal je de topics op en ieder topic waarin een bericht zit dat later gepost is dan de 'last_visit_time' krijgt een ander icoon.

Zo doet phpBB het volgens mij...

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Verwijderd schreef op 17 april 2003 @ 17:22:
parse is ook een goed systeem ja, als ik de theorie hier achter weet ben ik blij :)
Waarschijnlijk bedoel je React? :)

Rustacean


Verwijderd

Topicstarter
Morrar schreef op 17 April 2003 @ 17:24:
Volgens mij kan dit vrij simpel, maar wellicht heb ik je niet goed begrepen.

Volgens mij moet je gewoon de 'last_visit_time' per gebruiker opslaan in de database-tabel met gebruikers. Wanneer een gebruiker inlogt heb je meteen de tijd van zijn laatste bezoek. Vervolgens haal je de topics op en ieder topic waarin een bericht zit dat later gepost is dan de 'last_visit_time' krijgt een ander icoon.

Zo doet phpBB het volgens mij...
Nee, want dan druk je F5 en dan is je lastvisit time hoger dus alles weg.
Manuzhai schreef op 17 april 2003 @ 19:47:
[...]
Waarschijnlijk bedoel je React? :)
Powered by React - a Parse Software Development B.V. product
is zelfde ;)

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Ik ben ook bezig met een forum en ik doe het zo: ik zet voor elke topic die gelezen is een koekje met de id van dat topic en dan bij de topiclist check ik gewoon of er al een koekje bestaat met dat id :D

If you can't beat them, try harder


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Volgens mij wou hij nou juist geen lokaal koekje...

En ik was zelf ook ff te snel met lezen, want het door mij voorgestelde "last-visit-systeem" moet de eerste 3 dagen van een topic niet werken. In die drie dagen gaat het er puur om of een gebruiker een topic wel of niet geopend heeft, en dus niks met last visit. Correct?

Volgens mij is het, zonder koekje alleen mogelijk door een koppeltabel te maken van topic x gebruiker waarin je bijhoudt welke gebruiker welk topic heeft geopend. Die tabel kan alleen redelijk groot worden als je veel gebruikers en topics krijgt.

Een oplossing zou kunnen zijn, als je de topic-tabel zo maakt:

id | ts_created | topic_title etc...

waarbij ts_created een timestamp is waarop het topic aangemaakt is. Dan een koppeltabel voor gebruikers x topics om te bepalen wie welk topic geopend heeft:

id | topic_id | ts_topic_created | user_id

Het topic_id verwijst naar het id veld van de topic-tabel en ts_topic_created is de timestamp waarop het topic aangemaakt is (dus ts_created uit de topic-tabel, kom ik later op terug). Elke keer als je de topic-lijst ophaalt, neem je ook mee welke topics de gebruiker al bekeken heeft. Als hij een nieuw topic opent INSERT je een record in de koppeltabel waarmee je aangeeft dat dit user_id het topic al bekeken heeft en er voortaan dus geen ander icoon hoeft te staan.

Het opschonen van de koppeltabel is vrij eenvoudig omdat je de timestamp waarop het topic aangemaakt werd direct bij de hand hebt. Je kunt dus eenvoudig een DELETE doen op alle records waarbij de ts_topic_created ouder is dan 3 dagen. Je doet dit op de hele tabel zodat ook de records verdwijnen van users die je misschien nooit meer terug ziet, blijft het nog een beetje netjes.

Hoop dat dit dan wel is wat je bedoeld. Je moet het natuurlijk ook nog combineren met dat last visit verhaal, na die drie dagen maar dat lukt denk ik wel. Het geeft overigens wel een hoop DB werk zo.

[ Voor 3% gewijzigd door Morrar op 18-04-2003 01:51 ]


Verwijderd

Ook een optie:

Houd per forum categorie de laatste visit bij per user.
Verander die lastvisit bij het inloggen van de gebruiker, en dan kan je zo je kleurtjes veranderen.

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Morrar schreef op 18 April 2003 @ 01:48:
[knip]
Het opschonen van de koppeltabel is vrij eenvoudig omdat je de timestamp waarop het topic aangemaakt werd direct bij de hand hebt. Je kunt dus eenvoudig een DELETE doen op alle records waarbij de ts_topic_created ouder is dan 3 dagen. Je doet dit op de hele tabel zodat ook de records verdwijnen van users die je misschien nooit meer terug ziet, blijft het nog een beetje netjes.
Je hoeft de ts_topic_created niet bij te houden in een aparte tabel omdat die al opgeslagen is in `topic`.

Het wordt inderdaad erg database-intensief. Voor iedere topic-user combinatie is een regel nodig in de lastvisit tabel, en dat gaat bij een beetje druk forum snel oplopen

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Ik wist dat je die ts_topic_created ook uit de topic-tabel kan halen, maar dan wordt je query wel een tikkeltje lastiger en volgens mij ook trager. Aangezien je die DELETE vaak zult draaien dacht ik dat het wellicht efficiënter was om dan maar de timestamp dubbel op te slaan. Zo groot worden die MySQL databases nou meestal ook weer niet, of je moet GoT-bezoekers-aantallen krijgen :)

Verwijderd

Topicstarter
Morrar schreef op 18 april 2003 @ 14:36:
Ik wist dat je die ts_topic_created ook uit de topic-tabel kan halen, maar dan wordt je query wel een tikkeltje lastiger en volgens mij ook trager. Aangezien je die DELETE vaak zult draaien dacht ik dat het wellicht efficiënter was om dan maar de timestamp dubbel op te slaan. Zo groot worden die MySQL databases nou meestal ook weer niet, of je moet GoT-bezoekers-aantallen krijgen :)
nou, ik reken op iets van 500 a 1000 total leden(beginfaze), en na een tijd zal het wel meer worden.

Maare idd tnx voor de mooie uitleg, is idd wel iets mee te beginnen denk ik zo.
Op GoT denk ik dat ze het zoiets doen:

userprofile table
id, lastvisit, prevlastvisit, etc....

topictable(niet met reacties doen, telange query dan)
id, lastreactie, etc.

Welke actie dan ook, ze zetten de lastvisit altijd bij iedere hit op de current timestamp.
Als je dan langer dan 30 minuten niet actief bent dan wordt je prevlastvisit gelijk gezet met de lastvisit, dus dan zijn alle topics oud.
Zoiets toch?

Mischien is dit princype wel beter, ik hou niet zo van super grote tabellen( :X ) ookal moet je soms wel.
Pagina: 1