sporo jest skryptow w sieci. oczywiscie nie zeby bezmyslnie skopiowac, ale mozesz sprawdzic ich kody i w ten sposob zobaczyc jak to sie robi i poznac niektore ciekawe zastosowania.
hm w sumie to nie wyobrazam sobie shoutboxa bez mysql'a.. powiem Ci jak ja bym to zrobił.
ogolny layout to oczywiscie html i css, zeby sie rozszerzało wystarczy uzyc textarea..
potem utworzyłbym db i tabele 'wpisy', w niej 4 pola. klucz, id usera, tresc wiadomosci, data lub godzina dodania. jako ze shoutbox ma ograniczona ilosc wpisow na strone (np. 50) to mozna by zaimplementowac funkcje, ktora przy kazdym dodawaniu wiadomosci przez uzytkownika sprawdza czy liczba wiadomosci w bazie jest wieksza niz 50, jesli tak usuwa wiadomosc z najmniejszym id z bazy.. to tak zeby zaoszczedzic na pamieci. a zeby zaoszczedzic na wydajnosci to mozna bez sprawdzania usunac z pierwsza (wystarczy zmodyfikowac recznie skrypt gdy liczba wiadomosci przekroczy 50. zawsze to jedno zapytanie do bazy mniej. jezeli ruch bedzie duzy to do odciazenia strony mozna uzyc cron'a, ktory co np. godzine bedzie usuwał najstarsze rekordy z bazy danych.
czyli ogolna zasada jest taka, ze jak uzytkownik otworzy sb to z bazy danych pobierane jest 50 ostatnich rekordow i w odpowiedniej kolejnosci sa wyswietlane. po dodaniu wiadomosci zapisywana jest ona w bazie danych po czym odswiezany jest shoutbox. mozesz tez zaimplentowac automatyczne odswiezanie zeby uzytkownik nie musial co chwile oswiezac recznie. no i chyba tyle.
CREATE DATABASE sb;
USE sb;
CREATE TABLE msg (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
user varchar (100) NOT NULL,
text text NOT NULL,
dat timestamp() NOT NULL
) ENGINE=myisam;
HTML i CSS dobierz wedlug uznania.. obowiazkowe sa oczywiscie: textarea na wyswietlanie wpisow, oraz dwa inputy - wprowadzanie wiadomosci + submit. pamietaj o filtorowaniu wprowadzanych danych
jezeli zdecydujesz sie na automatyczne odswiezanie, np. co 30 sekund: <meta http-equiv="refresh" content="30">
skrypt
sb.php$pdo = new PDO(...); // laczenie sie z baza danych
$limit = 50; // ilosc wiadomosci na stronie
$stmt=$pdo->query("SELECT user,text,dat FROM msg ORDER BY id LIMIT $limit");
$i = 0; // zmienna do naprzemiennego kolorowania wierszy (taki bajer)
foreach ($stmt as $row)
{
++$i;
echo (($i % 2) == 0 ) ?
'<tr backgroundColor='yellow
'>' : '<tr backgroundColor='orange
'>'; echo '<td>'.$row['user'].'</td><td>'.$row['text'].'</td><td>'.$row['dat'].'</td>'; }
$stmt->closeCursor();
if (isset($_POST['addmsg'])) // jezeli kliknieto submit wiadomosci {
$stmt=$pdo->prepare('INSERT INTO msg (user,text,dat) VALUES (:user,:text,:dat)');
$stmt->bindValue (:user,$_SESSION['login'],PDO::PARAM_STR); // w sesji przechowywany jest login usera
$stmt->bindValue (:text,$_POST['msg'],PDO::PATAM_STR);
$stmt->bindValue (:dat
,date('Y:m:d H:i'),PDO
::PATAM_STR); $result=$stmt->execute;
if ($result >0) //skoro pomyslnei dodano rekord, kasujemy jeden z konca
{
$stmt=$pdo->query('SELECT min(id) FROM msg'); // pobieramy id rekordy do skasowania
$id = $stmt->fetch();
$stmt->closeCursor();
$stmt=$pdo->exec("DELETE FROM msg WHERE id=$id");
}
}
}
}
mniej wiecej tak wyglada jedna z najprostszych implementacji shoutboxu.. pisana na szybko bez testowania, wiec wybacz literowki, czy bledy w kodzie, ale chyba zasada tworzenia jest jasna. nie ma tu tez autoryzacji uzytkownikow bo zakładam ze takowa posiadasz. sam skrypt mozna z pewnoscia dopracowac, m.in. dodac obsluge błedów albo uzyc ajax'a, zeby nie przeładowywac za kazdym razem całej strony.. to juz pozostawiam Tobie