Gelezen/ongelezen systeem

Gestart doorMilan15 reacties48 weergaven

16 berichten · pagina 1 van 2

Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hey,

Ik vraag me af of een gelezen/ongelezen systeem nou zo moeilijk is?

Je kunt toch ook gewoon een tabel met topics hebben, en een tabel met topicsGelezen, daarin zet je dan id van gebruiker en laatste post id in dat topic.

Of kan dit niet?
0
Berichten
4.912
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
je maakt een tabel

id | userid | topic_id

en dan als iemand het topic bekijkt maak je die aan
dan nog een check of hij er al instaat (ervoor eigenlijk) en je systeempje werktbiggrin
0
Berichten
5.897
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja, zo heb ik het ook gemaakt.

Tabel met topics en tabel met gelezen.
0
Berichten
5.498
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
En als je een reactie plaatst in dat topic verwijder ze weer smile
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik zou datum erbij doen, en dan vergelijkt die met datum laatste post.
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Je kunt beter een tabel maken met:
id | laatstgelezen | userid | topicid

en dan bij laatst gelezen erin zetten wanneer hij voor het laatst gelezen is, en het userid van het id van de gebruiker.
Als de laatste post later is dan het laatst gelezen dan is hij nog niet gelezen.
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oké is goed, bedankt, hier ga ik me eens in verdiepen yummie
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kan iemand me de PHP code geven (if function) om datums te vergelijken? Ben nooit goed in datums geweest, en ik ben dit ook aan het maken.
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Volgens mij iets van:

[COLOR= #0000BB]<?PHP
$vroeger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]123456789[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$nu[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/time"]time[/URL][COLOR= #007700]();[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$nu[/COLOR] [COLOR= #007700]<[/COLOR] [COLOR= #0000BB]$vroeger[/COLOR][COLOR= #007700]){[/COLOR]
[COLOR= #FF8000]//Nu is minder dan vroeger[/COLOR]
[COLOR= #007700]}[/COLOR][URL="http://www.php.net/elseif"]elseif[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$nu[/COLOR] [COLOR= #007700]>[/COLOR] [COLOR= #0000BB]$vroeger[/COLOR][COLOR= #007700]){[/COLOR]
[COLOR= #FF8000]//Nu is meer dan vroeger[/COLOR]
[COLOR= #007700]}[/COLOR]
?>
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lees anders deze uitleg even door, ik heb daar veel aan gehad smile
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Hoe ik het ooit eens heb gedaan is heel simpel, dan controleert hij of er een nieuw bericht in het topic is geplaatst.

Dan weet hij niet welk bericht, maar als je in een topic post word er in een tabel gelezen o.i.d. een id erin gezet, en het topic id, en gelezen op 1.

Als iemand in een topic reageert, dan voert hij een query uit..
update gelezen set gelezen = 0 where topicid = $topic_id o.i.d.

Maar dan rekent hij alleen per topic, en niet per post.
Die uitleg van Lennard (Bericht hierboven van Luuk) is ook erg handig.. Heel uitgebreid!
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Heb het al gedaan, eigenlijk heel makkelijk smile
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Nou, zo makkelijk is het niet.

Je moet kijken op de index:
- Is er op "markeer alles als gelezen" gedrukt
- Is er op "markeer alles uit deze catagorie als gelezen" gedrukt
- Is er een topic met een ongelezen post in de catagorie

En dat moet je dan vergelijken met elkaar. Daaruit komt dan naar voren of er in de catagorie nog ongelezen berichten zitten.

Vervolgens moet je met de topicindex hetzelfde doen:
- Is er op "markeer alles uit deze catagorie als gelezen" gedrukt
- Is er een topic met een ongelezen post in de catagorie
(- Wat is de laatste gelezen post > Voor een redirect)

Het lijkt misschien makkelijk, maar je moet ook denken aan performance. Je kan niet zomaar een while, in een while in een while gebruiken. Je zult dus moeten werken met joins en subquerys. Bovendien zal je ook moeten kijken naar de indices die je gebruikt. Als je niet de goede rows van de goede index voorziet zal je ook snel de performance van je forum achteruit zien gaan.
Eventueel moet je nog dingen gaan cachen.

Een hoop werk waar je voorafgaand aan moet denken. Het programmeren daarentegen is dan inderdaad wel weer wat makkelijker als je al het bovenstaande al hebt uitgedacht.
0
Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Zoals Rik inderdaad zegt is het maken van een gelezen/ongelezen systeem heel makkelijk.
Het daar in tegen goed doen, zonder ontiegelijk veel load, is moeilijk
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het ging nu vooral om met jQuery automatisch posts op te halen
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren