Отправка данных из формы в бд

158
11 декабря 2019, 04:20

Уже задавал ранее, но так и не разобрался. 1. Есть HTML-страница, на которой есть форма и кнопка "отправить". В данный момент кнопка отправить передаёт данные на mail.php и письмо отправляется на email. 2. Есть php-файл, в котором есть всё нужное для записи данных из формы в БД. Вот фрагмент html формы (укоротил, там и так всё понятно).

<form method="POST" action="mysql.php" class="callback form-order">
<div class="row">
                            <div class="col-md-3">
                                <label>
                                    <p>Имя:</p>
                                    <input type="text" name="name" placeholder="Имя" required>
                                </label>
                            </div>
                            <div class="col-md-3">
                                <label>
                                    <p>Фамилия:</p>
                                    <input type="text" name="surname" placeholder="Фамилия" required>
                                </label>
                            </div>
<div class="text-center">
                            <button  class="button">Отправить</button>
                        </div>

Вот файл mail.php. В нём всё работает, письма уходят исправно.

 <?php

    $method = $_SERVER['REQUEST_METHOD'];

    //Script Foreach
    $c = true;
    if ( $method === 'POST' ) {
        $project_name = trim($_POST["project_name"]);
        $admin_email  = trim($_POST["admin_email"]);
        $form_subject = trim($_POST["form_subject"]);
        foreach ( $_POST as $key => $value ) {
            if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
                $message .= "
                " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
    } else if ( $method === 'GET' ) {
        $project_name = trim($_GET["project_name"]);
        $admin_email  = trim($_GET["admin_email"]);
        $form_subject = trim($_GET["form_subject"]);
        foreach ( $_GET as $key => $value ) {
            if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
                $message .= "
                " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
    }
    $message = "<table style='width: 100%;'>$message</table>";
    function adopt($text) {
        return '=?UTF-8?B?'.Base64_encode($text).'?=';
    }
    $headers = "MIME-Version: 1.0" . PHP_EOL .
    "Content-Type: text/html; charset=utf-8" . PHP_EOL .
    'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
    'Reply-To: '.$admin_email.'' . PHP_EOL;

       mail($admin_email, ado
    pt($form_subject), $message, $headers );
    ?>

И вот файл mysql.php

    <?php

//Параметры подключения в БД
$host = "11"; //имя хоста
$database = "11"; //имя базы
$user = "11"; //пользователь
$password = "11"; //пароль
$dbtable = "Users"; //таблица
if (isset($_POST['name'])){
//переменные с формы
$name = strip_tags(trim($_POST['name']));
$surname = strip_tags(trim($_POST['surname'];
$secondname = strip_tags(trim($_POST['secondname'];
$phone = strip_tags(trim($_POST['phone'];
$birthdate = strip_tags(trim($_POST['birthdate'];
$birhtplace = strip_tags(trim($_POST['birhtplace'];
$citizenship = strip_tags(trim($_POST['citizenship'];
$doc = strip_tags(trim($_POST['doc'];
$docid = strip_tags(trim($_POST['docid'];
$docpublish = strip_tags(trim($_POST['docpublish'];
$docdate = strip_tags(trim($_POST['docdate'];
$regterm = strip_tags(trim($_POST['regterm'];
$comment = strip_tags(trim($_POST['comment'];
$date = date("Y-m-d");
$time = date("H:i:s")
//установим соединение с бд
$link = mysqli_connect($host, $user, $password, $database)
    or die("Ошибка " . mysqli_error($link));
$sql = "INSERT INTO ".$dbtable." (order_date, order_time, name, surname, second_name, phone, birth_date, birht_place, citizenship, doc, doc_id, doc_publish, doc_date, term) VALUES ('$date', '$time', '$name', '$surname', '$secondname', '$phone', '$birthdate', '$birhtplace', '$citizenship', '$doc', '$docid', '$docpublish', '$docdate', '$regterm', '$comment')"
//внесём данные с формы в БД
$res = mysqli_query($sql) or trigger_error(mysqli_error()." in ". $sql);
mysqli_close($link);
}
?>

Вопрос заключается в том, как мне корректно передать данные из формы в БД через этот файл mysql.php чтобы одновременно ещё и письмо ушло через mail.php ? Не тыкайте меня, пожалуйста, а объясните подробно, что именно я делаю не так.

Добавляю скрипты js.

<script>
 window.dataLayer = window.dataLayer || [];
 function gtag(){dataLayer.push(arguments);}
 gtag('js', new Date());
 gtag('config', 'UA-135456404-1');
</script>

<script>
function gtag_report_conversion(url) {
var callback = function () {
if (typeof(url) != 'undefined') {
window.location = url;
}
};
gtag('event', 'conversion', {
'send_to': 'AW-760147299/6bfxCOvJm5YBEOPau-oC',
'transaction_id': '',
'event_callback': callback
});
return false;
}
</script>
Answer 1

Разобрался. Были синтаксические ошибки в php. Запрос к MySQL был составлен неверно, количество полей должно быть равно количеству values и столбцов за исключение id (автоинкремент).

READ ALSO
Не загружается вид laravel 5.7, ошибка Too few arguments to function e(), 0 passed in

Не загружается вид laravel 5.7, ошибка Too few arguments to function e(), 0 passed in

Я сделал обычный маршрут, чтобы просто возвращал мне вид через контроллер (если сделать функцию для маршрута и туда добавить: return view('manageraddworker');...

137
Два сайта на одном субдомене. Возможно ли?

Два сайта на одном субдомене. Возможно ли?

Есть сайт на субдомене, на нём уже установлен WordPress, но нужно ещё в этот же субдомен засунуть второй сайт на чистом phpПосоветуйте - возомжно...

125
INSERT в mysqli_multi_query

INSERT в mysqli_multi_query

Предположим есть запрос

164
Как правильно прописать путь к серверу для отправки сокета

Как правильно прописать путь к серверу для отправки сокета

Я делаю чат на сайте, и для этого у меня есть сервер или дежурный скрипт, который принимает сообщения и отправляет сообщения клиенту

153