使用具有动态数量的文本字段的Ajax进行多个数据库插入

时间:2012-11-18 20:27:46

标签: php jquery ajax

我正在尝试将文本字段的多行插入到我的数据库中。

<html>

<head>
</head>


<body>                      
        <table>
            <tr>
                <td><input type="text" id="name[0]" name="name[0]"></td>
                <td><input type="text" id="grade[0]" name="grade[0]"></td>
            </tr>
            <tr>
                <td><input type="text" id="name[1]"   name="name[1]"></td>
                <td><input type="text" id="grade[1]"  name="grade[1]"></td>
            </tr>
            <tr>
                <td><input type="text" id="name[2]"   name="name[2]"></td>
                <td><input type="text" id="grade[2]"  name="grade[2]"></td>
            </tr>
            <tr>
                <td><input type="text" id="name[3]"   name="name[3]"></td>
                <td><input type="text" id="grade[3]"  name="grade[3]"></td>
            </tr>   
        </table>

        <input type="button" id="submit_in" name="submit_in" value="submit">

</body>
</html>

我将index放入我的id,以便我可以使用Ajax循环它,但我不知道如何循环它并使用Ajax插入它。

<script type="text/javascript">
    $(document).ready(function(){
        $('#submit_in').click(function() {

            var stud_name = $('#name[0]').val();
            var stud_grade =  $('#grade[0]').val();

            alert(stud_name+" "+stud_grade);

            $.ajax({
                type:"post",
                url:"insert.php",
                dataType:'json',    
                data:{'name':stud_name,'grade':stud_grade},
                success:function(data){

                }
            });



        });
    });

</script>

这是我的PHP代码:

<?php
$host = 'Localhost';
$username= 'root';
$password= '12345';
$db_name = 'multiple_ajax';

$con = mysql_connect($host,$username,$password) or die ("Cant Connect");
mysql_select_db($db_name) or die ("Cant Select DataBase");

error_reporting(E_ALL ^ E_NOTICE);


$name= $_POST['name'];
$grade = $_POST['grade'];   

    $insert = "INSERT INTO stud_info VALUES('$name','$grade')";

    if(@!mysql_query($insert)){
        die('error insert'.mysql_error());
    }

?>

我的PHP代码只有两个可以使用Ajax的变量,因为我认为Ajax将使用id中的索引来循环这些变量。我是Ajax和PHP的新手

1 个答案:

答案 0 :(得分:2)

我确定你知道你可以通过HTTP请求传递数组,对吧?你为什么要一次做一个请求?连接所有这些!

var GradeData = [];
$("table > tr").each(function() {
   var k = $(this).find("input[type='text']");
   if (k.length == 2) {
      GradeData.push({ "name": k.eq(0).val(), "grade": k.eq(1).val()});
   }
});

然后,您将拥有一个数组GradeData,每个元素都有一个名称和一个等级。要通过AJAX传递它,请执行以下操作:

$.ajax({
  url: "insert.php",
  type: "post",
  data: {
     students: GradeData
  }
});

从那里开始,使用PHP恢复它是一件简单的事情(它将以$_POST['students']形式出现,并且数组中每个元素的格式将始终为Array('grade'=&gt;' ','name'=&gt;'某事')。从那里,你只需要迭代......就是这样!

从那里插入行同样容易:

<?php
$host = 'Localhost';
$username= 'root';
$password= '12345';
$db_name = 'multiple_ajax';

$con = mysql_connect($host,$username,$password) or die ("Cant Connect");
mysql_select_db($db_name) or die ("Cant Select DataBase");

error_reporting(E_ALL ^ E_NOTICE);
foreach ($_POST['students'] as $data) {
    $name= $data['name'];
    $grade = $data['grade'];   
    $insert = "INSERT INTO stud_info VALUES('".mysql_real_escape_string($name)."','".mysql_real_escape_string($grade)."')";

    if(@!mysql_query($insert)){
       die('error insert'.mysql_error());
    }
}
?>