Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt czatu do oceny
huberthx
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 1.01.2016

Ostrzeżenie: (0%)
-----


Pytanie: czy zmierzam w dobrym kierunku ? Podam tylko najważniejsze pliki.
Jest to aplikacja czatu.
Za krytykę dziękuję - to się przyda.
Plik czat.php
  1. <?php
  2. //dołączamy połączenie z bazą danych
  3. require_once("BazaDanych.php");
  4. //walidujemy przyjęte treści wiadomości
  5. class WalidacjaWiadomosci
  6. {
  7. protected $wiadomosc;
  8. protected function waliduj($wiadomosc)
  9. {
  10. //tutaj wstawiamy walidacje otrzymanych danych tekstowych
  11. $this->wiadomosc = $wiadomosc;
  12. return $this->wiadomosc;
  13. }
  14. }
  15. //zapisujemy wiadomość we bazie danych
  16. class ZapisywanieWiadomosciWBazieDanych extends WalidacjaWiadomosci
  17. {
  18. private $db;
  19. private $wiadomoscDoZapisania;
  20. public function __construct($wiadomosc)
  21. {
  22. $instance = PolaczenieZBazaDanych::getInstance();
  23. $this->db = $instance->getConnection();
  24. $this->wiadomoscDoZapisania = $this->waliduj($wiadomosc);
  25. $this->zapiszWiadomoscWBazieDanych($this->wiadomoscDoZapisania);
  26. }
  27. private function zapiszWiadomoscWBazieDanych($wiadomoscDoZapisania)
  28. {
  29. $sql = "INSERT INTO czat (wiadomosci) VALUES ('".$wiadomoscDoZapisania."')";
  30. if ($this->db->query($sql))
  31. return true;
  32. else
  33. return false;
  34. }
  35. }
  36. //odczytujemy wiadomość z bazy danych
  37. class OdczytywanieWiadomosci
  38. {
  39. private $idWiadomosci;
  40. private $db;
  41. public function __construct($idWiadomosci)
  42. {
  43. $instance = PolaczenieZBazaDanych::getInstance();
  44. $this->db = $instance->getConnection();
  45. $this->idWiadomosci = $idWiadomosci;
  46. $this->odczytywanieWiadomosci($this->idWiadomosci);
  47. }
  48. private function odczytywanieWiadomosci($idWiadomosci)
  49. {
  50. $sql = "SELECT * FROM czat WHERE id > '".$idWiadomosci."'";
  51. $rezultat = $this->db->query($sql);
  52. while ($wiersz = mysqli_fetch_assoc($rezultat))
  53. {
  54. echo "<p class='id' id=".$wiersz['id'].">" . $wiersz['wiadomosci'] . "</p>";
  55. }
  56. }
  57. }
  58. //zapis wiadomości jeśli odebrano zmienną $_POST['zapiszWiadomosc']
  59. if (isset($_POST['zapiszWiadomosc']))
  60. {
  61. $ZapisywanieWiadomosciWBazieDanych = new ZapisywanieWiadomosciWBazieDanych($_POST['trescWiadomosci']);
  62. }
  63. //odebranie wiadomości jeśli odebrano zmienną $_POST['odbierzWiadomosc']
  64. if (isset($_POST['odbierzWiadomosc']))
  65. {
  66. $OdczytywanieWiadomosci = new OdczytywanieWiadomosci($_POST['idWiadomosci']);
  67. }
  68. ?>

Plik BazaDanych.php - singleton
  1. <?php
  2. //połączenie z bazą danych stosując singleton
  3. class PolaczenieZBazaDanych {
  4. private static $instance = null;
  5. private $db;
  6.  
  7. private $host = 'localhost';
  8. private $user = 'root';
  9. private $pass = 'haslo';
  10. private $name = 'czat';
  11.  
  12. private function __construct()
  13. {
  14. $this->db = new mysqli($this->host,$this->user,$this->pass,$this->name);
  15. }
  16.  
  17. public static function getInstance()
  18. {
  19. if(!self::$instance)
  20. {
  21. self::$instance = new PolaczenieZBazaDanych();
  22. }
  23.  
  24. return self::$instance;
  25. }
  26.  
  27. public function getConnection()
  28. {
  29. return $this->db;
  30. }
  31. }

Plik javascript odebranieWiadomosciZSerwera.js

$(document).ready(function(){
//odbieranie wiadomośći z serwera co określony czas
function odebranieWiadomosciZSerwera()
{
$.ajax({
url: "./../czat/php/czat.php",
method: "POST",
data: {
odbierzWiadomosc: true,
idWiadomosci: $("#wiadomosci p.id").last().attr('id'),
},
}).done(function(odpowiedz){
$("#wiadomosci").append(odpowiedz);
$('#wiadomosci').animate({
scrollTop: $('#wiadomosci')[0].scrollHeight}, "slow");
});
};
setInterval(odebranieWiadomosciZSerwera,1500);
});

Plik javascript wysylanieWiadomosciNaSerwer.js

$(document).ready(function(){
//wysyłanie wiadomości na serwer po kliknięciu buttona
$("#wyslijWiadomosc").click(function(){
$.ajax({
url: "./../czat/php/czat.php",
method: "POST",
data: {
zapiszWiadomosc: true,
trescWiadomosci: $("#trescWiadomosci").val(),
},
}).done(function(odpowiedz){
});
$("#trescWiadomosci").val("");
});
});


Liczę na konstruktywną krytyke
Dziękuję i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Naduzywasz tworzenie prywatnych wlasiciwosci klasy. Uzywasz ich jako zmiennej lokalne a i tak robisz z nich wlasciwosci klasy. TO nie ma zadnego sensu. Uzywajac klas nie znaczy, ze nie mozesz uzywac zmiennych lokalnych

ID wiadomosci to liczba wiec traktuj to jako liczbe anie jako tekst.

No i to co juz napisano: takie kody pisalo sie w sredniowieczu (IMG:style_emoticons/default/wink.gif) To calosc jest do wyrzucenia i napisania na nowo
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.12.2025 - 16:33