Forum - topic bezocht ja/nee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Leroy

leroy

09/09/2007 10:25:00
Quote Anchor link
Het volgende,

Momenteel heb ik een forum gebouwd met de basis functies:
- categorien overzicht
- topics
- posts

Nu wil ik dus in het topic overzicht kunnen zien of ik een post al gelezen heb ja of nee (is deze nieuw?)

Nu had ik het volgende bedacht:
Ik schrijf een cookje weg met de volledige tijds notatie (dus datum + tijd + milliseconden)

Alles wat later is dan de tijd, dat is een new topic.

Mijn vraag is... wanneer moet ik deze tijd wegschrijven? als ik alle posts van het topic gelezen heb? (hoe is dat te doen? stel dat het er 2 zijn?)

Of moet ik nagaan wat elke laatste post is van elke topic, om vervolgens daarop te baseseren of ik dit gelezen heb? (opzich logisch)

dat zou kunnen, maar wanneer schrijf ik de tijd weg? wat is nu handig? Want als ik de 1 gelezen heb, wil niet zeggen dat ik de ander gelezen heb)

Gezocht in de tutorials, maar nergens wordt dit behandeld zo ver ik kan zoeken..

Mij lijkt het handigste dat als ik op de pagina kom en mijn sessie gestart is dat er in de database nagegaan wordt wanneer ik voor het laatst ingelogd heb?
Gewijzigd op 01/01/1970 01:00:00 door Leroy
 
PHP hulp

PHP hulp

07/11/2024 14:06:08
 
Mark L

Mark L

09/09/2007 10:36:00
Quote Anchor link
Ikzelf doe het zo:

Ik zet in de cookie welke pagina's zijn gelezen (eigenlijk gewoon 10 of 20 of 28 enzo)... (op zijn geweest) Dan kun je het verschil in berichten berekenen en dan kan je 'vertellen' of er al een nieuw bericht op is.

Edit:

Schreef sessie ipv cookie :P
Gewijzigd op 01/01/1970 01:00:00 door Mark L
 
Leroy

leroy

09/09/2007 10:49:00
Quote Anchor link
10 20 en 28 zijn dan pagina nummers?


Users in mijn forum kunnen zelf instellen hoeveel per pagina ze willen, dus dat is erg lastig :S
 
Mark L

Mark L

09/09/2007 10:54:00
Quote Anchor link
leroy schreef op 09.09.2007 10:49:
10 20 en 28 zijn dan pagina nummers?


Users in mijn forum kunnen zelf instellen hoeveel per pagina ze willen, dus dat is erg lastig :S


Nee.. ik heb daarom 10, 20 en 28 als berichten die gelezen zijn. Enige nadeel: Als je meteen bij het einde begint.

Op zich zou je ook elke id van een post die gelezen is in een array van een cookie zetten. Dan kun je zien welke nog NIET is gelezen (precies) en hoeveel nog niet)
 
Leroy

leroy

09/09/2007 11:06:00
Quote Anchor link
das opzich wel handig, kost alleen best wel wat load als je op den duur veel users hebt...

dan zou een 'catch up' button prettiger werken denk ik..
 
Klaasjan Boven

Klaasjan Boven

09/09/2007 11:49:00
Quote Anchor link
Houd het gewoon bij in je database.
maak een tabel user_gelezen waarin je het user_id en het topic_id zet. Komt deze combi voor in je tabel dan is het gelezen anders niet.
 
Leroy

leroy

09/09/2007 11:51:00
Quote Anchor link
Kan inderdaad,

Maar stel er is een nieuwe post op gedaan? kun je helemaal gaan uitzoeken welke users hem dan weer niet gelezen hebben?

Is het op basis van tijd niet veel makkelijker?
 
Arjan Kapteijn

Arjan Kapteijn

09/09/2007 12:25:00
Quote Anchor link
Ik ben op dit moment bezig met het schrijven van een forum, ook zo'n 'gelezen' optie wil ik erin verderwerken dus dat ben ik nu (op papier) aan het uitzoeken.

Ik gebruik de volgende query om alle topics met een bepaald forumID op te halen;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT p.userID, u.name, count(p.postID) as amount, max(DATE_FORMAT( p.datetime, '%e %M %Y, %H:%i' )) as newDatetime, t.topicID, t.subject, t.close FROM ".$prefix."topics as t, ".$prefix."posts as p, ".$prefix."users as u WHERE t.topicID = p.topicID AND p.userID = u.userID AND t.forumID = ".mysql_real_escape_string($get['forumid'])." AND t.deleted = 0 GROUP BY t.topicID ORDER BY datetime";
?>


Door de group by in combinatie met de max() krijg ik keurig de tijd/datum terug van de laatste reactie.

Als ik nu na het 'lezen/openen' van een topic een query maak met iets als INSERT INTO tabel ('userID','topicID','datetime') VALUES (1,1,NOW()) word het erg eenvoudig om te kijken of iemand een topic al heeft bekeken en of daar een nieuwe reactie in is gekomen.

Echter, omdat ik alles met 1 query wil doen moet ik ff kijken naar de precieze hoe en wat...
 
Leroy

leroy

09/09/2007 12:26:00
Quote Anchor link
Arjan,

Houdt me op de hoogte als je wil...

Zelf ga ik een stoeien met last_login time.

Het moet vrij makkelijk te doen zijn lijkt me, alleen het punt is... "waneer?"
 
Arjan Kapteijn

Arjan Kapteijn

09/09/2007 12:51:00
Quote Anchor link
Last login time zou ik niet doen, kan ik ook doen want dat staat in mijn sessie database (zie voor mijn reactie hier), punt is echter dat je het dan niet per topic kan doen.
 
Leroy

leroy

09/09/2007 12:53:00
Quote Anchor link
Hoezo niet?
je gaat gewoon na wat de laatste post in het topic is, vervolgens leg je de datum uit de cookie en de datum uit de post naast elkaar?
 
Arjan Kapteijn

Arjan Kapteijn

09/09/2007 12:57:00
Quote Anchor link
Als ik dan op F5 druk, of als ik een topic gelezen heb en ik ga terug naar het overzicht... dan heb ik _alle_ topics gelijk gelezen volgens jouw systeem.
 
Leroy

leroy

09/09/2007 12:57:00
Quote Anchor link
niet als je alleen de cookie inteld op moment dat je sessie gemaakt wordt?
 
Arjan Kapteijn

Arjan Kapteijn

09/09/2007 13:00:00
Quote Anchor link
Okay, ik hou bij iedere F5/pagina opvragen een datetime-veld bij. Maar in jouw geval doe je dat alleen bij het inloggen?

Dat betekend dat, als ik een topic gelezen heb in jouw systeem en ik ga terug... dat topic nogsteeds op 'ongelezen' staat ;).
 
Leroy

leroy

09/09/2007 13:02:00
Quote Anchor link
hmm,

Zover had ik het nog niet bekeken...

Pff, ik ga er maar eens goed over nadenken hoe ik dat erin ga stampen...

Wellicht de phpbb code maar eens uitpluizen om te kijken hoe zij dat gedaan hebben.
 
Bart van der veen

bart van der veen

09/09/2007 13:14:00
Quote Anchor link
ik heb iets soortgelijks ingebouwd, het is niet zo uitgebreid en dus ook niet zo exacht.....

ik sla alleen op wanneer de gebruiker voor het laats is ingelogd en dat vergelijk ik met de plaatsings datum/tijd van de topics...
 
Leroy

leroy

09/09/2007 13:15:00
Quote Anchor link
in het kader van laatste berichten sinds laatste bezoek?

simpel en best doeltreffend eigenlijk :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.