首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环只插入最后的值。

循环只插入最后的值。
EN

Stack Overflow用户
提问于 2013-08-30 09:46:24
回答 5查看 895关注 0票数 0

我正在使用php从textbox获取所有的值,在一个循环中,我将得到这些值。

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

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

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

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

也就是说,当我选择3并将数据输入到3文本框时,它只插入3次文本框值,而不是插入第1、第2和第3值。

我该怎么解决呢..?

这是我用过的代码。

php:

代码语言:javascript
复制
<?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代码:

代码语言:javascript
复制
for(i = 0; i < param; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname">';
}

这是动态生成文本框。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-30 09:58:19

问题是,您正在创建与先前创建的输入名称相同的新输入,php的$_POST[]将在输入名称上进行处理--您需要创建具有独特名称的输入,比如

代码语言:javascript
复制
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());
}
?>

然而,这将只用于添加一次输入,或者您将再次创建具有相同名称的输入,为了达到此目的,我将重新将总计数存储在一个名为count <input type="hidden" value="0" name="count" />的隐藏输入中--基于该计数的名称。

代码语言:javascript
复制
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());
}
?>

我还没有测试过这段代码,所以您可能需要稍微修改一下才能使它工作,但概念是存在的。

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 09:50:17

试一试

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2013-08-30 09:52:22

插入时使用$_POST"Fname“。因此,您应该在for语句中使用count($_POST"Fname")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18529878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档