Как узнать кнопку из формы, которая запустила PHP скрипт?

255
26 января 2018, 21:45

Здравствуйте, имеется более 100 записей (которые, естественно, выведены автоматом через php). В каждой записи есть своя форма вида:

<form action="#" method="post">
                <div>
                    <input type="text" class="in_name" id="edit" value="" placeholder="Введите измененный текст..." tabindex="1" />
                </div>
                <div>
                    <input type="submit" id="btn" name="'.$id.'" class="action-button" value="Изменить" />
                </div>
            </form>

Как можно задетектить какая именно была нажата кнопка и передать ее значение вместе с Input текстом в PHP скрипт?

Код вида:

if( isset( $_POST['Какая-то кнопка'] ) ){
Бла; бла; бла;
}

как понимаете, трудновато вставлять 100 раз для каждой записи...

Answer 1

У вас в форме только одна кнопка. В тех случая когда в форме больше одной кнопки и необходимо различать нажатия, то к каждой кнопке добавляют атрибут name, в котором указывают название кнопки. Здесь, я так понимаю, вы хотите получать идентификатор записи, к которой был добавлен введенный текст. Это можно удобно сделать через скрытое поле:

<input type="hidden" name="id" value="<?= $id ?>">

На серверной стороне это значение вы сможете использовать через глобальный массив пост:

$_POST['id']
Answer 2

Кнопки отправки формы могут быть полноценным полем с полноценным значением:

<button type="submit" name="item_id" value="345">Изменить запись 345</button>
<button type="submit" name="item_id" value="678">Изменить запись 678</button>

Потом в PHP достаёте $_POST['item_id'] и всё. При этом неважно, одна большая форма у вас или много маленьких. Впрочем, для кучки маленьких форм можно сделать и hidden-поле, как предлагают в соседнем ответе.

P.S. id="edit" и id="btn" уберите, повторение id в html-коде запрещено.

P.P.S. Атрибут action из формы лучше тоже убрать. Его отсутствие автоматически означает, что POST-запрос нужно отправить на текущий адрес.

Answer 3

Согласен с автором выше, у вас только одна кнопка и в зависимости от тэга name этой кнопки будет доступен в глобальном массиве $_POST или $_GET

READ ALSO
Как сделать бэкграунд

Как сделать бэкграунд

Не могу понять каким образом создавать подобные бэкграунды не используя заранее заготовленное изображение

343
Как лучше использовать React.js?

Как лучше использовать React.js?

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

209
как загрузить изображение с компьютера? [требует правки]

как загрузить изображение с компьютера? [требует правки]

надо сделать, чтобы изображение с компьютера отображалось на странице

193
HTML теги (микроразметка) WordPress

HTML теги (микроразметка) WordPress

У товара имеется атрибут:

253