PHP表单处理 - 如何从具有变量名称/ ID的字段中捕获文本

时间:2010-04-19 20:40:41

标签: php forms

我有一个表单,其中包含从数据库中拉出的字段作为下拉列表。我需要在下拉列表中选择文本,但我事先并不知道字段ID是什么。

这基本上只是一个已生成的表单。我不需要从数据库中提取任何内容,它已经在此页面上。我需要做的就是获取表单信息并通过电子邮件发送,不要写入数据库。

我知道如何基于ID为其他字段执行_Request,但我不知道如何做到这一点。 ID更改。它可以是ID = 1,ID-2等。

我需要执行以下操作:_REQUEST表单元素,其中ID为LIKE“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>

TIA

3 个答案:

答案 0 :(得分:1)

编辑: Scott Saunders是对的,PHP会自动为您创建一个数组。如果由于某种原因他的代码不起作用,下面的代码可能仍然适用(可能因PHP配置而异)。

最简单的方法是使用正则表达式:

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

这假设id始终是数字。

答案 1 :(得分:1)

括号[]表示PHP将使用已发布的值创建数组变量。所以你应该将$_REQUEST['id']作为一个数组。应该有一个值由表单中的数字键入(第一个示例中为$_REQUEST['id'][1],第二个示例中为$_REQUEST['id'][14])。

如果只有一个值(你没有说明你要对这些值做什么),那么你可以将它从阵列中移开。

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

如果有多个值,您可以遍历它们:

foreach($_REQUEST['id'] as $number => $value) { ... }

答案 2 :(得分:0)

如果有大量字段或无法识别id值,我会按照Arda的回答。

另一种方法是直接询问id集合:

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

在名称中使用方括号发布到服务器的所有项目都将转换为数组。正如您所做的那样,已经指定了索引,根据需要可能会更有利。