Запись данных из контактных форм в базы данных MySQLi — такая идея возникла в рамках рабочих задач с целью дальнейшей интеграции другими сотрудниками информации из форм обратной связи в 1С.

Для начала, на сайте, где я внедрял данное решение, изначально использовались контактные формы с отправкой в Telegram, а позднее совместил с отправкой данных на электронную почту.
Статья, по которой я делал отправку данных в Telegram — https://smartlanding.biz/otpravka-dannyx-formy-v-telegram.html
Статья, в которой объясняется, как отправлять данные форм на имейл — https://smartlanding.biz/sozdanie-formy-obratnoj-svyazi.html
Благодарю Дмитрия Давыдова за проделанную работу и за наиподробнейшие объяснения в его статьях!
Теперь к сути вопроса, выполнив все шаги из статей выше и создав контактные формы, появилась потребность отправлять данные в бд MySQLi.
Шаг № 1 — Создание таблицы в базе данных, куда будут записываться данные.
Заходим в PHPMyAdmin, где создаем таблицу с произвольным именем, например, contact_telegram . Создаем необходимые поля (столбцы таблицы) — name, phone, text, theme и т.п. поля. Полей может быть столько, сколько Вам потребуется. Пишем запрос SQL:
CREATE TABLE `contact_telegram` (
`id` int(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`phone` varchar(64) NOT NULL,
`theme` varchar(255) NOT NULL,
`text` text NOT NULL,
`contact_date` TIMESTAMP DEFAULT NOW()
)
Далее выставил ко всем полям стандарт UTF-8 для корректного отображения данных (в SQL вставляем после закрытия скобок DEFAULT CHARSET=utf8; или в параметрах таблицы ручками выставляем UTF-8 в PHPMyAdmin.
`contact_date` TIMESTAMP DEFAULT NOW() — это создание столбца contact_date с автоматическим временем создания строки в БД. Например, клиент отправил заявку в 18:30 3 августа 2022 года, время присваивается сразу же, как заявка попадает в бд, т.е., считайте в момент отправки. Данные в ячейке будут отображаться примерно так: 2022-08-03 18:30:41 .
`id` int(20) NOT NULL PRIMARY KEY AUTO_INCREMENT — это автозаполнение и присваивание каждой заявке идентификатора в хронологическом порядке (по дате добавления), от 1 и далее.
Шаг № 2 — внедрение кода в обработчик send-message-to-telegram.php из статей Дмитрия.
Ищем строки № 29-30:
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// Проверяем не пусты ли поля с именем и телефоном</mark>
if(!empty($_POST['name']) && !empty($_POST['phone'])) {
После строки:
$txt .= "Имя пославшего: " . strip_tags(trim(urlencode($_POST['name']))) . "%0A";
Вставляем туда следующий код:
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// отправка сообщения в бд MySQL </mark>
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// Параметры для подключения к бд </mark>
$conn = new mysqli("localhost", "username", "password", "dbname", "port");
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// переменные из контактной формы</mark>
$tg_name = $conn->real_escape_string($_POST["name"]);
$tg_phone = $conn->real_escape_string($_POST["phone"]);
$tg_theme = $conn->real_escape_string($_POST["theme"]);
$tg_text = $conn->real_escape_string($_POST["text"]);
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// запись данных из формы в соответствующие столбцы в бд</mark>
$sql = "INSERT INTO contact_telegram (name, phone, theme, text) VALUES ('$tg_name', '$tg_phone', '$tg_theme', '$tg_text')";
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-white-color">// проверка на ошибки в соединении с бд</mark>
if($conn->query($sql)){
$tgcatconn = "Данные успешно добавлены";
} else{
$tgcatconn = "Ошибка: " . $conn->error;
}
$conn->close();
В комментариях к коду видно, за что отвечает каждый фрагмент кода. Возможно написано все не самым лучшим образом, но данное решение работает. Другие способы у меня попросту не срабатывали.
Важно! Если у Вас база данных не MySQLi, а MySQL или иная — способ подключения к бд и проверка соединения могут отличаться. Но принцип работы остается тем же.
Изучив статьи Дмитрия, а так же и мою статью — Вы получите способ отправки контактных данных в Телеграм, имейл и базу данных.
Если же Вы НЕ используете упомянутые в статье отправки контактных форм, то вам необходимо будет упаковать шаг №2 в php-файл, создать контактную форму и подключить в нее созданный вами php-обработчик.
Примеры статей, как сделать данную функцию другим способом:
— https://makecodes.ru/72-php-forma-obratnoj-svjazi-na-php-s-bazoj-dannyh-mysql-i-proverkoj-jquery.html
— https://daruse.ru/zapis-V-bazu-dannyix-mysql-php-formu
Дата создания статьи: 14.08.2022
Рубрика: Веб-разработка