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
130
131
132
<!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;
}
// в качестве $obj может прийти как экземпляр GuestBook, так и массив экземпляров GuestBook
// написал условием, буду благодарен за совет, как сделать поддержку
// и массива объектов и просто объекта по другому
public function Insert($obj){
if (gettype($obj) == 'array')
{
foreach ($obj as $key => $value) {
$name = $value->GetName();
$email = $value->GetEmail();
$msg = $value->GetMessage();
$sqlQuery = "INSERT INTO Comments (name, email, comment)
VALUES('$name', '$email', '$msg')";
$this->exec($sqlQuery);
}
}
else {
$name = $obj->GetName();
$email = $obj->GetEmail();
$msg = $obj->GetMessage();
$sqlQuery = "INSERT INTO Comments (name, email, comment)
VALUES('$name', '$email', '$msg')";
$this->exec($sqlQuery);
}
}
//Максимальная длинна комментария 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>