Отправить имя кнопки, как и другие входные имена в форме

Я провел час, ломая голову почти с пустым $_POST после отправки формы. Там простая сетка данных, я выбираю строку, JS заполняет все входы, кнопка отправляет информацию в edit.php

Внутри формы каждый вход (text/textarea/etc) имеет имя как publication[image], publication[text] и наконец type="submit" с name = "publication", Поскольку публикация - это текущее имя таблицы, изображения и имена текстовых полей. Текущая таблица может быть любой.

С каким-то столом все было хорошо. Но некоторые из них дали мне $_POST только с именем кнопки отправки и ее value = "Ok", Методом обезьяны я обнаружил, что если я изменю имя кнопки "Отправить" на что-то вроде "Updaterow", то $_POST заполнено точно так, как ожидалось для любой таблицы.

Но что, если я столкнусь с таблицей под названием "Updaterow" или с таким "полезным_имя_для_субмит_буттон"?

И почему я не смог назвать кнопку, как у других входов, но без квадратных скобок? И почему, когда я сделал это, $_POST ничего не сделал, кроме имени кнопки показа. Я посмотрел на заголовки http - все они правильно отправились на сервер.

Могу ли я вообще неправильно вводить имена? Спасибо заранее.

3 ответа

Это не имеет ничего общего с HTML или HTTP; Вот как PHP обрабатывает PHP. Вы не можете иметь два одинаковых ключа в массиве ассоциативных данных в PHP. Если вы это сделаете, второй либо заменит первый, либо игнорируется.

Другими словами, вы должны рассматривать имена входных данных как ключи массива PHP (или двумерные массивы, когда используете квадратные скобки).

Для элементов типа ввода, таких как текст, текстовое поле и т. Д., Вы используете публикацию в качестве массива, который будет содержать несколько значений, а для кнопки отправки он не используется в качестве массива, который будет содержать только одно значение. Таким образом, значения $_POST будут возвращать значения, которые находятся в последней форме.

Если кнопка подтверждения указана в верхней части текста, текстовой области и т. Д., Значения $_POST будут возвращать значения массива.

Попробуйте использовать другое имя для кнопки отправки или используйте имя кнопки отправки в качестве публикации [submit]

<form name="form_submit" method="post" action="">           
<input type="text" name="publication[title]" />
<input type="text" name="publication[text]" />
<input type="submit" value="Submit" name="publication[submit]" />
</form>

который будет возвращать все значения в форме как массив ( [публикация] => массив ( [заголовок] => тест [текст] => тест [отправить] => отправить))

Изменить или удалить ваше имя ввода

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