PHP的每个$ _POST

时间:2014-12-17 13:05:25

标签: php post for-loop foreach

对于noob问题我很抱歉,我有点卡住了。

我有以下HTML表单。表格可以尽可能多地克隆。

    <div class="form">
       <input type="text"  name="user_name_1"  >
       <input type="email" name="user_email_1"  >
    </div>

   <div class="form">
       <input type="text"  name="user_name_2"    >
       <input type="email"  name="user_email_2"  >
   </div>

  <div id="submit-form">
      <input type='hidden' name='user_email'>
      <input type="submit"  value="Submit" />
      <input type="button" class="button" id="cloneForm" value="Clone" />
  </div>

每次单击克隆按钮时,名称字段都会递增。在PHP中如何使用$ _POST遍历字段以为每个表单div创建唯一帐户?

PHP示例

   for ($i=0; $i < 5; $i++) { 
      $name = $_POST['user_name_'+$i];
      $mail = $_POST['user_email_'+$i];

   }

4 个答案:

答案 0 :(得分:4)

使用html:

name="user_email[]"

现在$_POST['user_email']将是一个数组。但缺点是你无法控制数组的索引。

所以循环遍历数组:

foreach ($_POST['user_email'] as $email) { 
   print $email
}

或获取第一项:$_POST['user_email'][0]

您的快速修补程序:

你的代码中的错误不是你的HTML,它的php: 要在php中将字符串组合/连接在一起使用.,而不是+

for ($i=0; $i < 5; $i++) { 
      $name = $_POST['user_name_'.$i];
      $mail = $_POST['user_email_'.$i];
}

供参考:

答案 1 :(得分:3)

试试这个:

<div class="form">
   <input type="text"  name="user_name[]"  >
   <input type="email" name="user_email[]"  >
</div>

<div class="form">
   <input type="text"  name="user_name[]"    >
   <input type="email"  name="user_email[]"  >

<div id="submit-form">
  <input type='hidden' name='user_email[]'>
  <input type="submit"  value="Submit" />
  <input type="button" class="button" id="cloneForm" value="Clone" />

PHP代码中的

$val1 = $_POST['user_name'];
$val2 = $_POST['user_email'];

foreach ($val1 as $key=> $value) { 
  $name = $val1[$key]; // or  $value;
  $mail = $val2[$key];
}

答案 2 :(得分:1)

如果你坚持使用这样的名字(“user_name []”要好得多)并且没有行的DELETE, 以下是您可以访问它们的方法:

 for ($i=0; $i < 100; $i++) {
      if(!isset($_POST['user_name_'+$i])){
          break;// stop the cycle when there are no more rows
      }
      $name = $_POST['user_name_'+$i];
      $mail = $_POST['user_email_'+$i];

   }

答案 3 :(得分:0)

由于您之前不知道条目数,因此需要在运行时进行检查。循环遍历$_POST数组并查找以 user_name _

开头的键

尝试foreach ... as

foreach ($_POST as $key => value) {
    // Is this a user name?
    if (strpos($key, 'user_name_') === 0) {
        // Get the index part
        $index = substr($key, 10);

        // Get the expected POST key for email address
        $emailKey = "user_email_$index";

        // TODO: read $value and $_POST[$emailKey]
        // TODO: stuff...
    }
}