Гостевая книга на PHP MySQLi

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Владимир
Сообщения: 37

Гостевая книга на PHP MySQLi

Сообщение Владимир » Вс окт 05, 2014 7:38 pm

Привет опять! Сегодня я тут прописался!
Прошу показать простой пример гостевой книги на PHP MySQLi.
Желательно, что бы было в виде комментов, а не обратной связью, но оповещения о новом обращении, что бы приходили на почту.
Спасибо.
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Re: Гостевая книга на PHP MySQLi

Сообщение Slash » Пн окт 06, 2014 3:43 pm

Ну, давайте попробуем...
Для начала разберемся, что нам следует сделать:
1. Вытащить все записи из БД (если они там есть) и вывести их на экран, через цикл.
2. Получить комментарий от пользователя, засунуть его в БД.
Значит создаем таблицу в БД, выполнив такой запрос:

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `guestbook` (
  `guestbook_id` int(11) NOT NULL AUTO_INCREMENT,
  `guestbook_text` text,
  `guestbook_name_user` varchar(50) NOT NULL,
  `guestbook_mail_user` varchar(35) NOT NULL,
  `guestbook_date` varchar(35) NOT NULL, 
  PRIMARY KEY 
(`guestbook_id`)
);

Далее создаем файл index.php с тем, что я тут набросал:

Код: Выделить всё

<?php
#Доступ к БД
$dbhost    = '';
$dbuser    = '';
$dbpasswd  = '';
$dbname    = '';

#Почта Админа
$mail = '';

$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$connect)
{
    mysqli_error();
}

$info = isset($info) ? $info : null;

#Сохранняем комментарий
if (isset($_POST['submit']))
{
    $guestbook_name_user = mysqli_real_escape_string($connect, $_POST['guestbook_name_user']);
    $guestbook_mail_user = mysqli_real_escape_string($connect, $_POST['guestbook_mail_user']);
    $guestbook_text = mysqli_real_escape_string($connect, htmlspecialchars($_POST['guestbook_text']));
    
    if 
(empty($guestbook_name_user))
    {
        $info = 'Вы не ввели своё имя.';
    }
    else if (empty($guestbook_mail_user))
    {
        $info = 'Вы не ввели свою почту.';
    }
    else if (empty($guestbook_text))
    {
        $info = 'Вы не ввели комментарий.';
    }    
    else
    
{
        $guestbook_date = date('d-m-Y / H:i');    

        $sql 
= "INSERT INTO guestbook (guestbook_name_user, guestbook_mail_user, guestbook_text, guestbook_date)
            VALUES ('
$guestbook_name_user', '$guestbook_mail_user', '$guestbook_text', '$guestbook_date')";
        $query = mysqli_query($connect, $sql);        
        if 
(!$query)
        {
            $info = 'Произошла ошибка' . mysqli_error();
        }
        else
        
{
            $title = 'Новый комментарий в гостевой книге';        
            $message 
= '<h5>В гостевую книгу добавлен новый комментарий.</h5>';
            $message .= 'Автор: <strong>' . $guestbook_name_user . '</strong> Почта автора: ' . $guestbook_mail_user;
            $message .= '<br /> добавлен: ' . $guestbook_date;            
            $message 
.= '<br />Текст комментария:<br />' . $guestbook_text;            
            $headers 
= 'content-type: text/html; charset = utf-8';    
            mail
($mail, $title, $message, $headers);

            $info = 'Ваш комментарий успешно добавлен!';
        }
    }
}

#Вытаскиваем все комментарии
$sql_guestbook = "SELECT * 
    FROM guestbook    
    ORDER BY guestbook_id DESC"
;
$query_guestbook = mysqli_query($connect, $sql_guestbook);
if (!$query_guestbook)
{
    $info = 'Произошла ошибка' . mysqli_error();
}
$all_lines = mysqli_num_rows($query_guestbook);
?>

И HTML к данному скрипту:

Код: Выделить всё

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Гостевая книга</title>
</head>
<body>

<?=$info?>
<form method="post" action="index.php">
    Ваше имя: <input type="text" name="guestbook_name_user"><br />
    Ваша почта: <input type="text" name="guestbook_mail_user"><br /> 
    <textarea rows="5" cols="70" name="guestbook_text"></textarea><br />
    <input class="button" type="submit" name="submit" value="Отправить" />
</form>

<h4>Всего записей (<?=$all_lines?>)</h4>
<table>
<?php while ($row = mysqli_fetch_assoc($query_guestbook)): ?>
    <tr>
        <td>
            Автор: <strong><?=$row['guestbook_name_user']?></strong> Дата написания: <strong><?=$row['guestbook_date']?></strong> 
        </td>
    </tr>
    <tr>
        <td>
            <?=$row['guestbook_text']?>
        </td>
    </tr>
<?php endwhile; ?>
</table>

</body>
</html>

HTML код можно вставить в index.php, сразу после ?>, а можно заинклудить это отдельным файлом, как шаблон.
Я набросал для примера, но и этого достаточно для Вашей хотелки, если что всегда можно допилить...
Пользуйтесь на здоровье!
Аватара пользователя
Владимир
Сообщения: 37

Re: Гостевая книга на PHP MySQLi

Сообщение Владимир » Пн окт 06, 2014 6:21 pm

Алексей, супер! :)
Простой, но классный скрипт. То что надо!
Чуть позже добавлю классы, но это уже другая история...
Спасибо Лёха ;) !

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя