phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-05, 21:45

Zdravím,

udělal jsem si fórum a než to udělám tak, jak mě napadlo, zajímali by mě názory vás, jak udělat (zvýraznit) nepřečtené příspěvky ve fóru (jakémkoliv).

Původně jsem měl Kforum (je super, jen jsem chtěl provést redesign a vytvoření nového bylo rychlejší - 3 dny :) ), které to řešilo zápisem id čtenáře a příspěvku do databáze.. no, bylo tam několik desetitisíců řádků, proto mi to nepřijde zrovna jako ideální řešení.

Jaké jsou ovšem možnosti? Db, Cookie, vazba na posledni prihlaseni..

Mate nejake napady?
Diky.

(náhled fóra - [http://programujte.com/forum.php])



Celkem upraveno 1×. Poslední úprava Curo v 05.11.2006 21:47.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2006-11-05, 22:20

Rozhodně db, jinak to neuděláš správně a konzistentně :)
Např. jednoduchá tabulka o třech sloupcích - id (primární klíč), id uživatele, id topicu a pokud najdeš dvojici id uživatele a id toho topicu (cizí klíče), tak to už četl ... jedno jestli topicu, nebo přímo příspěvku atd. ... ale nějak takto jednoduše bych to řešil ;)

========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Kubajs (IP adresa zaznamenána)
Datum: 2006-11-05, 23:44

Jsou jen dvě obecná řešení jak ten problém řešit:
1. při prohlidnutí daného postu se jeho číslo plus číslo prohlížejícího zapíše do databáze
2. při založení nového postu (nebo opravě staréro) se zapíše zmínka o něm do tolika vět co je uživatelů - při jeho prohlídnutí se záznam smaže

Jeden způsob bude dělat zátěž na konci a druhý na začátku. Výběr závisí na tom, jak frekventované forum bude. KForum nehledí na samotné příspěvky, ale jen na témata, takže jsem vybral systém první. Jestli jsi tam měl už desetitisíce vět, muselo být forum opravdu velké a musels mít tisíce uživatelů. Nicméně, ať už si vybereš jakýkoli způsob, databázi o velkém počtu vět se nevyhneš ... ale zase nebude velká obsahově.

Snažit se udělat hlídání na samotné příspěvky je chválihodné pro uživatele, ale šílené pro databázi (proto jsem od toho upustil). Nemůžeš totiž brát ohled jen na nové příspěvky, ale i na ty opravované.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-05, 23:54

To Kubajs:
Původně jsem myslel, že existuje "šetrnější" řešení, proto jsem se zeptal. No, vím že jsem na omylu. Nicméně napadl mě kompromis, jak udělat hlídání nových příspěvků a přitom udělat pouze jeden zápis na uživatele na téma. Bude tedy mnohem méně řádků, než je doposud v rs_frumid a přitom se budou kontrolovat i nové příspěvky.

Zkusím a pokud se povede, podám zde echo. Bude to samozřejmě kompatibilní s Kforem, jelikož vyuzivam tabulky (strukturu) DB z Kfora.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-11-06, 00:05

Ak vychádzam z predpokladu, že ID postu je autoincrement, tak teoreticky by malo stačiť zapisovať posledné prečítané ID postu užívateľa v rámci každého Topicu? Úpravu starého postu to nerieši, samozrejme pokiaľ by sa nepridelilo po úprave postu nové ID.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Kubajs (IP adresa zaznamenána)
Datum: 2006-11-06, 00:20

Ono se to tak skoro dělá. Ukládá se id uživatele, id topiku, počet postů v něm a datum poslední návštěvy. Tím prakticky obsáhneš vše. I možnost označení nenavštívených postů - i těch jen opravovaných.

curo: dobrým napadům se meze nekladou ...

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-11-06, 01:01

Kubajs:
Áno, pozerám na štruktúru rs_frumid a je mi to jasné. Podľa dátumu asi testuješ tie editované že?

Curo:
cookie je vhodné len pokiaľ by si tú službu chcel poskytnúť neregistrovaným. Videl som cookies metódu celkom šikovne použitú pri sledovaní nových komentárov od poslednej návštevy. Drobnosť ale poteší :) samozrejme pre fórum je to asi nevhodné.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-06, 01:06

Napriklad forum Lupy (myslim) ukazuje nove prispevky i pro neregistrovane..

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2006-11-06, 01:21

No ale pokud jdeš z jiného PC, cookies jsou samozřejmě ty tam ...

========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-06, 01:26

Jasně :)
Ostatně pokud se nepřihlásíš, údajeo nových příspěvcích jsou taky tytam :)))

No ale každopádně mockráte díky všem za ujasnění, už vím, že jedině DB a nic než DB a k tomu mi dopomáhej phpmyadmin :)

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-08, 06:51

Tak jsem zvolil metodu jakjsem psal výše - vyšlo to.
Neříkám, že je to lepší, než je v Kforu, ale připadá mi to efektivnější. (ale posuďte sami, možná jsemto udělal špatně a je to na ***** :)) )

Takže DB struktura:
ID(primary, autoincrement) -- ctenar(id) -- vlakno(tema) -- odpovedi(v danem vlakne) -- frum(id diskuze)

Vysledkem je jeden zaznam na ctenare na tema.

A dotaz je vzdy takovy, ze se zjistuje, kolik odpovedi videl naposledy ctenar v danem tematu.. pokud pribyli, muze se vypsat kolik a oznacit ze jsou nova. Samozřejmě,nebere to v potaz editaci prispevku, to ani nebylo zamerem na to upozonovat. Ale dalo by se to udelat tak, ze misto ukladani poctu odpovedi se ulozi datum prispevku a pri editaci prispevku se vzdy updatuje a nove posty se nebudou zjistvat prespocet odpovedi, ale data.

Vstupem do topicu se vlastne updatuje pocet odpovedi a to je vse..
Pokud neni nalezen zaznam v DB,vypise se (registrovanym) text, ze se jedna o novy prispevek a vytvori se v DB zaznam.

Sloupec FRUM je tam proto, aby slo vypocitat i na hl. strance Fora pocet novych postu a temat.
Ted pujdu spat a jak se vzbudim, udelam jeste oznaceni prispevku za prectene a dalsi f-ce spojene s novymi prispevky :)

link: [http://programujte.com/forum.php]
Samozřejmě zobrazení nových postů a témat pouze pro přihlášené..

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Kubajs (IP adresa zaznamenána)
Datum: 2006-11-08, 08:03

A v čem, že je to jiné?
KForum má taky jeden záznam na téma a člověka. Hlídá si mimo nové příspěvky i editaci.

A snad jen, abys spočítal počet nových příspěvků a témat pro hlavní stranku, na to nepotřebuješ další sloupec.

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-11-08, 13:01

Kforum si zapisovalo id prispevku, ne tematu,ne?

Re: Možnosti - jak na (ne)přečtené příspěvky na fóru
Zaslán uživatelem/kou: Kubajs (IP adresa zaznamenána)
Datum: 2006-11-08, 14:43

Neříkej? :) Ne, říkal jsem, že kdybych ukládal id příspěvku, mohl bych označovat každý co se pohnul, ale to by pak nejspíš zkolabovala databáze a asi bych si vybral tu druhou variantu, ne tu narůstovou.

create table rs_frumid
(
ctenarid int unsigned, // id čtenáře
topicid int unsigned, // id topiku/témy
postpocet int unsigned, // počet příspěvků při poslední návštěvě
poslview datetime not null default '0000-00-00 00:00:00', // datum poslední navštěvy
key ctenarid (ctenarid),
key topicid (topicid)
);



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.