我有以下代码:
<form action="" method="post">
<input type="text" name="text[0]">
<a id="AddMore">Add more fields</a>
<input type="submit" value="submit">
</form>
#AddMore添加数字迭代的输入元素(使用jQuery)。所以当你点击它时:
<form action="" method="post">
<input type="text" name="text[0]">
<input type="text" name="text[1]">
<a id="AddMore">Add more fields</a>
<input type="submit" value="submit">
</form>
提交时,我想获取现有输入的值并将其添加到我的$ message字符串中。我想到了这样的事情:
$message = "Text number: 1 contains: " . $_POST['text[0]'] . "\r\n" // . $extraInput; ???
for ($x = 1; $x < 20; $x++) { // 20 = max number of inputs
if(isset($_POST['text[$x]']) && $_POST['text[$x]'] != ''){
$extraInput-$x .= "Text number: " . $x + 1 " contains: " . $_POST['text[$x]'] . "\r\n"; // how to add this to $message?
} else {
$extraInput-$x .= "";
}
我知道我的php不正确,但无论如何我把它放在这里,所以你会更好地理解我的意图。使用它的正确方法是我想知道/学习的。
例如,当我点击“添加更多字段&#39;两次。我希望php将以下字符串放入$ message:
$message = "Text number: 1 contains: " . $_POST['text[0]'] . "\r\n" . "Text number: 2 contains: " . $_POST['text[1]'] . "\r\n" . "Text number: 3 contains: " . $_POST['text[2]'] . "\r\n";
这是我最终想要使用的邮件:
mail($to,$subject,$message);
答案 0 :(得分:1)
这是一种方法:
if(0 < sizeof($_POST['text']))
{
$message = '<ol>';
foreach($_POST['text'] as $text)
{
if(false === empty($text))
$message .= "<li>".$text."</li>";
}
$message = '</ol>';
}else{
$message = "void";
}
答案 1 :(得分:1)
如果您的<input type="text">
的{{1}}属性为name
,text[0]
等,则在您的php代码中,它们的值不在text[1]
中,而是在$_POST[text[n]]
中。 $_POST[text][n]
。
因此,您可以通过以下方式获得所需的输出:
$message = '';
foreach( $_POST['text'] as $key => $val )
{
$message .= "Text number: ".($key+1)." contains: {$val}\r\n";
}
或者 - 如果你想跳过空值 - 就这样:
$message = '';
$index = 1;
foreach( $_POST['text'] as $val )
{
if( $val )
{
$message .= "Text number: ".($index++)." contains: {$val}\r\n";
}
}
编辑:请注意,如果设置,则无需检查$_POST[text][n]
,因为数组的所有元素都已设置,如果它们为空。