我正在使用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">';
}
这是动态生成文本框
答案 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());
}
?>
这将解决您的问题。