循环仅插入最后的值

时间:2013-08-30 09:46:25

标签: php javascript jquery html mysql

我正在使用php从文本框中获取所有值,在循环内我得到了值。

在循环中我也有插入语句和计数。

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

代表: - 我从下拉列表中选择了数字3。 所以它会创建3个文本框。

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

即。当我选择3并输入数据到3文本框时,它只插入3次文本框值3次,而不是插入第1,第2和第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());
  }
?>

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

javascript代码:

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

这是动态生成文本框

5 个答案:

答案 0 :(得分:1)

<?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());
}
?>

答案 1 :(得分:1)

您正在使用$ _POST [“Fname”]作为插入内容。所以你应该在for语句中使用count($ _ POST [“Fname”])

答案 2 :(得分:1)

问题是你正在创建一个与之前创建的名称相同的新输入,php的$ _POST []会在输入名称上输入,你需要创建具有唯一名称的输入

之类的东西
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());
}
?>

然而,这只会分叉添加一次输入,或者你将再次创建带有identicle名称的输入,为了得到这个我会建议将总计数存储在名为count <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());
}
?>

我已经测试了这段代码,所以你可能需要修改一下才能使它工作但是概念就在那里

答案 3 :(得分:1)

将您的代码更改为:

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

php会自动将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());
  }
?>

答案 4 :(得分:1)

将表单发布到服务器时,表单中的所有输入都将使用其name属性发送到服务器。 在您的情况下,您已将输入名称指定为“Fname”。因此,只有一个名为“Fname”的输入被发送到服务器。所以你只得到一个帖子输入,即$ _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());
}
?>

这将解决您的问题。