DOCTYPE html php class GuestBook private name private email private ms

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<?php
class GuestBook{
private $name;
private $email;
private $msg;
public function __construct($_name, $_email, $_msg) {
$this->name = $_name;
$this->email = $_email;
$this->msg = $_msg;
}
public function GetName(){
return $this->name;
}
public function GetEmail(){
return $this->email;
}
public function GetMessage(){
return $this->msg;
}
}
class GuestBookDB extends PDO
{
public function __construct($servername, $dbname, $username, $password) {
try{
parent::__construct("mysql:host=$servername;dbname=$dbname;charset=UTF8", $username, $password);
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
// считываем данные запросом и возвращаем результат ввиде массива экземпляров GuestBook
// удаляем id, так как он не входит в рамки GuestBook'а
public function Select(){
$sqlQuery = "SELECT * FROM Comments";
$data = $this->prepare($sqlQuery);
$data->execute();
$mode = $data->setFetchMode(PDO::FETCH_ASSOC);
$data = $data->fetchAll();
$guestBookArray;
$counter = 0;
foreach ($data as $key => $value) {
unset($data[$key]['id']);
$guestBookArray[$counter] =
new GuestBook($data[$key]['name'], $data[$key]['email'], $data[$key]['comment']);
$counter++;
}
return $guestBookArray;
}
//шаблон для работы с базой данных, для устранения повторяемости кода
private function TemplateForInsert($obj){
$name = $obj->GetName();
$email = $obj->GetEmail();
$msg = $obj->GetMessage();
$sqlQuery = "INSERT INTO Comments (name, email, comment)
VALUES('$name', '$email', '$msg')";
$this->exec($sqlQuery);
}
// в качестве $obj может прийти как экземпляр GuestBook, так и массив экземпляров GuestBook
// написал условием, буду благодарен за совет, как сделать поддержку
// и массива объектов и просто объекта по другому
public function Insert($obj){
if (gettype($obj) == 'array')
{
foreach ($obj as $key => $value) {
$this->TemplateForInsert($value);
}
}
else {
$this->TemplateForInsert($obj);
}
}
//Максимальная длинна комментария 150 символов, email можно не указывать
public function CreateTable(){
$sqlQuery = "CREATE TABLE Comments (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30),
comment VARCHAR(150) NOT NULL)
CHARACTER SET utf8";
$this->exec($sqlQuery);
}
}
?>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<?php
// параметры базы, к которой подключаемся
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "GuestBook";
$test = new GuestBookDB($servername, $dbname, $username, $password);
$test->CreateTable();
$comment1 = new GuestBook('ДИМА', 'koldanst@hotmail.com', 'Hello, world!');
$comment2 = new GuestBook('ИВАН', 'shutovcorp@mail.ru','Sportive programming one love');
$comment3 = new GuestBook('АЗАМАТ', 'azamat@gmail.com','I want more money!');
$arrayOfComments = array($comment1, $comment2, $comment3);
$test->Insert($comment1);
$test->Insert($arrayOfComments);
$result = $test->Select();
//вывод результатов для проверки и наглядности
foreach ($result as $key => $value) {
echo $result[$key]->GetName()."<br>";
echo $result[$key]->GetEmail()."<br>";
echo $result[$key]->GetMessage()."<br><br>";
}
?>
</body>
</html>