对于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];
}
答案 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...
}
}