我想知道如何处理来自具有多个属性的表单的多个输入.
此代码生成我的字段:
if($_SESSION["peoplecount"] != 0){
for ($i = 0; $i <= $_SESSION["peoplecount"]; $i++) {
echo ' Name Adult Minor
';
} }
?>
一旦提交 – 或者在“行动”部分中提到的test5.php,
foreach ($_POST as $key => $value) {
print "{$key}: {$value}
";
}
而输出是
0: adult
1: adult
2: adult
3: adult
注意它有0,1,2 ……然后是成人.它甚至没有提到文本输入中的人的名字.
我可以将表格改为:
if($_SESSION["peoplecount"] != 0){
for ($i = 0; $i <= $_SESSION["peoplecount"]; $i++) {
echo ' Name Adult Minor
';
} }
?>
使用相同的test5.php,我得到了
usersname:
age: adult
未发布age的值,test5.php中的foreach循环结束,因此行返回,然后完成一个完整的帖子.
我希望我做得很好解释.
我希望我的输出是:
SomeName成人
SomeOtherName Minor
….
解决方法:
您的问题是您正在创建两个名称为’$i’的表单输入,而第二个(单选按钮)正在覆盖第一个.我建议您使用包含$i的字符串来构建名称属性:
for ($i = 0; $i <= $_SESSION["peoplecount"]; $i++) {
echo ' Name Adult Minor
';
}
现在你的$_POST数组看起来像:
name-0: somename age-0: Adult
name-1: othername age-1: Minor
...
处理它的更好方法是使用数组作为表单名称属性[](注意我在这里切换到双引号,以避免所有额外的连接和复杂的引用.)
for ($i = 0; $i <= $_SESSION["peoplecount"]; $i++) {
echo " Name Adult Minor
";
}
在这种情况下,$_POST看起来像:
name: Array(
0: somename,
1: othername
),
age: Array (
0: adult,
1: minor
)
要访问它们,您可以像这样使用foreach循环:
foreach ($_POST['name'] as $key=>$name) {
echo "Name: $name Age: {$_POST['age'][$key]}";
}
标签:php,sql,forms,html
来源: https://codeday.me/bug/20190716/1481770.html