Jump to content
  • 0

pomoc Rozpoznání přečtených/nepřečtených témat (forum)


chocholda

Dotaz

Zdarec lidi, potřeboval bych poradit:

 

Mám forum, ukládá se do dvou tabulek:

1) forum_topic - obsahuje informace o tématech ve foru

pole: topic_id,nazev,user_id

 

2) forum_reply - obsahuje příspěvky fóra

pole: reply_id,topic_id,user_id,obsah,datum_vytvoreni

 

Když někdo založí novétéma, vloží se informace do forum_topic, a zároven do forum_reply, když někdo odpovídá tak už jen do forum_reply

 

 

Potřeboval bych vědět, jakým způsobem by se podle vás dalo udělat, aby každý uživatel rozpoznal, která témata už přečetl, a která ne (tak, jak je to normálně udělaný na vlastně všech fórech) - samozdřejmě aby když někdo do tématu něco napíše, aby se tam zase hodilo nepřečteno..

 

 

Mě bohužel nenapadl žádnej normální způsob, tím myslím nějakej způsob aby se nemuselo pokaždé načítat přehnaně moc dat z databáze..

 

 

 

Pokud někdo budete mít nějaký nápad, budu vám vděčný :)


.. ?

Link to comment
Share on other sites

11 odpovědí na tuto otázku

Recommended Posts

  • 0

Asi jsem zapoměl dodat, ž jde o web kde se používá přihlášení, čili je potřeba informace co uživatel viděl/neviděl uložit i do databáze aby to tak měl i po odhlášení/přihlášení

Link to comment
Share on other sites

  • 0

Sice to webu nedelam, ale kdyz nato pouzijes logiku, tak bych to udelal tak, ze bych si pro kazde forum pamatoval kdy bylo naposledy aktualizovano (kterykoliv uzivatel tam napsal neco noveho). (tzn globalne, aby jsi to nemusel kazdymu uzivateli zvlast ukladat) A kdyz se uzivatel na web prihlasi, tak se pak jen provnal cas aktualizace daneho fora s casem jeho uctu, kdy naposledy to forum cetl. A tak vyhodnotis, zda je tam neco noveho a mas mu to oznacit jako neprectene...

Link to comment
Share on other sites

  • 0

Podobně jsem nad tím přemýšlel, ale musím nějak pro každýho uživatele uložit aby věděl, který témata kdy četl naposledy - což nevím jak by se to dalo ukládat tak, aby to mohlo vůbec fungovat.. (u jednoho téata ve foru by to nebyl problém, ale jak to udělat aby to fungovalo když je ve foru několik témat - tak pro každý z nich zvlášt)..

Link to comment
Share on other sites

  • 0

Do db to neukladaj, však rozmýšľaj... 50.000 topicov a 10.000 userov je 500.000 záznamov.. Musíš na to ísť cez cache a session... Si pogoogli kus... Cez db urcite nie.

Link to comment
Share on other sites

  • 0

Už mě napadlo jak by se to podle mě dalo udělat aby to fungovalo jak bych chtěl, ale podle mě to bude trochu náročný na databázi než bych si přál:

 

U každýho tématu budu mít v databázi pole například: view_id..

 

Do toho pole se když nějakej uživatel otevře to téma se připíše jeho id (oddělené třeba čárkou)..

 

čili to pak bude vypadat třeba takhle: 12,18,6,15

 

Když budu načítat ta témata tak se jen zjistí, jestli tam je i ID přihlášenýho uživatele, a podle toho se pozná jestli to viděl, nebo ne..

 

A když do tématu někdo něco napíše, tak se to v databázi vynuluje (= nikdo nepřečetl) a hotovo..

 

 

 

 

 

 

Co si o tom myslíte? Nebo napadá vás nějaký lepší řešení? (případně jak to vylepšit?)

Link to comment
Share on other sites

  • 0

To je brutálně náročný

 

použij cookies

např. každé téma a kategorie bude mít svoje id a čas poslední změny tak uložíš

$_COOKIE['topic'][125] = 7894516268; //čas v unixové timestamp, 125 je ID tématu

 

jestli to má zobrazit jako aktivní dáš

if(!isset($_COOKIE['topic'][125]) || $_COOKIE['topic'][125] < 7894512321){ //Pokud není vytvořené cookie nebo je menší

Link to comment
Share on other sites

  • 0

Jenže tohle není řešení pro přihlášené uživatele ale pro nepřihlášené..

 

Ono to zas tak náročný nebude.. V tabulce kde mám uložený seznam témat bude jen o jednu pole navíc, to se při načítání ztratí, a pak to jen pomocí explode rozdělím, a pomocí in_array zjistím jestli ID přihlášeného uživatele je v tom poli (čili že si to přečetl)..

 

Jediný co by mohlo být trochu náročnější by bylo, kdyby tam chodilo až moc lidí - to případný neustálý přepisování databáze když někdo otevře nějaký téma..

 

 

 

Určitě to jde udělat aby to fungovalo pomocí databáze pro přihlášený uživatele, a tohle je jediný řešení kteřý by nebylo nějak extrémní.. :)

Link to comment
Share on other sites

  • 0

To čo ti písal kozel je všetko čo potrebuješ. To riešenie ktoré navrhuješ ty je zlé, nedobré, náročné a hlavne nie bezpečné. Nauč sa radšej niečo nové o cookies ako robiť niečo čo nemá význam

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...