Запись данных из контактных форм в базы данных MySQLi | NikonoroW.ru

Запись данных из контактных форм в базы данных 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

Рубрика: Веб-разработка

Комментарии

Оставьте Ваше сообщение

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии

Смотрите далее

Ознакомьтесь с другими работами

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x