1

我正在尝试通过网页插入下拉列表和文本框中的值。

首先会有一个下拉框,其中包含从 1 到 25 的数字。

当我从下拉列表中选择数字时,会创建相应的文本框和下拉框。

但是当我输入数据并单击提交按钮时,这些值不会进入数据库,而是只有最后一行值插入到数据库中。

例如:

假设我从数字下拉列表中选择了 4,现在出现 4 行带有文本框和下拉框。

当我在文本框中输入数据并从下拉列表中选择值并单击提交时。最后一行值被插入 4 次。

我希望它正确插入值...我该如何解决这个问题。?

这是我正在使用的代码..

代码:

<html>
<head>
<link rel="stylesheet" href="css/common.css" type="text/css">
<link rel="stylesheet" type="text/css" href="css/page.css">
<link rel="stylesheet" type="text/css" href="css/button.css">
<link href="css/loginmodule.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="js/jquery.js"></script>
<script type='text/javascript' src='js/jquery.autocomplete.js'></script>
<link rel="stylesheet" type="text/css" href="css/jquery.autocomplete.css" />

<script type="text/javascript">
$().ready(function() {
    $("#Fname").autocomplete("get_course_list.php", {
        width: 260,
        matchContains: true,
        //mustMatch: true,
        //minChars: 0,
        //multiple: true,
        //highlight: false,
        //multipleSeparator: ",",
        selectFirst: false
               });
               });
          </script>

          <script>
            function showUser(str) {
                if(str=="") {
                    document.getElementById("txtHint").innerHTML="";
                    return;
                }

                if(window.XMLHttpRequest) {
                    xmlhttp=new XMLHttpRequest();
                } else {
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }

                xmlhttp.onreadystatechange = function() {
                    if(xmlhttp.readyState==4 && xmlhttp.status==200) {
                        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                    }
                }
                xmlhttp.open("GET","gettheater.php?q="+str,true);
                xmlhttp.send();
                }
        </script>


       <script type="text/javascript">


    function create(param) {
    'use strict';
    var i, target = document.getElementById('screens');
    target.innerHTML = '';
    target.innerHTML = '<input name="RowCount" value="' + param + '" hidden />';
    for(i = 0; i < param; i += 1) {

       target.innerHTML +='</br>';
       target.innerHTML +='New Movie '+i+'  ';
       target.innerHTML += '<input type="text" name="Fname">';
       target.innerHTML +='  '+'Language '+'  ';
       target.innerHTML += "<?php 
        try {
            $dbh = new PDO('mysql:dbname=theaterdb;host=localhost','tiger','tiger');
        } catch (PDOException $e) {
            echo 'Connection failed: ' . $e->getMessage();
        }

        $sql = 'SELECT language FROM languages;';

        $sth = $dbh->prepare($sql);
        $sth->execute();

        echo "<select name='language' id='course'>";
        echo "<option>----Select Language----</option>"; 
        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            echo "<option value='" . $row['language'] ."'>" . $row['language']. "        </option>";
        }
        echo "</select>";
?>";

       target.innerHTML +='</br>';
       target.innerHTML +='</br>';
    }
}


</script> 

<style>

#screens{
color:black;
}

</style>



</head>
<body>


<h1>Welcome <?php echo $_SESSION['SESS_FIRST_NAME'];?></h1>
<a href="member-profile.php" class="log">My Profile</a> | <a href="logout.php" class="log">Logout</a>
<p>This is a password protected area only accessible to Admins. </p>

<center>



<div class="pan"><br><br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" autocomplete="off">

<div class="head">Update Theater Information</div>
<table>
<tr>
<td><label for="screens">New Movies Released</label></td>
<td>

<select id="select" onchange='javascript:create(this.value);' name="range">
    <option>--Select Number Of New Movies Released--</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
</select>

</td>
</tr>


<tr>
<td></td>
<td>
<div id="screens">

</div>
</td>
<td></td>
</tr>

<tr>
<td></td>
<td><input type="submit" class="button" name='submit' value="Submit" /></td>

</tr>
</table> 
</form><br><br>
</div>

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

</center>
</body>
</html>
4

5 回答 5

2

你应该把你的名字改成数组,比如

target.innerHTML += '<input type="text" name="Fname[]">';

而且在插入查询中也应该是

$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('".$_POST['Fname'][$i]."','".$_POST['language']."') ") or die(mysql_error());
于 2013-09-26T09:55:57.997 回答
1

1.使用 mysqli_* 函数而不是 mysql_* 函数... 2. 出现什么错误。

如果您在同一页面上有插入查询,请尝试:.....

<?php
if(isset($_POST['submit'])
{
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());
}
}
?>

当提交按钮被点击时,它会触发您的查询....这可能会有所帮助

于 2013-09-26T09:57:07.453 回答
0

感谢上帝......我解决了我的问题......我使用了应用于第一个文本框的相同逻辑......现在下拉值也被插入......

我将数组添加到语言 []

echo "<select name='language[]' id='course'>";

并在循环中添加了 $i

.$_POST['language'][$i]

谢谢大家帮助我......

快乐编码....

于 2013-09-26T10:48:51.767 回答
0

用这个

$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('".$_POST['Fname']."','".$_POST['language']."') ") or die(mysql_error());

代替

$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('$_POST[Fname]','$_POST[language]') ") or die(mysql_error());
  1. 您必须将 php 代码保留在引号之外并将它们连接起来

2.如果$_POST数组的索引是字符串,那么它必须是带引号的。(例如:$_POST[language]它必须是$_POST['language']

于 2013-09-26T09:50:36.217 回答
0

我不想成为一个混蛋,但我建议清理并分离 JavaScript、jQuery 和 PHP,甚至松散的 JavaScript AJAX 并使用 jQuery AJAX。像这样的代码会给您带来错误也就不足为奇了。

于 2013-09-26T10:50:09.933 回答