POST-запрос не получен

Итак, у меня есть эта форма для добавления человека в базу данных:

<div id = "formDiv">
        <form id = "form1" method = "post" action = "#">
            <input type = "text" name = "title" placeholder = "Title">
            <br>
            <input type = "text" name = "firstname" placeholder = "First Name">
            <br>
            <input type = "text" name = "lastname" placeholder = "Last Name">
            <br>
            <input type = "text" name = "group" placeholder = "Group">
            <br>
            <input type = "text" name = "company" placeholder = "Company">
            <br>
            <select name = "sex" required>
                <option value = "" disabled selected>Sex/option>
                <option value = "male">male</option>
                <option value = "female">female</option>
            </select>
            <br>
            <button type = "submit" id = "insert" name = "insert">Insert</button>
        </form>
        </div> 

И файл php, который обрабатывает вставку данных в базу данных:

<?php
    include($_SERVER['DOCUMENT_ROOT'].'/website/dbConnection.php');
    include($_SERVER['DOCUMENT_ROOT'].'/website/administrator/components/com_backend/backend.php');

    if (isset($_POST['insert'])){
        $title = $_POST['title'];
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];
        $group = $_POST['group'];
        $company = $_POST['company'];
        $sex = $_POST['sex'];

        if ($sex == "male"){
            $sex = 0;
        }
        else{
            $sex = 1;
        }

        $query    = "INSERT INTO members (Title, Firstname, Lastname, Group, Company, Sex) 
             VALUES('$title', '$firstname', '$lastname', '$group', '$company', '$sex')";

        mysqli_query($GLOBALS['connect'], $query);
    }

Я знаю, что между двумя файлами существует проблема. Потому что 2-й файл не получает POST от 1-го файла.

Когда я использую первый файл и нажимаю кнопку отправки, он перезагружает страницу и ничего не вводит в базу данных.

Когда я перехожу непосредственно ко второму файлу, я могу использовать форму, так как я включаю первый файл. Итак, я заполняю форму, нажимаю кнопку отправки и, как по волшебству, там все работает!

Я проверял путь при включении 1-го файла 100 раз. Это верно. Я 100 раз проверял путь при подключении к базе данных. Это верно. Я выполнил запрос прямо в своей базе данных. Это верно.

Я предполагаю, что совершил небольшую ошибку, которую не могу заметить, но код настолько мал и прост, что это просто невозможно.

вы можете отправлять пол в виде значений: <option value = "0"> male </option> <option value = "1"> female </option>

TsV 30.08.2018 11:59

я думаю, тебе следует перезапустить свой сервер

Bilal Ahmed 30.08.2018 11:59

Ваш php ожидает поле формы с именем insert, но кнопка без атрибута value не отправляет значение на сервер, поэтому условие if (isset($_POST["insert"])) не выполняется.

James 30.08.2018 12:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
<form id = "form1" method = "post" action = "your_php_file.php">

Это укажет на ваш php-файл и отправит запрос POST от вашего внешнего интерфейса к внутреннему. Согласно вашему коду, вы ничего не отправляете в свой php файл. Таким образом, код, который у вас есть, может работать, но ваш запрос никогда не отправляется в ваш php-файл, поэтому в базу данных ничего не помещается.

Редактировать

Чтобы не перезагружать страницу, как вы просили, вы не должны отправлять форму, но вы должны сделать ajax-вызов на стороне сервера.

  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div id = "formDiv">
    <input type = "text" name = "title" placeholder = "Title">
    <br>
    <input type = "text" name = "firstname" placeholder = "First Name">
    <br>
    <input type = "text" name = "lastname" placeholder = "Last Name">
    <br>
    <input type = "text" name = "group" placeholder = "Group">
    <br>
    <input type = "text" name = "company" placeholder = "Company">
    <br>
    <select name = "sex" required>
        <option value = "" disabled selected>Sex/option>
        <option value = "male">male</option>
        <option value = "female">female</option>
    </select>
    <br>
    <button type = "button" id = "insert" name = "insert">Insert</button>
</div>


<script>


    $( "#insert" ).click(function() {
        let title = $("input[name=title]").val();
        let firstname = $("input[name=firstname]").val();
        let lastname = $("input[name=lastname]").val();
        let group = $("input[name=group]").val();
        let company = $("input[name=company]").val();
        let sex = $("input[name=sex] option:selected").text();


        $.ajax({
            method: 'POST',
            url: 'your_php_file.php',
            data: {'title': title, 'firstname': firstname, 'lastname': lastname, 'group': group, 'company': company, 'sex': sex},
            success: function (response) {
                console.info(works)
            },
            error: function (jqXHR, textStatus, errorThrown) {
                console.info(JSON.stringify(jqXHR));
                console.info("AJAX error: " + textStatus + ' : ' + errorThrown);
            }
        });
    })
</script>

Таким образом, данные будут отправлены на ваш сервер, и вы сможете обрабатывать их так же, как и вы. Он в формате json, поэтому не забудьте при необходимости декодировать.

Да, я думал об этом, но проблема в том, что затем он переходит к этому файлу в браузере. Я хотел бы отправить запрос, но оставайтесь на месте. Как это сделать?

w00ds98 30.08.2018 11:58

@ w00ds98, затем используйте концепцию отправки формы ajax

Anant Kumar Singh 30.08.2018 11:58

Это другое дело. В этом случае вам понадобится ajax, если вы не хотите, чтобы ваша страница обновлялась.

pr1nc3 30.08.2018 11:59

О, так я использую неправильную технологию. Да, я работаю с Ajax на своем веб-сайте, но предполагал, что это будет работать без перехода на другую страницу. Спасибо! Я буду гуглить!

w00ds98 30.08.2018 12:00

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

pr1nc3 30.08.2018 12:01
    <div id = "formDiv">
        <form id = "form1" method = "post" action = "#">
            <input type = "text" name = "title" placeholder = "Title">
            <br>
            <input type = "text" name = "firstname" placeholder = "First Name">
            <br>
            <input type = "text" name = "lastname" placeholder = "Last Name">
            <br>
            <input type = "text" name = "group" placeholder = "Group">
            <br>
            <input type = "text" name = "company" placeholder = "Company">
            <br>
            <select name = "sex" required>
                <option value = "" disabled selected>Sex/option>
                <option value = "0">male</option>
                <option value = "1">female</option>
            </select>
            <br>
            <button type = "submit" id = "insert" name = "insert">Insert</button>
        </form>
    </div>
<script>
    $('#form1').submit(function (e) {

    e.preventDefault();
        var senddata = $(this).serializeArray();
        var sendto = $(this).attr("action");

    $.ajax({
        url: sendto,
        type: 'POST',
        data: senddata,
            success: function (data) {
            $('.messages').html(data);
            },
            error: function (error) {
            $('.messages').html(error);
            }
        });
    });
</script>

Другие вопросы по теме