1. Głównym moim celem jest taki skrypt, żeby po napisaniu nowych postów obrazek na stronie głównej zmieniał np. obramowanie albo jakiś inny efekt informujący użytkownika o nowym poście. Jednak na razie nie będę się porywał na głęboką wodę.
2. To, co chciałbym osiągnąć teraz: aby wyświetliła się lista tematów, w których zostały dodane nieprzeczytane posty (w moim przypadku z tabeli MySQl będą to urly)
Oczywiście szukałem na google, ale jak wiadomo gotowca nigdzie się nie znajdzie bo trzeba dostosować taki skrypt do swojej strony/forum. Na pewnym forum udało mi się znaleźć taką wskazówkę:
Cytat
"Tabela 'nieprzeczytane':
- userID
- msgID albo topicID (co niesie za sobą pewne wady, ale też uproszczenia)
Przy odświeżaniu strony przez użytkownika, sprawdzamy datę jego ost. odświeżenia strony i pobieramy z tabeli postów ID tych wiadomości, które mają datę > niż data użytkownika. Uzupełniamy tabelę tymi wpisami. Aby zapobiec przepełnieniu, możemy przy dodawaniu rekordów do tabeli sprawdzić jeszcze, czy np. ten użytkownik nie ma już 1000 nieprzeczytanych postów/tematów. Wtedy tabelę odpowiednio czyścimy smile.gif
- userID
- msgID albo topicID (co niesie za sobą pewne wady, ale też uproszczenia)
Przy odświeżaniu strony przez użytkownika, sprawdzamy datę jego ost. odświeżenia strony i pobieramy z tabeli postów ID tych wiadomości, które mają datę > niż data użytkownika. Uzupełniamy tabelę tymi wpisami. Aby zapobiec przepełnieniu, możemy przy dodawaniu rekordów do tabeli sprawdzić jeszcze, czy np. ten użytkownik nie ma już 1000 nieprzeczytanych postów/tematów. Wtedy tabelę odpowiednio czyścimy smile.gif
Mam 3 tabele w bazie danych:
CREATE TABLE `uzytkownicy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nick` varchar(15) COLLATE utf8_polish_ci NOT NULL, `haslo` varchar(40) COLLATE utf8_polish_ci NOT NULL, `email` varchar(255) COLLATE utf8_polish_ci NOT NULL, `rejestracja` datetime NOT NULL, `logowanie` datetime NOT NULL, `ip` char(15) COLLATE utf8_polish_ci NOT NULL, `ranga` tinyint(1) NOT NULL DEFAULT '0', `ban` tinyint(1) NOT NULL DEFAULT '0', `aktywny` tinyint(1) NOT NULL DEFAULT '0', `kod_aktywacyjny` varchar(40) NOT NULL, `zalogowani` datetime NOT NULL DEFAULT '0000-00-00 00-00-00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='zarejestrowani użytkownicy' AUTO_INCREMENT=1; CREATE TABLE `komentarze` ( `id` int(7) UNSIGNED NOT NULL AUTO_INCREMENT, `url` char(45) COLLATE utf8_polish_ci NOT NULL, `nick` char(35) COLLATE utf8_polish_ci NOT NULL, `data` datetime NOT NULL, `ip` char(15) COLLATE utf8_polish_ci NOT NULL, `komentarz` text COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`), KEY `url` (`url`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='komentarze do artykułów' AUTO_INCREMENT=1; CREATE TABLE `nieprzeczytane` ( `user_id` int(255), `msg_id` int(255) ) ENGINE=MyISAM;
A teraz kod, który jak na razie udało mi się napisać ... tak wiem, że to niewiele, ale raczkuje w tym temacie.
logowanie = ostatnie logowanie użytkownika
zalogowani = ostatnia aktywność użytkownika na stronie
$_SESSION['nick'] = nick zalogowanego już użytkownika
Trochę chaotyczne mam te nazwy, ale to moja pierwsza strona i jeszcze się trochę gubię w tym wszystkim

// sprawdzamy date jego ostatniego odswiezenia strony $sql_zalogowani = "SELECT `zalogowani` FROM `uzytkownicy` WHERE `nick` = '{$_SESSION['nick']}'"; $wynik = $sql['zalogowani']; // pobieramy z tabeli komentarzy ID tych wiadomosci, ktore maja date > data uzytkownika $result2 = "SELECT id FROM komentarze where data > '$wynik' "; $wiadomosc = $row2['id'];