HTML-форма с несколькими вариантами отправки - PullRequest
2 голосов
/ 23 апреля 2010

Я пытаюсь создать небольшое веб-приложение, которое используется для удаления элементов из таблицы MySQL.Он просто показывает элементы в таблице HTML и для каждого элемента кнопку [delete]:

item_1 [delete]
item_2 [delete]
...
item_N [delete]

Чтобы добиться этого, я динамически генерирую таблицу с помощью PHP в форму HTML.Эта форма имеет тогда явно N [delete] кнопки.Форма должна использовать POST-метод для передачи данных.

Для удаления я хотел передать ID (первичный ключ в таблице MySQL) соответствующего элемента в исполняемый скрипт php.Поэтому я ввел hidden поля (все эти поля имеют name='ID', в котором хранится ID соответствующего элемента.

Однако при нажатии произвольного [delete] кажется, что он всегда передает толькоlast ID (т. е. значение последнего ID скрытого поля).

Можно ли отправить только поле ID соответствующего элемента без использования нескольких форм? Или возможно лиотправлять данные из нескольких форм с помощью только одной кнопки отправки? Или я должен даже выбрать какой-то совершенно другой способ?

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

Ответы [ 3 ]

5 голосов
/ 23 апреля 2010
<input type="submit" name="delete[1]" value="delete">

if (isset($_POST['delete'])) $id=key($_POST['delete']);
3 голосов
/ 23 апреля 2010

кажется, что всегда отправляется только последний идентификатор

Он отправляет все из них, но поскольку имя не заканчивается на [], PHP отбрасывает все до последнего.

Можно ли отправить только поле идентификатора соответствующего элемента без использования нескольких форм?

Нет. По крайней мере, без некоторого неудачного JavaScript. Все (не отключенные) скрытые вводы (с именами и значениями) будут успешными. Вы не можете ограничивать в зависимости от близости к нажатому элементу ввода.

Если я правильно понимаю ваши цели, у вас есть два основных варианта.

  1. Поместить одну форму в строку (в ячейку с кнопкой удаления)
  2. Кодировать значение идентификатора в название кнопки отправки
1 голос
/ 23 апреля 2010

Вы можете избавиться от скрытых полей и назвать кнопки отправки следующим образом:

<input type="submit" name="delete[1]" />
<input type="submit" name="delete[2]" />
<input type="submit" name="delete[3]" />

, а затем

<?php

if (isset($_POST['delete'])) {
   $toDeleteId = key($_POST['delete']);
}
...