标题如此笼统,主要是因为我不知道什么应该是合适的标题。让我简单解释一下情况:
假设我有两个名为LastName0
和FirstName0
的文本框和一个名为addMore
. 当我单击 时addMore
,将通过 JavaScript 创建另外两个文本框。这些文本框将被命名为LastName1
和FirstName1
。当我再次单击该addMore
按钮时,将分别创建并命名另外两个文本框LastName2
按钮FirstName2
。只要单击该addMore
按钮,此操作就会继续。deleteThis
此外,将在文本框旁边创建一个名为的按钮。这只是在单击时删除创建的文本框。
我还初始化了一个名为counter
. 每次addMore
单击按钮时,counter
增加 1,每次deleteThis
单击按钮时,counter
减少 1。 的值counter
存储在隐藏输入类型中。
当用户提交表单时,我获取 的值counter
并创建一个 For 循环来获取表单中文本框的所有值。这是示例代码:
//Suppose that the user decides to add 2 more textboxes. Now we have the following:
// LastName0 FirstName0
// LastName1 FirstName1
// LastName2 FirstName2
$ctr = $_POST['counter']; //the counter == 3
for ($x = 0; $x < $ctr; $ctr++)
{
$lastname = $_POST["LastName$x"];
$firstname = $_POST["FirstName$x"];
//This will get the values of LastName0,1,2 and FirstName0,1,2
//code to save to database…
}
在上面的代码中,如果 的值counter
等于 3,则文本框的值LastName0,1,2
和FirstName0,1,2
将被保存。现在问题来了:如果用户决定删除LastName1
and FirstName1
,则 For 循环将无法正确迭代:
$ctr = $_POST['counter']; //the counter == 2
for ($x = 0; $x < $ctr; $ctr++)
{
//Only LastName0 and FirstName0 will be saved.
$lastname = $_POST["LastName$x"];
$firstname = $_POST["FirstName$x"];
//code to save to database…
}
有人告诉我使用“push and pop”的概念来解决这个问题,但我不确定如何在这里应用它。因此,如果有人能告诉我如何应用它,那就太好了。