循环只插入最后的值


Loop inserting only last values

我使用php从文本框中获取所有值,在循环中获取值。

在循环中,我还有insert语句和count。

流程为:我将从下拉列表中选择值,当我从下拉列表选择数字时,将创建相应数量的文本框。

例如:我从下拉列表中选择了数字3。因此它将创建3个文本框。

现在,我将在这3个文本框中输入数据,然后单击提交。当我点击提交时,只有最后一个文本框的值被插入到数据库中。

即,当我选择3并将数据输入到3文本框时,它只插入第三个文本框值3次,而不是插入第一个、第二个和第三个值。。

我该怎么解决。。?

这是我用过的代码。。

php:

<?php
  mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
  mysql_select_db("theaterdb") or die(mysql_error());
  for ($i=0; $i < $_POST["range"] ; $i++)
  {
    $query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('$_POST[Fname]','$_POST[language]') ") or die(mysql_error());
  }
?>

range是我在下拉列表中选择的值。

javascript代码:

for(i = 0; i < param; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname">';
}

这是动态生成文本框

问题是,您正在创建与以前创建的名称相同的新输入,php的$_POST[]会在输入名称上加上arround,因此您需要创建具有唯一名称的输入类似的东西

for(i = 0; i < param; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname_' + i + '">';
}
<?php
mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
mysql_select_db("theaterdb") or die(mysql_error());
for ($i=0; $i < $_POST["range"] ; $i++)
{
$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('" . $_POST['Fname_' . $i] . "','" . $_POST['language'] . "') ") or die(mysql_error());
}
?>

然而,这将只用于添加一次输入,或者您将再次创建具有标识名称的输入,为了获得around,我将重新计算并将总计数存储在一个名为计数<input type="hidden" value="0" name="count" />的隐藏输入中,该输入基于该计数的名称

var count = $('input[name=count]');
for(i = 0+count; i < param+count; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname">';
}
<?php
mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
mysql_select_db("theaterdb") or die(mysql_error());
for ($i=0; $i < $_POST["range"] ; $i++)
{
$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('" . $_POST['Fname_' . $i] . "','" . $_POST['language'] . "') ") or die(mysql_error());
}
?>

我还没有测试过这段代码,所以你可能需要修改一下才能让它正常工作,但的概念就在那里

尝试

<?php
mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
mysql_select_db("theaterdb") or die(mysql_error());
for ($i=0; $i <= count($_POST["Fname"]); $i++)
{
$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('$_POST[Fname][$i]','$_POST[language][$i]') ") or die(mysql_error());
}
?>

您正在使用$_POST["Fname"]进行插入。因此,您应该在for语句中使用count($_POST["Fname"])

将代码更改为:

for(i = 0; i < param; i += 1) {
  target.innerHTML +='</br>';
  target.innerHTML +='New Movie '+i+'  ';
  target.innerHTML += '<input type="text" name="Fname[]">';
}

php自动将Fname[]转换为array(),这样您就可以使用循环浏览您的电影名称

<?php
  mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
  mysql_select_db("theaterdb") or die(mysql_error());
  for ($i=0; $i < $_POST["range"] ; $i++) {
    $query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('{$_POST[Fname][i]}','{$_POST[language]}') ") or die(mysql_error());
  }
?>

当您将表单发布到服务器时,表单中的所有输入都会连同它们的name属性一起发送到服务器。在您的情况下,您已将输入名称指定为"Fname"。因此,只有一个名为"Fname"的输入被发送到服务器。因此,您只得到一个post输入,即$_SERVER["Fname"]。

只需将javascript代码更改为

for(i = 0; i < param; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname[]">';
}

使用Fname[]而不是Fname。现在您正在发布Fname数组。因此,您将在$_SERVER["Fname"]中获得数组。在这里,您将收到数组中的所有Fname输入字段。因此,将您的php代码更改为

<?php
mysql_connect("localhost", "tiger", "tiger") or die(mysql_error());
mysql_select_db("theaterdb") or die(mysql_error());
for ($i=0; $i < $_POST["range"] ; $i++)
{
$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('$_POST[Fname][$i]','$_POST[language]') ") or die(mysql_error());
}
?>

这将解决你的问题。