Izlist nepročitanih komentara - PHP

Dakle imam nekakav sadržaj, a ispod njega komentare čitatelja. Sad namjeravam napravit da korisnik ima opciju da mu se izlistaju komentari od njegovog zadnjeg posjeta, dakle nepročitani. Ali, malo me buni princip kako to napravit.

Ako krenem ono jednostavno, npr. da uzmem ID zadnjeg komentara od onda kad je posjetitelj bio na stranici. Njemu je u jednom stupcu mysql baze upisan taj ID recimo da je broj 100 (isto tako može bit i timestamp).
I sad posjetitelj dođe nakon 2 dana opet na stranicu, i ja mu uspoređujem taj korisnikID=100 od zadnjeg puta, sa zadnjim ID brojem tog trena kad je doša na stranicu, npr. zadnjiID=105.
I countom dobijem 5 postova, te ih se lako može izlistat. Znači dobijem na izlistu ovo:

  1. komentar (ID=101)
  2. komentar (ID=102)
  3. komentar (ID=103)
  4. komentar (ID=104)
  5. komentar (ID=105)
    I sad ako posjetitelj klikne na 1. komentar, kad ga pročita, njegov korisnikID koji je bio 100, automatski dobiva ID=101 i više mu taj komentar nije među nepročitanima kad se vrati na taj izlist, jel tako? I to djeluje ok.

Ali, dok vrtim te kombinacije u glavi, padne mi na pamet situacija što ako korisnik klikne na 3. kometar sa ID=103? Onda će mu ovaj njegov zadnji korisnikID bit 103 i njega će upisat u onaj stupac čim pročita taj komentar. Pa će gledat kao nepročitane sve veće od 103. Ali onda mi preskače 2.komentar sa ID=102. Tako da ovaj moj postupak očito nije rješenje.

Ako idem radit novu tablicu i u nju pisat/brisat aktivnosti korisnika, oće li to opteretit server, napunit bazu ili sl.

U svakom slučaju malo sam zapea, pa ako me neko može usmjerit u pravom smjeru bija bi zahvalan.

Evo sta meni pada na pamet trenutno, napravis za svaki komentar polje procitali a to polje ce biti u nekom ovakvom formatu lupam: 3 | 12 | 26 | 88 itd, odnosno ovi brojevi predstavljaju ID korisnika koji su procitali komentar…

I onda kad budes proveravao ko je procitao pomocu explode funkcije pretvoris to u array i onda in_array($userid,$listakojisuprocitali)… ,
A u bazu upisujes id korisnika kad procita odredjeni komentar…

Ne znam ne pada mi na pamet nista bolje, u svakom slucaju kolacici bi ti bili pametnija ideja ovde, ali necu da ulazim sad u to mozda ne zelis kolacice
… srecno :slight_smile:

da, i to mi je palo na pamet, ali zar onda ne bi to opteretilo bazu? recimo neki komentar pročita 10000 ljudi, pa tih 10000 brojeva u jednom polju…?? pa explodat 10000 brojeva…
a jel se obično koriste kolačići za ovo ili mysql? nije da su mi kolačići baš napeti, ali ako se u praksi dosta koriste onda bi i ja.
Znači umjesto u bazu upisujem u kolačić? nešto kao kad korisnik dođe na stranicu vučem iz kolačića zadnji ID ili timestamp komentara. Ali kad pročita post onda bi vjerojatno opet taj novi podatak (novi ID) slao na kolačić, pa mi se čini da dođem na isto, jel? ako pročita 103 prije 102, onda mi ovaj 102 neće prikazat kao nepročitan?

uh, mislim da me malo ne ide logika danas, nikako da to posložim u glavi

Pa da koriste se kolacici, bolje da skladistis to na strani korisnika nego da opterecujes bazu… Jedino sto kolacici nisu toliko pouzdani, korisnik moze da ih obrise… Izguglaj par foruma pa vidi kako su oni to odradili za nove teme…

A zašto jednostavno ne zapamtiti u bazi korisnici (pod pretpostavkom da je imaš) user_last_visit i u to polje upisati datum kad je zadnji put se korisnik ODLOGIRAO. I kad se ponovo prijavi, jednostavnu mu izlistaš sve komentare koji su nastali nakon user_last_visit.

Banalno riješenje, i vjerojatno najlakše za izvest. Sad jedino je stvar u tome da li ti želiš da on zaista mora pročitati svaki od komentara koji je nastao otkad ga nije bilo?

Da tako je u phpbb2 koliko se secam odradjeno… To bih ti i ja preporucio, jedino ako ti nije bas bas toliko stalo da se zezas s tim…

ne, ne… kad bi išao na to odlogiranje bilo bi najlakše. međutim ko se danas odlogira? ili gase browser ili surfa dalje, ne znam jel se iko odlogira. A svakako ako nađem rješenje za ovo mislim stavit nekakav limit za taj ispis na 20 ili 30 nepročitanih postova, ako i toliko.
Uglavnom kad bi išlo na log out, taj tren bi upisa timestap u stupac i to je to. Ali gori sam objasnija zašto mi to ne igra.

Ne znam može li se s nekakvim privremenim spremanjem u session ili nešto?

Evo upravo naletija na ovo od phpbb foruma:
CREATE TABLE phpbb_topics_track (
user_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
topic_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
forum_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
mark_time int(11) UNSIGNED DEFAULT ‘0’ NOT NULL,
PRIMARY KEY (user_id, topic_id),
KEY topic_id (topic_id),
KEY forum_id (forum_id)
)
ovo oni koriste. Jel to znači da oni u ovu tablicu upisuju timestamp baš svakog komentara i svakog korisnika?!?
Pa kolika im je onda ta baza? Jel to malo previše podataka?

Pa kad zatvori browser automatski mu se unisti sesija i izloguje se.