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

问题描述:

我有一个窗体有几个文本区域,然后大约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,但这似乎返回我无法真正访问的数据。

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

还是需要改变我做事的方式?

感谢

+1

它看起来就像你输出重复的html id一样 - 不要这样做。 – Skilldrick 2010-11-19 16:50:27

像上面说的,你有

name="country_id" 

可能喜欢70+次为好。这将是一个问题。

你可以这样做:

name="country_id[]" 

,它被张贴后得到PHP中的数组。

另外,你确定你在发布吗?好像不是,如果$ _POST为空..

改变你的 '名称' 字段如下:

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

那么你可以去:

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

这似乎工作。我只需要将其插入到一个循环中,以便将所有内容都放入我的数据库表中。谢谢! – terrid25 2010-11-19 17:08:59

$_POST[68]$_POST[28]将返回你所需要的值。您应该使用字母键(country_code)。如果由于某些原因数据库中的数字标识发生更改,则维护代码时会遇到问题。 HTML还要求您使用唯一的元素ID来使文档有效。

你最好的解决办法是创建一个HTML阵列,使得它在你想要的格式张贴...请参阅这篇文章中的示例:PHP: help with array structure