有没有办法只从表单中选择输入?

时间:2014-11-21 17:53:30

标签: php select post input

我需要通过POST从许多选项中获取名称和值,如下所示:

foreach ($_POST as $key => $value) {
    // do stuff
}

问题是我在同一个表单中有其他输入类型,例如复选框。我想进入这个foreach只有选择(我不能通过名称调用'每个选择有一个名称)

4 个答案:

答案 0 :(得分:2)

我想如果您的所有参数都在数组中,那么您可以在HTML中使用以下内容:

<input type="text" name="data['first_name']" value="something"/>
<input type="text" name="data['last_name']" value="somethingElse"/>

在您的PHP代码中,您可以像这样使用foreach:

foreach( $_POST['data'] as $data )
{
    var_dump($data);
}

答案 1 :(得分:0)

输入元素类型不会与POST数据一起发送到服务器。只有名称和值。

区分的唯一方法是发送其他数据,例如列表,或者以不同方式命名输入。

但实际上,你不应该发布你不关心的数据。节省带宽,隐藏POST上无处可用的元素。

答案 2 :(得分:0)

唯一可以做到服务器端的方法是确切地知道选择了哪些输入并迭代这些输入。

$selects = array('select1', 'select2', ...);
foreach ($selects as $select) {
    $value = $_POST[$select];
    // do stuff
}

答案 3 :(得分:0)

如果您知道选择内部表单的名称,则可以执行此操作

您的HTML:

<form>
<select name='selectName1'>
<option value='xx'>xx</option>
<option value='xx'>xx</option>
</select>
<select name='selectName2'>
<option value='xx'>xx</option>
<option value='xx'>xx</option>
</select>
</form>

您的PHP代码

$arraySelect = array('selectName1', 'selectName2', ...);

foreach($_POST as $key=>$value)
    if(in_array($key, $arraySelect))
       $$key = $value; //this will create a variable with the name you use, in this case $selectName1, $selectName2. And the option the user selected will be assigned.