[php/mysql] forum nieuwe threads kleurtje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op dit moment bezig met het bouwen van een forum. Veel werkt al, maar er is iets waar ik niet helemaal uit kom. Ik zou graag willen dat als je op het forum komt en er is een nieuwe post geplaatst dat er dan voor het topic een rood mapje komt en dat als je het topic al hebt gezien dat er dan een geel mapje voor komt. Zoals hier op got.

Mijn idee was om als een user op het forum komt de datum en tijd te registreren dat hij het laatst aanwezig is. Deze controleer je dan met de datum en tijd van de posts, zodat je kunt zien dat de posts er eerder waren dan de user. Het probleem hier is dat als er meerdere nieuwe topics zijn deze dan niet meer rood worden na 1 keer aanwezig te zijn geweest.

Mijn andere oplossing is als een user een topic bekijkt in een apparte tabel te zetten dat de user dit topic heeft gezien met daarbij de tijd dat hij hem heeft gezien. Als een user dan een topic bekijkt, kijkt hij in de tabel of de datum hoger is lager is dan de datum dat het topic het laatst is bewerkt of dat hij niet in de tabel aanwezig is dus helemaal nieuw.

De eerste oplossing werkt dus niet, de tweede zou het wel moeten doen, maar ik vraag me af of er geen andere makkelijker oplossing is, want het is nogal veel om voor elke user per topic op te slaan of hij wel of niet nieuw is.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Onthoud de laatste datum/tijd dat iemand op het forum is geweest. Komt ie weer sla je die datum op in de sessie en die variabele gebruik je elke keer voor de check.

[ Voor 50% gewijzigd door Bosmonster op 28-01-2005 12:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bosmonster schreef op vrijdag 28 januari 2005 @ 12:04:
Onthoud de laatste datum/tijd dat iemand op het forum is geweest. Komt ie weer sla je die datum op in de sessie en die variabele gebruik je elke keer voor de check.
Maar als iemand een topic heeft gezien moet deze ook weer geel worden en de variabele in de sessie blijft hetzelfde. Dus dan zou alle nieuwe topics steeds rood blijven.

Acties:
  • 0 Henk 'm!

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 05-09 21:19

Wacky

Dr. Lektroluv \o/

Verwijderd schreef op vrijdag 28 januari 2005 @ 12:17:
[...]


Maar als iemand een topic heeft gezien moet deze ook weer geel worden en de variabele in de sessie blijft hetzelfde. Dus dan zou alle nieuwe topics steeds rood blijven.
De datum van het laatste bezoek wordt dan toch geupdate? Dus wordt het mapje geel :)

vb:
code:
1
2
$lastvisit = 19029318; // Geheel willekeurig
$query = "SELECT * FROM posts WHERE post_datum > $lastvisit"; // Mapje wordt rood in dit geval

Nu ook met Flickr account


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Wacky schreef op vrijdag 28 januari 2005 @ 12:27:
[...]


De datum van het laatste bezoek wordt dan toch geupdate? Dus wordt het mapje geel :)

[/code]
Ja maar dan worden alle mapje geel en dat wil hij niet, hij wil de nieuwe mappen in het rood hebben tenzij ze eventueel al gelezen zijn. Dat lukt denk ik alleen met optie 2 van de TS, maar dat is niet te doen. Ik denk dat dit niet te doen is zoals TS het wil :)

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Het is wel degelijk te doen, kijk maar naar invision power board of phpbb.. Weet zelf niet precies hoe zij het doen, misschien een idee om naar de source code te kijken?

edit:
hm, nog even verder gedacht en heb een ideetje. Als je nou checkt op de tijd dat de persoon het laatst het forum bezocht heeft, én in de session opslaat welke posts hij in die sessie bekeken heeft, in een simpele array bijv. Kan je gewoon die threads ook als gelezen markeren. Als de sessie dan verloopt krijg je de volgende keer weer een nieuwe bezoektijd, en begin je overnieuw met je array met gelezen posts.

