值未插入数据库表

时间:2013-09-26 09:45:29

标签: javascript php jquery html mysql

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

首先会有一个下拉框,其数字从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>

5 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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());
}
}
?>

当提交按钮命中时,它会分解您的查询....可能会有帮助

答案 2 :(得分: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. 2.如果$_POST数组的索引是字符串,那么它必须带引号。 (e.x:$_POST[language]必须为$_POST['language']

答案 3 :(得分:0)

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

我将数组添加到语言[]

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

并在循环中添加$ i

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

感谢所有人帮助我......

HaPpY CoDiNg ....

答案 4 :(得分:0)

我不想成为一个屁股,但我会建议清理和分离JavaScript,jQuery和PHP甚至松散JavaScript AJAX并使用jQuery AJAX。毫无疑问,这样的代码会给你带来错误。