首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用动态数量的文本字段的Ajax实现多个数据库插入

问使用动态数量的文本字段的Ajax实现多个数据库插入
EN

Stack Overflow用户
提问于 2012-11-19 04:27:46
回答 1查看 1.5K关注 0票数 0

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

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

我将索引放到我的id中,以便可以使用Ajax循环它,但是我不知道如何使用Ajax循环它和插入它。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-19 04:33:35

我相信您知道可以通过HTTP请求传递数组,对吧?为什么你一次只做一个请求?将它们全部连接起来!

代码语言:javascript
复制
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传递它,请执行以下操作:

代码语言:javascript
复制
$.ajax({
  url: "insert.php",
  type: "post",
  data: {
     students: GradeData
  }
});

从那里开始,使用PHP恢复它就很简单了(它将作为数组出现,并且数组的每个元素的格式将始终是$_POST['students'] (‘=>’=>‘东西’,'name‘=>’东西‘)。从那里开始,你只需要迭代和...就是这样!

从这里开始,插入行也很简单:

代码语言:javascript
复制
<?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());
    }
}
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13444237

复制
相关文章

相似问题

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