Добавляем отзыв в БД



Ну а теперь давайте запишем наши данные в базу данных MySQL.

Что нам для этого потребуется? Ну собственно сама база и доступ к ней (хост, логин и пароль).

И так берем сделанный в прошлом уроке скрипт обработки отправки сообщения.

<?php
if($_POST['add_otziv']) {

$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$otziv = htmlspecialchars($_POST['otziv']);
$chek = htmlspecialchars($_POST['chek']);

$page = $_SERVER['REQUEST_URI'];
$date = date("d.m.Y - H:i");

if($chek == 'nobot'){
if($name != '' AND $email != '' AND $otziv != ''){
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{$err = 'Неверно введен е-mail.';}

if(!$err){
$massege = "<html><head></head><body>
Новый отзыв на сайте! <br><br>
К странице http://www.имя_сайта.ru".$page.", написали отзыв:<br><br>
<table width=100% border=0>
<tr><td width=10></td>
<td><b>".$name."</b> (".$email.")<br>".$date."
<br>".$otziv."
</td>
</tr></table><br>
</body></html>";

$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: Мой сайт <admin@мой_сайт.ru>\r\n";

if(mail("admin@мой_сайт.ru", "Новый отзыв с Вашего сайта", $massege, $headers))
{$err="Спасибо за отзыв".$name;}else{$err='Ошибка в отправлении';}

}
}else{
$err = 'Вы заполнили не все поля!';
}
}else{
$err='Вы не человек :( ';
}
}
?>

Первое что нам необходимо сделать, это подключиться к базе. Для этого используем следующий код (его надо вставить перед if($_POST['add_otziv'])):

include("config.inc.php");
$link_1 = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
mysql_select_db($DB, $link_1) or die ('Не могу выбрать БД');

В файле config.inc.php будут следующие данные:

<?php
$DBSERVER = "адрес сервера";
//Пользователь и пароль
$DBUSER = "Пользователь";
$DBPASS = "Пароль";
//База данных
$DB = "Название базы";
?>

Если Вы сделаете все правильно и запустите страницу, то отобразится форма. Если что то не правильно, появится предупреждение об ошибке.

Отлично, теперь нам нужно создать таблицу в нашей БД, в которую будут заноситься данные. Обычно для этого используется PhpMyAdmin предоставляемый хостером. И так у нас будет 5 полей с данными и 1 поле это id, итого 6.

Просто выполните этот запрос во вкладке SQL:

CREATE TABLE `otzivi` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`otziv` TEXT NOT NULL ,
`page` VARCHAR( 255 ) NOT NULL ,
`date` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

Обращаю Ваше внимание что таблица была создана в кодировке Юникод (utf-8). В нашем случае id является уникальным полем и имеет параметр авто инкремента (т.е. увеличение значения от на единицу). Осталось только занести в базу данные. После того как отправили сообщение, допишем следующий код:

mysql_query (" INSERT INTO otzivi (name, email, otziv, page, date)
VALUES ('$name', '$email', '$otziv', '$page', '$date')");

Определяем куда заносить данные, это таблица otzivi, и перечисляем в какие поля какие данные заносим. Вот полный код получившегося скрипта:

<?
include("config.inc.php");
$link_1 = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
mysql_select_db($DB, $link_1) or die ('Не могу выбрать БД');

if($_POST['add_otziv']) {

$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$otziv = htmlspecialchars($_POST['otziv']);
$chek = htmlspecialchars($_POST['chek']);

$page = $_SERVER['REQUEST_URI'];
$date = date("d.m.Y - H:i");
if($chek == 'nobot'){
if($name != '' AND $email != '' AND $otziv != ''){
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{$err = 'Неверно введен е-mail.';}
if(!$err){
//формируем html сообщение
$massege = "<html><head></head><body>
Новый отзыв на сайте! <br><br>
К странице http://www.ИМЯ_САЙТА.ru".$page.", написали отзыв:<br><br>
<table width=100% border=0>
<tr><td width=10></td>
<td><b>".$name."</b> (".$email.")<br>".$date."
<br>".$otziv."
</td>
</tr></table><br>
</body></html>";

$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: Мой сайт <admin@ИМЯ_САЙТА.ru>\r\n";

if(mail("admin@ИМЯ_САЙТА.ru", "Новый отзыв с Вашего сайта", $massege, $headers))
{$err="Спасибо за отзыв".$name;}else{$err='Ошибка в отправлении';}

mysql_query (" INSERT INTO otzivi (name, email, otziv, page, date)
VALUES ('$name', '$email', '$otziv', '$page', '$date')");

}
}else{
$err = 'Вы заполнили не все поля!';
}
}else{
$err='Вы не человек :( ';
}
}
?>

Не забываем поместить файл с настройками БД в дну папку со скриптом или измените путь к нему.


К списку всех уроков PHP