[ Voor 56% gewijzigd door Radiant op 28-01-2005 12:45 ]


Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Er zijn twee manieren voor, een simpele, en een iets ingewikkeldere.

In de iets ingewikkeldere hou je in een cookie of een session twee tijden bij. Een heet VorigeBezoek, de andere HuidigeBezoek. Als HuidigeBezoek minder dan een kwartier oud is, dan update je alleen HuidigeBezoek met de tijd van nu en laat je VorigeBezoek wat het was. Je links nieuwer dan VorigeBezoek geef je een ander kleurtje, nu lijft het werken, zolang de bezoeker maar elke 15 minuten iets aanklikt.

Voor de simpele manier bouw je je links als volgt op: http://mijnsite.nl/topic.php?id=1&tijd=123456
Waar tijd de timestamp van de laatste wijziging is. Als een topic wordt geüpdate verandert dus de link. Zorg dat de html opmaak een andere kleur geeft aan een al bezochte link. Zo onthoudt de browser van de gebruiker precies welke topics al bekeken zijn, en hoef jij verder weinig te doen. Dit is dus een iets ander resultaat dan de vorige manier, want die geeft voor alle links die oud zijn aan dat ze al bezocht zijn, en deze geeft alleen bezocht aan voor de links die echt bezocht zijn.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Kleine moeite om topic-id's die je bekeken hebt ook even in de sessie op te slaan toch?

Snap het probleem niet zo :P

Dus nieuwe topics zijn rood tenzij ze in je topic-arraytje in de sessie staan.. want dan heb je ze al bekeken.

[ Voor 33% gewijzigd door Bosmonster op 28-01-2005 17:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bosmonster schreef op vrijdag 28 januari 2005 @ 17:33:
Kleine moeite om topic-id's die je bekeken hebt ook even in de sessie op te slaan toch?

Snap het probleem niet zo :P

Dus nieuwe topics zijn rood tenzij ze in je topic-arraytje in de sessie staan.. want dan heb je ze al bekeken.
Dat lijkt mij ook de beste oplossing. Ik zal het eens proberen en plaats de oplossing hier wel.

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Mij lijkt het handiger een topic alleen een kleurtje te geven als er nieuwe reply's in staan? Dan zou ik wel ff aanpassen.

Ik vind dit forum best mooi werken, alleen de pagina's met "doorsturen naar X" wat minder. Naam: Blackboard als ik het goed heb. Een echt simpel forum, kun je misschien wat van leren :)

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Tja, op veel fora werkt het ongeveer zo.

code:
1
2
3
4
5
6
$laatstebezoek = 0;
$vorigepagina = 12345;
if(time() - $vorigepagina > 30)
{
  $laatstebezoek = time();
}

$laatstebezoek en $vorigepagina sla je dan uiteraard op in $_SESSION. Vergeet vooral niet session_start(); maar dat weet je vast wel :). Aan de hand van laatstebezoek te vergelijken met de laatste tijd van een bericht kijk je of het mapje rood of geel moet worden (of groen of whatever...).

Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
invision board slaat de visited topics op in een cookie als ik me dat goed herrinder

Acties:
  • 0 Henk 'm!

  • MarkvE
  • Registratie: Maart 2004
  • Laatst online: 30-01 17:16
Bosmonster schreef op vrijdag 28 januari 2005 @ 17:33:
Kleine moeite om topic-id's die je bekeken hebt ook even in de sessie op te slaan toch?

Snap het probleem niet zo :P

Dus nieuwe topics zijn rood tenzij ze in je topic-arraytje in de sessie staan.. want dan heb je ze al bekeken.
Maar wat dan als er een reply is geplaatst op een topic die al in de sessie zit? Dan zou het topic weer als niet gelezen moeten worden beschouwd, want je hebt die ene reply nog niet gelezen. Dus moet je ook altijd de timestamp erbij houden; $_SESSION [ 'topics' ] [ $id ] = time ().

Vormkracht10

Pagina: 1