Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: shoutbox
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
zeratul
Witam. Chciałbym zrobić czata dla pewnej gry, ale chciałbym by ktoś mi doradził, jaki czat jest dość łatwy w konfiguracji. Przyznam że nie jestem super obeznany w programistyce bo sie dopiero ucze ale od czegoś czas zacząć smile.gif Chciałbym bym mógł sobie go dostosować do odpowiednich wymiarów, nie musi mieć panelu administratora ani połączenia mysql ale nie wykluczam tej opcji. Znalazło by się coś dla mnie ?
tab
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.

  1. CREATE DATABASE sb;
  2. USE sb;
  3. CREATE TABLE msg (
  4. id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  5. user varchar (100) NOT NULL,
  6. text text NOT NULL,
  7. dat timestamp() NOT NULL
  8. ) 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

  1. $pdo = new PDO(...); // laczenie sie z baza danych
  2. $limit = 50; // ilosc wiadomosci na stronie
  3.  
  4. $stmt=$pdo->query("SELECT user,text,dat FROM msg ORDER BY id LIMIT $limit");
  5. $i = 0; // zmienna do naprzemiennego kolorowania wierszy (taki bajer)
  6. echo '<table>';
  7. foreach ($stmt as $row)
  8. {
  9. ++$i;
  10. echo (($i % 2) == 0 ) ? '<tr backgroundColor='yellow'>' : '<tr backgroundColor='orange'>';
  11. echo '<td>'.$row['user'].'</td><td>'.$row['text'].'</td><td>'.$row['dat'].'</td>';
  12. }
  13. echo '</table>';
  14. $stmt->closeCursor();
  15.  
  16. if (isset($_POST['addmsg'])) // jezeli kliknieto submit wiadomosci
  17. {
  18. $stmt=$pdo->prepare('INSERT INTO msg (user,text,dat) VALUES (:user,:text,:dat)');
  19. $stmt->bindValue (:user,$_SESSION['login'],PDO::PARAM_STR); // w sesji przechowywany jest login usera
  20. $stmt->bindValue (:text,$_POST['msg'],PDO::PATAM_STR);
  21. $stmt->bindValue (:dat,date('Y:m:d H:i'),PDO::PATAM_STR);
  22. $result=$stmt->execute;
  23.  
  24. if ($result >0) //skoro pomyslnei dodano rekord, kasujemy jeden z konca
  25. {
  26. $stmt=$pdo->query('SELECT min(id) FROM msg'); // pobieramy id rekordy do skasowania
  27. $id = $stmt->fetch();
  28. $stmt->closeCursor();
  29.  
  30. $stmt=$pdo->exec("DELETE FROM msg WHERE id=$id");
  31. }
  32. header('Location: sb.php');
  33. }
  34. }
  35. }


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
Mega_88
Pozwolę sobie - http://nospor.pl/shoutbox.html
zeratul
ok, dziękuję za odpowiedzi.
Zaraz się z tym pobawię smile.gif
Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.