Php не видит name из html. Уверен, что все верно написано. Что делать?
Написал простенький сайт, который должен отправлять данные в бд, но пхп ничего не видит и я не понимаю почему.
Облазил множество разных ресурсов, но решения проблемы так и не нашел
<form action="index.php" method="POST"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" class="form-control" id="exampleFormControlInput1" placeholder=""> </div> </div> </div> </div> </section> </form> |
<form action="index.php" method="POST"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" class="form-control" id="exampleFormControlInput1" placeholder=""> </div> </div> </div> </div> </section> </form>
<?php include('index.html'); $mysqli = @new mysqli('localhost', 'root', '', 'money_dealer'); if (mysqli_connect_errno()) { echo "Подключение невозможно: ".mysqli_connect_error(); } var_dump($_POST); $type = $_POST['type']; $email = $_POST['email']; $tg = $_POST['tg']; $question = $_POST['question']; $deadline = $_POST['deadline']; ?> |
<?php include('index.html'); $mysqli = @new mysqli('localhost', 'root', '', 'money_dealer'); if (mysqli_connect_errno()) { echo "Подключение невозможно: ".mysqli_connect_error(); } var_dump($_POST); $type = $_POST['type']; $email = $_POST['email']; $tg = $_POST['tg']; $question = $_POST['question']; $deadline = $_POST['deadline']; ?>
Дополнительно:
@new mysqli убери собаку и посмотри что будет
Это, конечно, идиотский способ подключения, но добавление или убирание собаки на нем вообще никак не скажется
Плюс у автора проблема вообще не с БД
Warning: Undefined array key "type" in D:XAMPhtdocsBoostrapindex.php on line 12
Warning: Undefined array key "email" in D:XAMPhtdocsBoostrapindex.php on line 13
Warning: Undefined array key "tg" in D:XAMPhtdocsBoostrapindex.php on line 14
Warning: Undefined array key "question" in D:XAMPhtdocsBoostrapindex.php on line 15
Warning: Undefined array key "deadline" in D:XAMPhtdocsBoostrapindex.php on line 16
Ошибки, если кому интересно
Подсказка: это важный вопрос, подумав над которым, вы решите свою проблему
добавьте if
так же не понятно зачем подключать index.html
пысы: id должен быть уникальным
spoiler
<form action="test2.php" method="POST"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" class="form-control" id="exampleFormControlInput1" placeholder=""> </div> <input type="submit" value="Send"> </div> </div> </div> </section> </form> // Как минимум так. Но оно все равно может выдать ошибку если одно из полей будет не заполнено. Ну ты понял в какую сторону смотреть я надеюсь if(!empty($_POST)) { $type = $_POST['type']; $email = $_POST['email']; $tg = $_POST['tg']; $question = $_POST['question']; $deadline = $_POST['deadline']; } |
<form action="test2.php" method="POST"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" class="form-control" id="exampleFormControlInput1" placeholder=""> </div> <input type="submit" value="Send"> </div> </div> </div> </section> </form> // Как минимум так. Но оно все равно может выдать ошибку если одно из полей будет не заполнено. Ну ты понял в какую сторону смотреть я надеюсь if(!empty($_POST)) { $type = $_POST['type']; $email = $_POST['email']; $tg = $_POST['tg']; $question = $_POST['question']; $deadline = $_POST['deadline']; }
то что нет кнопки сабмита - это ладно.
А вот то что он переживает, что из формы ничего не пришло, не отправив её - это, конечно, фиаско.
Вот вы сейчас написали комментарий здесь. Можете вспомнить свои действия?
А со своей формой вы что-то подобное делали?
вот это
Речь про отправку формы.
Про действия, который человек производит с формой.
ЧЕЛОВЕК.
Еще раз смотрим сюда, на эту форму для комментариев.
И на свои действия при отправке комментария. Не на код, а на свои действия.
Что-то там с кнопочками на клавиатуре и мышке.
СО СВОЕЙ ФОРМОЙ ВЫ ЧТО-ТО ПОДОБНОЕ ДЕЛАЛИ?
<form name ="feedback" method="POST" action="index.php"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" value="" id="exampleFormControlInput1" placeholder=""> </div> </div> </div> <button type="button" name="submit" class="btn btn-outline-primary">Отправить</button> </div> </section> </form> |
<form name ="feedback" method="POST" action="index.php"> <section class="Zakaz"> <div class="container"> <div class="row"> <div class="col-12"> <select name = "type" class="form-select" aria-label="Default select example"> <option selected>Выберите тип задания(Если тип не будет выбран, то ваше задание попадет в небытие)</option> <option value="1">Практика</option> <option value="2">Практическая</option> <option value="3">Отчет</option> <option value="4">База данных</option> </select> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Почта</label> <input type="email" name ="email" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="name@example.com"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Телеграм(@...)</label> <input name="tg" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="@name"> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Опишите задание(не более двухста символов)</label> <input name = "question" type="text" class="form-control" id="exampleFormControlInput1" maxlength="200" placeholder="Ваше задание..."> </div> <div class="mb-3"> <label for="exampleFormControlInput1" class="form-label">Дедлайн(за срочность идет доплата в 300руб)</label> <input name = "deadline" type="date" value="" id="exampleFormControlInput1" placeholder=""> </div> </div> </div> <button type="button" name="submit" class="btn btn-outline-primary">Отправить</button> </div> </section> </form>
Вот новый код с кнопкой, но ошибка та же. Я решил дописать отправку формы в базу, но приходит пустота. Пхп не видит ame инпутов
При чем здесь код с кнопкой если речь про ДЕЙСТВИЯ ЧЕЛОВЕКА
С чего вы взяли, что он отправляет форму?
в index.php сделай $postData = file_get_contents('php://input'); file_put_contents('post.log', $postData); и посмотри лог что приходит. Если ничего тогда структуру файлов в студию
Для решения этой задачи, над которой бьется уже десяток специалистов, автору нежно просто отправить форму на сервер.
Оно все лежит вместе. Все связано.
Я пробовал прописать весь этот код вместе(в одно файле), но ошибке все те же
Спасибо огромное
Но проблема с этим бутоном - вторая.
А основная была в том, что он искал данные формы, вообще её не отправляя.
не более двухста
не более двухсот
Ну видно же что человек только начал разбираться, что вы на него все набросились.
PabloEscobar213, смотри, у тебя тут куча ошибок. Начнем с азов.
1) Форма считается отправленной только после того как ты нажал кнопку типа submit и данные ушли на сервер (есть другие способы, но мы их сейчас трогать не будет). Кнопку, как вижу, ты уже добавил. Но теперь надо на нее кликнуть. что бы данные из формы ушли на сервер.
2) Дальше. Вывод формы в браузер и обработка/отправка данных это разные действия. И они могут быть в разных файлах. Например если бы у тебя форма была в index.html, а отправлял ты ее в send.php, а потом делал бы редирект обратно на форму, то все было бы проще.
Но ты сделал все в одном файле. Значит что? Значит в коде надо понимать когда именно ты отправляешь данные. Тебе про это выше писали. Сейчас ты видишь ошибки на этапе отображения формы, а не отправки. В коде надо проверять что суперглобальный массив $_POST не пустой или что ты отправляешь данные через метод POST.
if ($_POST) { // Здесь пишешь код подключения к базе и отправке } |
if ($_POST) { // Здесь пишешь код подключения к базе и отправке }
- Маленькое уточнение. Кнопку он добавил. Но не ту. На неё хоть обкликайся, на сервер ничего не уйдет. Это его подкосило во второй раз. Нетренированным взглядом действительно сложно увидеть, что форма не отправляется. А вот после того, как он поменял тип кнопки, у него всё заработало.
- Да, действительно. Правильная кнопка должна быть такой
<button type="submit" name="submit" class="btn btn-outline-primary">Отправить</button>
<button type="submit" name="submit" class="btn btn-outline-primary">Отправить</button>
а не type="button"
-
Ну видно же что человек только начал разбираться, что вы на него все набросились.
изначально у вопроса была средняя сложность
- Антон Шаманов, у кого-то хлеб черствый, у кого-то жемчуг мелкий. Все относительно.
- YepBro, Хрень, это же база. Надеюсь не надо объяснять, почему не стоит есть желтый снег? Или стоит?
при нормальном раскладе должна быть кнопка submit для отправки формы, а также проверка
if (!empty($_POST)) { // действия с полученными данными } |
if (!empty($_POST)) { // действия с полученными данными }
т.к. по умолчанию страница загружается GETом
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для того чтобы PHP мог видеть переменные, переданные из HTML формы через атрибут name, необходимо убедиться, что форма отправляется методом POST или GET и что каждый элемент формы имеет уникальное значение атрибута name.
Вот пример HTML формы:
<button type="submit">Submit</button><button type="submit">Submit</button>
Затем в файле process.php вы можете получить значения переменных с помощью суперглобального массива $_POST:
$username = $_POST['username']; $email = $_POST['email'];
Убедитесь, что вы используете правильные имена переменных в массиве $_POST, которые соответствуют значениям атрибута name в вашей HTML форме. Также удостоверьтесь, что вы отправляете форму на правильный адрес в атрибуте action вашей формы.
Если после этого проблема остается, проверьте ваши настройки сервера, чтобы убедиться, что PHP сконфигурирован правильно для обработки данных из HTML форм.