Задать вопрос
@zitape

Как получать данные из формы на сайте в разные таблицы БД?

Начну сначала, я делаю сайт в котором одна из главных функций это заполнение заявок гостем (Заявка на продукт вроде: Оставляю заявку на приобретение кредита или Заявка на оформление банковской карты). В предыдущем вопросе мне подсказали какие таблицы, с какими полями сделать, и как организовать хранение данных о заявках и клиентах, не знаю правильно ли я в итоге это сделал или нет, надеюсь знающие здесь посмотрят и ответят, правильно или нет.
В базе данных phpmyadmin сейчас есть следующие таблицы:

6480e0543318a721220704.png
Мне нужно как-то связать эти таблицы, если я правильно понимаю то таблица users будет связана с помощью первичного ключа id с таблицей application_product и полем user_id, и с таблицей application_back_call точно также полем user_id. Как сделать так, чтобы после заполнения заявки гостем например на продукты, данные которые он отправил, а именно Имя(name), email(Электронная почта), и сообщение(message) перемещались в разные таблицы, и насколько я понимаю из этих данных должна формироваться заявка в таблице application_back_call?

Код формы для заявки

<form method="POST" action="">
    <p>Имя</p>
    <input name="name" required="" type="text">
    <p>Электронная почта</p>
    <input name="email" type="text" required=""><br>
    <textarea name="message" cols="30" rows="10"></textarea>
    <input name="submit" type="submit" value="Отправить">
</form>


Это php код, который я написал для того чтобы данные отправлялись по разным таблицам, но видимо я не понимаю как это работает, потому что когда я ввожу Имя, Почту и сообщение они отправляются только в таблицу users, а в таблице message ничего не появляется, а по идее как я предполагал должна формировать заявка на продукт

$db_connect = mysqli_connect('localhost', 'root', '', 'testdb') or die ("Не могу создать соединение");

$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['phone_number'];
$message = $_POST['message'];
$submit = $_POST['submit'];

if(isset($submit))
{
    if(isset($name) && isset($email))
    {
        $query = "INSERT INTO `users`(`name`, `email`, `phone_number`) VALUES ('{$name}','{$email}', '')";
        if(mysqli_query($db_connect, $query));
    }

    if(isset($message))
    {
        $query2 = "INSERT INTO `application_product`(`id`, `user_id`, `message`, `message_date`) VALUES ('', '', '{$message}')";
        if(mysqli_query($db_connect, $query2));
    }
}


Я на 100% уверен что в коде очень много ошибок, в php я полный профан, поэтому не судите строго.
Я попытался максимально правильно выразиться, поэтому если можете мне помочь, пожалуйста распишите максимально подробно если можете, как правильно распределить данные по таблицам и сформировать заявки помочь с кодом, и чтобы между таблицами были связи.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
if(isset($submit)) А если я не нажал кнопку, просто нажал ентер в любом поле?
$number = $_POST['phone_number'];Такого поля в форме вообще нет.
if(isset($name) && isset($email)) Ну допустим есть такие переменные, если в них не нэйм и емэйл то что делать? С мессажем та же фигня...

Запросы ВСЕГДА должны выполняться через подготовленные выражения.
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
При добавлении набора данных в связанные таблицы (а по большому счёту - вообще всегда) следует забыть о существовании INSERT .. VALUES и пользоваться исключительно INSERT .. SELECT. Первый запрос вставляет запись в основную таблицу, второй вставляет в зависимую, получая необходимое для связывания значение из основной по известным критериям отбора (по только что вставленным значениям, либо, в случае MySQL, из LAST_INSERT_ID).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы