Обработка форм PHP - как захватить текст из поля, которое имеет переменную Name / ID - PullRequest
0 голосов
/ 20 апреля 2010

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

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

Я знаю, как сделать _Request для других полей на основе идентификатора, но я не уверен, как это сделать. Идентификатор меняется. Это может быть ID = 1, ID-2 и т. Д.

Мне нужно сделать что-то вроде: _REQUEST элемент формы, где ID похож на "ID [*]" или что-то подобное.

Есть предложения или ссылки на учебники?

Вот несколько примеров того, что выпадающий отображает на странице:

<div class="wrapperAttribsOptions">
<h4 class="optionName back"><label class="attribsSelect" for="attrib-  1">Model</label></h4>
<div class="back">
<select name="id[1]" id="attrib-1">
    <option value="45">VC3-4C</option>
    <option value="1">VC3-4PG</option>
    <option value="3">VC3-4SG</option>

<div class="wrapperAttribsOptions">
<h4 class="optionName back"><label class="attribsSelect" for="attrib-14">SPK   Model</label></h4>

<div class="back">
<select name="id[14]" id="attrib-14">
    <option value="43">SPK-4</option>
    <option value="44">SPK-8</option>
</select>

ТИА

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

Скобки [] означают, что PHP создаст переменную-массив с опубликованными значениями. Таким образом, вы должны иметь $_REQUEST['id'] в качестве массива. Должно быть значение, введенное числом в форме ($_REQUEST['id'][1] в первом примере, $_REQUEST['id'][14] во втором).

Если будет только одно значение (вы не говорите, что пытаетесь сделать с этими значениями), тогда вы можете просто сдвинуть его с массива.

$value = array_shift($_REQUEST['id']);

Если будет несколько значений, вы можете просмотреть их:

foreach($_REQUEST['id'] as $number => $value) { ... }
1 голос
/ 20 апреля 2010

РЕДАКТИРОВАТЬ: Скотт Сондерс прав, PHP автоматически создаст массив для вас. Если по какой-то причине его код не работает, ниже все равно может применяться (может отличаться в зависимости от конфигурации PHP).

Самый простой способ - использовать регулярное выражение:

foreach($_REQUEST as $key => $value)
{
    if(preg_match("/id\[[0-9]*\]/", $key))
    {
        // $key now contains the name, and $value the value.
    }
}

Предполагается, что идентификатор всегда будет числовым.

0 голосов
/ 20 апреля 2010

Если имеется большое количество полей или значения идентификатора не могут быть известны, я бы следовал ответу Арды.

Альтернатива заключается в прямом опросе коллекции идентификаторов:

$id_1 = $_POST['id'][1];
$id_14 = $_POST['id'][14];

Все элементы, отправленные на сервер с квадратными скобками в названии, преобразуются в массив. Уже указав индекс, как вы уже сделали, может быть более полезным в зависимости от ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...