问题
所以,我有一个输入字段,用户可以输入团队领导者的名字和姓氏,然后可以点击“添加成员”来添加他们想要添加的尽可能多的团队成员。我的问题是,当我在foreach循环中循环输入数据并输出数据时,它只输出第一个和最后一个输入数据,以及所有输入数据。
示例
让我们说用户输入:
这是输出的内容:
Rick
Krisha
但我想要输出:
Rick
Jessica
Danial
Krisha
PHP代码
<?php
require '../connect.php';
foreach ($_POST as $name) {
echo $name . "<br>";
}
?>
HTML代码
<div class="add-team">
<h2 class="toggle-inputs">Add Team <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<form class="inputs" action="server/add/add-team.php" method="post">
<a href="JavaScript:void(0)">Add A Member</a>
<div class="members">
<input type="text" name="leader-name" placeholder="* Leaders First and Last Name...">
</div>
<button type="submit" name="add-team"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Team</button>
</form>
</div> <!-- END OF ADD-TEAM -->
JavaScript代码
// MAIN
function main() {
$(".add-team a").on("click", addTeamMember);
}
var countOfMembers = 1; // we keep track of how many members we are adding
// ADD TEAM MEMBER
function addTeamMember() {
countOfMembers += 1;
$(".members").append("<input type='text' name='member-name" + countOfMembers + "' placeholder='* Members First and Last Name...'>");
}
// LOAD
$(document).ready(main);
答案 0 :(得分:1)
Hey bud MicSoki是对的。你想将name ='member-name'变成一个数组,如下所示name ='member-name []'然后,在PHP中循环遍历它们以将它们添加到数据库中
$leaderName = $_POST["leader-name"];
$memberName = $_POST["member-name"];
for ($i=0; $i<count($memberName); $i++){
$anotherMember = $memberName[$i];
// insert anotherMember into database using prepared statement
}
您只获得了领导者姓名和最后一个成员名称PHP导致您的帖子由领导者姓名和最后一个成员名称组成(您继续编写每个成员名称变量,因此您最后只得到最后一个) 。这就是你需要使用数组的原因。此外,当您检索发布数据时,您必须识别leader-name,并且所有成员名称都在两个单独的类别中。
答案 1 :(得分:0)
这是因为团队成员的所有输入都将名称设置为member-name
,因此最后一个输入会覆盖以前的名称。您的javascript函数addTeamMember
必须进行更改,以便在添加新输入时,它们为每个输入使用不同的名称。这是一种方法(未经测试):
var countOfMembers = 1; // we keep track of how many members we are adding
// ADD TEAM MEMBER
function addTeamMember() {
countOfMembers += 1;
$(".members").append("<input type='text' name='member-name" + countOfMembers + "'
placeholder='* Members First and Last Name...'>");
}
这样,第一个成员的输入名称为member-name-1
,第二个成员的输入名称为member-name-2
,依此类推。