Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt czatu do oceny
huberthx
post 16.07.2020, 19:28:00
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
netir
post 27.07.2020, 18:52:44
Post #2





Grupa: Zarejestrowani
Postów: 44
Pomógł: 5
Dołączył: 20.05.2019

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


Faktycznie ten kod wygląda jak z jakiegoś poradnika Pana Zenka z przed ~20 lat.

Najlepiej zainteresuj się jakimś frameworkiem PHP'a, szybciej zrozumiesz jak to powinno wyglądać i zostaw jQuery (szkoda na to czasu), jest masa dobrych frameworków JS (vue, react, angular), które robią robotę czyściej.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 01:17