如何插入数据 PHP JavaScript MySQL 与多个数组

how to insert data php javascript mysql with multiple array

本文关键字:MySQL JavaScript 数组 PHP 数据 何插入 插入      更新时间:2023-09-26

我想用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>

这是我对JavaScript的操作

$("#simpan-produk").bind("click", function(event) {
            var url = "pages/produk/produk.input.php";
            // mengambil nilai dari inputbox, textbox dan select
            var values = new Object() // creates a new instance of an object
                    $('.nma_prod').each(function() {
                        values[$(this).attr('name')] = $(this).val()
                })
            var harga = new Object() // creates a new instance of an object
                    $('.hrg_prod').each(function() {
                        values[$(this).attr('name')] = $(this).val()
                })
            // send to process
            $.post(url, {nama: values,hrga: harga, id: id_produk} ,function() {
                $(".msg").html("<div class='alert alert-success alert-dismissable' id='alerts'> Sucsess</div>");
                    $(".msg").fadeIn(3500);
                    $(".msg").show();
                    $(".msg").fadeOut(5500);
                $("#data-produk").load(main);

                // hide dialog modals
                $('#myModal').modal('hide');
                // restore modal dialog title
                $("#myModalLabel").html("Tambah Data produk");
            });
        });

这是我的流程脚本

foreach($prods as $_POST['nama']){
                foreach($hrg as $_POST['hrga']){
            mysql_query("INSERT INTO produk VALUES('','$prods','$hrg')");
            }
        }

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

当您将整数用于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>'
                );
            });

那么在 Ajax send 中你可以使用 serialize((:

      // 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);

我不知道你的字段名称。 countcount2只是一个临时名称。请更改这些。

切勿使用 mysql_* 函数

在提供的示例中,为什么要为两个不同的字段创建不同的对象?

由于这两个字段都是相关的(在一个组中(,因此您需要将它们放在同一个对象中。所以这里的关键是通过所有具有类records的元素iterate

bindlive已被弃用,所以我使用它on

php另一方面,最好连接queries并执行一次,而不是执行多个查询。

JSON作为data发送,json_decode方法用于使object摆脱string

应该使用mysqli_*方法代替注释中提到的mysql_*,但在下面提供的代码中,它没有实现。

参考这个:

$(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>'
    );
  });
  $('body').on('click', ".remove_item", function(ev) {
    $(this).parents(".records").fadeOut();
    $(this).parents(".records").remove();
  });
});
$("#simpan-produk").on("click", function(event) {
  var url = "pages/produk/produk.input.php";
  var data = [];
  $('.records').each(function(index, item) {
    var nma_prod = $(item).find('.nma_prod').val();
    var hrg_prod = $(item).find('.hrg_prod').val();
    data.push({
      nma_prod: nma_prod,
      hrg_prod: hrg_prod
    });
  });
  alert(JSON.stringify(data));
  // send to process
  $.post(url, {
    data: JSON.stringify(data)
  }, function() {
    $(".msg").html("<div class='alert alert-success alert-dismissable' id='alerts'> Sucsess</div>");
    $(".msg").fadeIn(3500);
    $(".msg").show();
    $(".msg").fadeOut(5500);
    $("#data-produk").load(main);
    // hide dialog modals
    $('#myModal').modal('hide');
    // restore modal dialog title
    $("#myModalLabel").html("Tambah Data produk");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<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>
  <button id='simpan-produk' type='button'>Submit</button>
</form>

.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;
}

有关客户端代码,请参阅此小提琴。.