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
<?php
//dołączamy połączenie z bazą danych
require_once("BazaDanych.php");
//walidujemy przyjęte treści wiadomości
class WalidacjaWiadomosci
{
protected $wiadomosc;
protected function waliduj($wiadomosc)
{
//tutaj wstawiamy walidacje otrzymanych danych tekstowych
$this->wiadomosc = $wiadomosc;
return $this->wiadomosc;
}
}
//zapisujemy wiadomość we bazie danych
class ZapisywanieWiadomosciWBazieDanych extends WalidacjaWiadomosci
{
private $db;
private $wiadomoscDoZapisania;
public function __construct($wiadomosc)
{
$instance = PolaczenieZBazaDanych::getInstance();
$this->db = $instance->getConnection();
$this->wiadomoscDoZapisania = $this->waliduj($wiadomosc);
$this->zapiszWiadomoscWBazieDanych($this->wiadomoscDoZapisania);
}
private function zapiszWiadomoscWBazieDanych($wiadomoscDoZapisania)
{
$sql = "INSERT INTO czat (wiadomosci) VALUES ('".$wiadomoscDoZapisania."')";
if ($this->db->query($sql))
return true;
else
return false;
}
}
//odczytujemy wiadomość z bazy danych
class OdczytywanieWiadomosci
{
private $idWiadomosci;
private $db;
public function __construct($idWiadomosci)
{
$instance = PolaczenieZBazaDanych::getInstance();
$this->db = $instance->getConnection();
$this->idWiadomosci = $idWiadomosci;
$this->odczytywanieWiadomosci($this->idWiadomosci);
}
private function odczytywanieWiadomosci($idWiadomosci)
{
$sql = "SELECT * FROM czat WHERE id > '".$idWiadomosci."'";
$rezultat = $this->db->query($sql);
while ($wiersz = mysqli_fetch_assoc($rezultat))
{
echo "<p class='id' id=".$wiersz['id'].">" . $wiersz['wiadomosci'] . "</p>"; }
}
}
//zapis wiadomości jeśli odebrano zmienną $_POST['zapiszWiadomosc']
if (isset($_POST['zapiszWiadomosc'])) {
$ZapisywanieWiadomosciWBazieDanych = new ZapisywanieWiadomosciWBazieDanych($_POST['trescWiadomosci']);
}
//odebranie wiadomości jeśli odebrano zmienną $_POST['odbierzWiadomosc']
if (isset($_POST['odbierzWiadomosc'])) {
$OdczytywanieWiadomosci = new OdczytywanieWiadomosci($_POST['idWiadomosci']);
}
?>
Plik BazaDanych.php - singleton
<?php
//połączenie z bazą danych stosując singleton
class PolaczenieZBazaDanych {
private static $instance = null; private $db;
private $host = 'localhost';
private $user = 'root';
private $pass = 'haslo';
private $name = 'czat';
private function __construct()
{
$this->db = new mysqli($this->host,$this->user,$this->pass,$this->name);
}
public static function getInstance
() {
if(!self::$instance)
{
self::$instance = new PolaczenieZBazaDanych();
}
return self::$instance;
}
public function getConnection()
{
return $this->db;
}
}
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