访问动态创建的输入值的$ _POST数据

时间:2010-11-19 16:47:03

标签: php

我有一个包含几个文本区域的表单,然后是大约20个输入字段。

输入字段是使用循环动态创建的,并根据我的数据库(国家/地区)

中的值创建

我的代码是:

$options = '';
$country_code = '';
$query = $DB->query("SELECT country_code, country_id, IF(country_code = ".$country_code."', '', '') AS sel FROM exp_sme_countries WHERE site_id='".$this->settings['site_id']."' ORDER BY country_name ASC");
           foreach ($query->result as $row)
           {
            $options .= '<label>' . 'Phrase for ' .  $this->settings['countries'][$row['country_code']] . '</label>' . '<br />';
                            $options .= '<input style="width: 100%; height: 5%;" id="country_data" type="text"  name="' . $row['country_id'] . '"  />' . '<br /><br />';
                            $options .= '<input type="hidden" name="country_id" id="country_id" value="' . $row['country_id'] . '"   />';

           }

这会输出例如:

input style="width: 100%; height: 5%;" id="country_data" type="text"  name="68"  />
input style="width: 100%; height: 5%;" id="country_data" type="text"  name="28"  />

现在我的问题是,如何获取这些输入字段的值?

我看过输出$ _POST,但这似乎返回了我无法真正访问的数据。

可以以任何方式访问这些值吗?

或者我是否需要改变我做事的方式?

由于

4 个答案:

答案 0 :(得分:1)

更改字段的“名称”,如下所示:

name="p_' . $row['country_id'] . '"

然后你可以去:

    foreach ($_POST as $key => $value) {
        if (substr($key, 0, 2) == "p_") {
            $country_id[str_replace("p_", "", $key)] = $value;
        }
    }

答案 1 :(得分:0)

$_POST[68]$_POST[28]将返回您需要的值。您应该使用字母键(country_code)代替。如果由于某种原因,数据库中的数字ID发生了变化,您将无法维护代码。 HTML还要求您使用唯一的元素ID才能使文档有效。

答案 2 :(得分:0)

如上所述,你确实有

name="country_id"

也可能是70多次。那将是一个问题。

你可以这样做:

name="country_id[]"

在获得POST后在PHP中获取一个数组。

另外,你确定要发帖吗?如果$ _POST为空,则似乎不是..

答案 3 :(得分:0)

您最好的解决方案是使用HTML创建一个数组,以便以您想要的格式发布...请参阅此帖子中的示例:PHP: help with array structure