我有一个包含几个文本区域的表单,然后是大约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,但这似乎返回了我无法真正访问的数据。
可以以任何方式访问这些值吗?
或者我是否需要改变我做事的方式?
由于
答案 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