Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Файл index.php
- <?php
- //В бд есть таблица messages с аттрибутами id, username и text, в которой храним сообщения
- class GuestBook {
- private $db;
- private $stmt;
- public function __construct($address, $dbname, $charset, $user, $password) {
- session_start();
- $this->db = new PDO("mysql:host=$address;dbname=$dbname;charset=$charset", $user, $password);
- }
- public function selectMessages() { //Выбираем записи из таблицы
- $this->stmt = $this->db->query('SELECT username, text FROM messages');
- }
- public function addMessage($username, $text) { //Добавляем запись в таблицу
- $statement = $this->db->prepare('INSERT INTO messages SET username = ?, text = ?');
- $statement->execute(array($username, $text));
- }
- public function getRow() { //Получаем очередную запись из PDOStatement
- return $this->stmt->fetch(PDO::FETCH_ASSOC);
- }
- public function saveFields($username, $text) { //Сохраняем поля в сессию, если они не все заполнены, чтобы потом автоматически заполнить их
- $_SESSION['username'] = $username;
- $_SESSION['text'] = $text;
- }
- public function clearFields() { //Очищаем после saveFields()
- $_SESSION['username'] = "";
- $_SESSION['text'] = "";
- }
- }
- $gb = new GuestBook('127.0.0.1', 'testdb', 'utf8', 'test', 'test');
- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- $username = $_POST['username'] ? $_POST['username'] : "";
- $text = $_POST['text'] ? $_POST['text'] : "";
- if ($username != "" && $text != "") {
- $gb->addMessage($username, $text);
- } else {
- $gb->saveFields($username, $password); //Если хотя бы часть полей ввода не заполнены, записываем их в сессию и считываем в гет-запросе, чтобы самостоятельно заполнить поля формы и вывести сообщение об ошибке.
- }
- header("Location: {$_SERVER['PHP_SELF']}");
- die();
- } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
- $username = $_SESSION['username'];
- $text = $_SESSION['text'];
- $gb->selectMessages();
- include 'layout.php';
- $gb->clearFields();
- }
- $db = null;
- ?>
- //Файл layout.php
- <!DOCTYPE HTML>
- <html>
- <head>
- <title>Гостевая книга</title>
- <meta charset="UTF-8">
- </head>
- <body>
- <?php include 'guestbook.php' ?>
- </body>
- </html>
- //Файл guestbook.php
- <?php while ($row = $gb->getRow()): ?>
- <div style='margin-bottom: 10px;'>
- <div><?= htmlspecialchars($row['username']); ?></div>
- <div><?= htmlspecialchars($row['text']) ?></div>
- </div>
- <?php endwhile; ?>
- <?php if ($username || $text) echo "<p>Вы не заполнили все поля!</p>" ?>
- <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST">
- <div>
- <div>
- <label for="username">Имя</label><br>
- <input id="username" name="username" value="<?= $username ?>">
- </div>
- <div>
- <label for="test">Сообщение</label><br>
- <textarea id="text" name="text" cols="50" rows="7"><?= $text ?></textarea>
- </div>
- <input type="submit" name="send" value="Отправить">
- </div>
- </form>
Advertisement
Add Comment
Please, Sign In to add comment