Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用多数组插入数据php javascript mysql_Javascript_Php_Jquery_Mysql - Fatal编程技术网

如何使用多数组插入数据php javascript mysql

如何使用多数组插入数据php javascript mysql,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我想用php javascript将多个数组中的数据输入数据库 这里我使用动态添加记录来插入值 这是一个例子: <form class="form-horizontal" id="form-produk"> <input name='add_btn' class="btn btn-primary" value='Tambah Record' id='add_btn' type='button'><br><br>

我想用php javascript将多个数组中的数据输入数据库 这里我使用动态添加记录来插入值

这是一个例子:

    <form class="form-horizontal" id="form-produk">
<input name='add_btn' class="btn btn-primary" value='Tambah Record' id='add_btn' type='button'><br><br>

                 <div id='container1'></div>


</form>

         <script type="text/javascript">
$(document).ready(function() {
            var count = 0;

            $("#add_btn").click(function(){
                    count ++;
                $('#container1').append(
                             '<div class="records">'
                         + '<textarea id="' + count + '" name="' + count + '" type="text" size="100" class="form-control nma_prod"></textarea>'
            + '<div class="hrgini"><span class="input-group-addon">Rp</span><input style="text-align:right" id="' + count + '" name="'+count+'" class="form-control hrg_prod" type="text" placeholder="Harga Produk"><span class="input-group-addon">,00</span></div>'
                         + '<button class="remove_item btn btn-danger" >Hapus</button>'
                         + '<br><br></div>'
                    );
                });

                $(".remove_item").live('click', function (ev) {
                if (ev.type == 'click') {
                $(this).parents(".records").fadeOut();
                $(this).parents(".records").remove();
            }
            });
        });
</script>

但是这个脚本对我不起作用。有什么建议吗?

当您对
name
属性使用整数时,服务器端脚本出现问题

你必须这样做:

            $('#container1').append(
                         '<div class="records">'
                     + '<textarea id="id_' + count + '" name="count[]" type="text" size="100" class="form-control nma_prod"></textarea>'
        + '<div class="hrgini"><span class="input-group-addon">Rp</span><input style="text-align:right" id="cnt_' + count + '" name="count2[]" class="form-control hrg_prod" type="text" placeholder="Harga Produk"><span class="input-group-addon">,00</span></div>'
                     + '<button class="remove_item btn btn-danger" >Hapus</button>'
                     + '<br><br></div>'
                );
            });
最后:

$v = [];
    foreach($_POST['count'] as $key=>$count){

        $v[] = "('',$count,{$_POST['count2'][$key]})";

    }

$query = "INSERT INTO produk ".implode(',',$v);
我不知道你的名字
count
count2
只是一个临时名称。请换这些


而且永远不要使用mysql_*函数在提供的示例中,为什么要为两个不同的字段创建不同的对象

由于这两个字段是相关的(在一个组中),所以需要将它们放在同一个对象中。因此,这里的关键是对所有具有class
记录的元素进行迭代

bind
live
已被弃用,因此我在
上使用了

php
端,最好将
查询串联起来执行一次,而不是执行多个查询

JSON
作为
数据发送
JSON\u decode
方法用于从
字符串中获取
对象

应该使用
mysqli.*
方法,而不是注释中提到的
mysql.*
,但是在下面提供的代码中,它没有实现

请参阅:

$(文档).ready(函数(){
var计数=0;
$(“#添加btn”)。单击(函数(){
计数++;
$('#container1')。追加(
“+”+“Rp,00”+“Hapus”+”

' ); }); $('body')。在('click',“.remove_item',function(ev){ $(this.parents(“.records”).fadeOut(); $(this.parents(“.records”).remove(); }); }); $(“#simpan produk”)。在(“单击”,功能(事件){ var url=“pages/produk/produk.input.php”; var数据=[]; $('.records')。每个(函数(索引,项){ var nma_prod=$(item.find('.nma_prod').val(); var hrg_prod=$(item).find('.hrg_prod').val(); 数据推送({ nma_prod:nma_prod, hrg_产品:hrg_产品 }); }); 警报(JSON.stringify(数据)); //发送到进程 $.post(网址:{ 数据:JSON.stringify(数据) },函数(){ $(“.msg”).html(“成功”); $(“.msg”).fadeIn(3500); $(“.msg”).show(); 美元(“.msg”)。淡出(5500); $(“#数据产品”).load(主); //隐藏对话框模态 $('#myModal').modal('hide'); //恢复模态对话框标题 $(“#myModalLabel”).html(“Tambah数据产品”); }); });



提交
PHP:

<?php
$data = $_REQUEST['data'];
$data = json_decode($data, true);
$query = '';
foreach ($data as $item) {
    $nma_prod = $item['nma_prod'];
    $hrg_prod = $item['hrg_prod'];
    $query .= "INSERT INTO `produk` VALUES('$nma_prod','$hrg_prod');";
}

if ($query) {
    $exec = mysql_query($query);
    if ($exec) {
        echo json_encode(array('msg' => 'Data inserted successfully!'));
        exit;
    } else {
        echo json_encode(array('msg' => 'Something went wrong!'));
        exit;
    }
} else {
    echo json_encode(array('msg' => 'Nothing to Insert!'));
    exit;
}

出现了什么错误?无法将动态记录中的值添加到数据库中为什么将第一个值设置为“”(为空)?这是我声明给“”的id(为空),因为我在表中使用了主键注意:
mysql.*
函数已弃用,它们已从PHP7中删除,升级到该版本时,代码将停止工作。您不应该使用它们来编写新代码,而应该使用。OP不是以传统的方式提交,他使用的是ajax。。他为什么需要名字?他也没有使用
serialize()
…是的,关于
name
,你的权利是正确的,但是
serialize()
需要收集和发送表单数据。但是如何在serialize()中声明动态记录的post数据?实际上,当我们想要使用
serialize()时,我们需要
name
@AvistaKautsar:请检查此代码并查看结果。但是,如果我插入多个数据,为什么它不起作用?不起作用不是有效的问题陈述。您需要遵循一些简单的调试步骤。检查在
循环中生成的
$query
。它有效吗?
      // send to process
        $.post(url, $('form#form-produk').serialize(),function() {
                 // ....
        });
$v = [];
    foreach($_POST['count'] as $key=>$count){

        $v[] = "('',$count,{$_POST['count2'][$key]})";

    }

$query = "INSERT INTO produk ".implode(',',$v);
<?php
$data = $_REQUEST['data'];
$data = json_decode($data, true);
$query = '';
foreach ($data as $item) {
    $nma_prod = $item['nma_prod'];
    $hrg_prod = $item['hrg_prod'];
    $query .= "INSERT INTO `produk` VALUES('$nma_prod','$hrg_prod');";
}

if ($query) {
    $exec = mysql_query($query);
    if ($exec) {
        echo json_encode(array('msg' => 'Data inserted successfully!'));
        exit;
    } else {
        echo json_encode(array('msg' => 'Something went wrong!'));
        exit;
    }
} else {
    echo json_encode(array('msg' => 'Nothing to Insert!'));
    exit;
}