Knopje om naar de eerste nieuwe post te gaan

Robbert

New member
een helder momentje van Lennard
wink.gif
 

Marjolein

Miss Marjolein
klonk very nice
smile.gif


Maar goed....voorstel aangenomen, alleen uitvoering laat op zich wachten (uiterlijke verwachtingsdatum: 01-07-2015)
emo.gif

Kan dus toegevoegd worden aan mitchels topic (wordt ie nog wel eens ge-updated?)
 

Marjolein

Miss Marjolein
Lennard:
Hoe minder hij update, hoe minder ik hoef te maken.
emo.gif
hypocrite.gif

hoho, nee, nee, nu probeer je eronderuit te komen mannetje....
emo.gif
 

Marjolein

Miss Marjolein
Misschien gaat het wel zo goed met one2xs dat je iemand in dienst kan nemen die alles voor je doet
smile.gif
en is is de uiterste datum hè? Dus het mag ook eerder
yummie.gif
 

Luukvdo

New member
Zo moeilijk is het toch niet of zie ik dat verkeerd? De basis is er toch al? Met het topic gelezen of ongelezen gedoen (lekker vaag weer
yummie.gif
)
 

Lennard

Active member
Ja, ik zal t proberen uit te leggen voor je.

In het topicoverzicht is tijdens het opbouwen van de pagina de datum beschikbaar van de laatste door jou gelezen post.
Die datum is de hoogste van de volgende waarden:
- de laatste keer dat je op "Markeer alle fora als gelezen" hebt geklikt
- de laatste keer dat je op "Markeer alle topics als gelezen" voor het betreffende forum hebt geklikt
- de laatste keer dat je het topic hebt bekeken

Om te weten wat de laatste post is, hoef je dus alleen maar zoiets te doen:

Codeblok:



1

SELECT id FROM forum_posts WHERE topic_id = t.id AND datum > $datum_die_ik_net_noemde ORDER BY datum ASC LIMIT 1





en dan heb je het id van de laatste post.
Maar dan kom je nog met het probleem dat je wilt weten op welke pagina die post staat, hoe ga je dat doen?
Dat kun je weer zo doen:

Codeblok:



1

SELECT CEIL(COUNT(1) / 15) AS pagina FROM forum_posts WHERE forum_id = t.id AND datum < $datum_die_ik_net_noemde






Als je allebei die resultaten weet, dan kun je de gebruiker naar de goede pagina sturen:

Codeblok:



1

/forum/topic?...&p=$pagina#$id






Maargoed, je moet dan wel die twee queries in één grote query stoppen, omdat je anders met enorm veel queries per request zit, en dat wil ik niet. Ik ben bang dat het daar fout gaat omdat de uitvoertijd dan weer te lang gaat worden naar mn zin.
Maargoed, nu ik dit zo allemaal uit zit te typen bedenk ik me dat ik t best wel eens kan proberen, misschien valt het reuze mee allemaal.
emo.gif


Anyway, hoop dat je t snapt.
emo.gif
 

Kjeld

New member
Eauw, mij kunnen ze tussen 1 en 2 bellen, als ze dan bellen ben ik gezakt, moet om half 3 op school zijn, maar als ik helemaal niet meer kan slagen bellen ze om 3 uur, lekker geregeld weer
yummie.gif


Maar daar ging dit topic eigenlijk niet over
emo.gif
 

Luukvdo

New member
Lennard:
Ja, ik zal t proberen uit te leggen voor je.

In het topicoverzicht is tijdens het opbouwen van de pagina de datum beschikbaar van de laatste door jou gelezen post.
Die datum is de hoogste van de volgende waarden:
- de laatste keer dat je op "Markeer alle fora als gelezen" hebt geklikt
- de laatste keer dat je op "Markeer alle topics als gelezen" voor het betreffende forum hebt geklikt
- de laatste keer dat je het topic hebt bekeken

Om te weten wat de laatste post is, hoef je dus alleen maar zoiets te doen:

Codeblok:



1


SELECT id FROM forum_posts WHERE topic_id = t.id AND datum > $datum_die_ik_net_noemde ORDER BY datum ASC LIMIT 1





en dan heb je het id van de laatste post.
Maar dan kom je nog met het probleem dat je wilt weten op welke pagina die post staat, hoe ga je dat doen?
Dat kun je weer zo doen:

Codeblok:



1

SELECT CEIL(COUNT(1) / 15) AS pagina FROM forum_posts WHERE forum_id = t.id AND datum < $datum_die_ik_net_noemde






Als je allebei die resultaten weet, dan kun je de gebruiker naar de goede pagina sturen:

Codeblok:



1

/forum/topic?...&p=$pagina#$id






Maargoed, je moet dan wel die twee queries in één grote query stoppen, omdat je anders met enorm veel queries per request zit, en dat wil ik niet. Ik ben bang dat het daar fout gaat omdat de uitvoertijd dan weer te lang gaat worden naar mn zin.
Maargoed, nu ik dit zo allemaal uit zit te typen bedenk ik me dat ik t best wel eens kan proberen, misschien valt het reuze mee allemaal.
emo.gif


Anyway, hoop dat je t snapt.
emo.gif


Ja, ik denk dat ik het wel snap. Veel succes met het proberen te maken
biggrin.gif
 

Lennard

Active member
Ok, het gaat niet lukken omdat deze datum:
Quote:
Die datum is de hoogste van de volgende waarden:
- de laatste keer dat je op "Markeer alle fora als gelezen" hebt geklikt
- de laatste keer dat je op "Markeer alle topics als gelezen" voor het betreffende forum hebt geklikt
- de laatste keer dat je het topic hebt bekeken
pas wordt bepaald in de while lus zegmaar, dus op het moment dat de query voor de topics al is uitgevoerd.
Dat moet ook wel zo, omdat die datum natuurlijk per topic verschillend is (je bekijkt immers niet alle topics op hetzelfde moment).
Een oplossing hiervoor zou zijn om die datum in de database zelf te berekenen, maar dan wordt mn nu al zo lange query nog veel moeilijker dus daar ga ik niet aan beginnen, of om per topic een extra query uit te voeren, maar daar ben ik op tegen.
clown.gif

Helaas dus. Mocht iemand een geniale suggestie hebben dan hoor ik t graag natuurlijk.
biggrin.gif
 

Luukvdo

New member
Jammer, maar ik weet niet hoe ze het bij andere forumsystemen doen (bijv. PHPBB) maar daar hebben ze het wel. Ik kan straks even kijken in de code van PHPBB of ik er daar iets van begrijp
 
Bovenaan