how to insert data php javascript mysql with multiple array session 2 -
i have method method discussed , successful data entered 1 when more 1 can not database
this programs
my php form :
<form class="form-horizontal" id="form-produk"> <div class="control-group" > <label class="control-label" for="kelas">kategori</label> <div class="controls"> <select class='form-control' name='id_kategori'> <?php $tampil=mysql_query("select * kategori order nama_kategori"); if ($id_kat==0){ echo "<option value=0 selected>- pilih kategori -</option>"; } while($w=mysql_fetch_array($tampil)){ if ($id_kat==$w[id_kategori]){ echo "<option value=$w[id_kategori] selected>$w[nama_kategori]</option>"; } else{ echo "<option value=$w[id_kategori]>$w[nama_kategori]</option>"; } }?> </select> </div> </div> <div class="control-group"> <label class="control-label" for="produk">nama produk</label> <div class="controls"> <?php if($id_kat > 0){ ?> <input type="text" name="editprod" class="form-control" value="<?php echo $nama_prod;?>"/> <?php } else{ ?> <input name='add_btn' class="btn btn-primary" value='tambah record' id='add_btn' type='button'><br><br> <div id='container1'></div> <?php } ?> </div> </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>' ); }); $('body').on('click', ".remove_item", function(ev) { $(this).parents(".records").fadeout(); $(this).parents(".records").remove(); }); }); </script> my javascript :
$("#simpan-produk").bind("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({ kat_prod: v_kat, nma_prod: nma_prod, hrg_prod: hrg_prod }); }); var v_kat = $('select[name=id_kategori]').val(); // mengirimkan data ke berkas transaksi.input.php untuk di proses $.post(url, { data: json.stringify(data), kat: v_kat, id: id_produk }, function() { // tampilkan data mahasiswa yang sudah di perbaharui // ke dalam <div id="data-mahasiswa"></div> $(".msg").html("<div class='alert alert-success alert-dismissable' id='alerts'> data sukses di simpan</div>"); $(".msg").fadein(3500); $(".msg").show(); $(".msg").fadeout(5500); $("#data-produk").load(main); // sembunyikan modal dialog $('#mymodal').modal('hide'); // kembalikan judul modal dialog $("#mymodallabel").html("tambah data produk"); }); }); my php process :
$data = $_request['data']; $data = json_decode($data, true); $query = ''; foreach($data $item ){ $kat= $item['kat_prod']; $nma_prod = $item['nma_prod']; $hrg_prod = $item['hrg_prod']; $query .="insert `produk` values('','$_post[kat]','$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 insert!')); exit; } this method work's 1 data not multiple data ? suggestion please ?
to execute multi-statements original code trying perhaps mysqli_multi_query best solution. does, of course, mean need create db connection using mysqli rather mysql functions/methods.
/* mysqli_multi_query example */ $data = $_request['data']; $data = json_decode($data, true); $query = ''; foreach( $data $item ){ $kat= $item['kat_prod']; $nma_prod = $item['nma_prod']; $hrg_prod = $item['hrg_prod']; $kat = $_post['kat']; /* string concatenation, terminate each semi-colon */ $query .= "insert `produk` values ( '', '{$kat}', '{$nma_prod}', '{$hrg_prod}' );"; } if( $query ) { $exec = mysqli_multi_query( $conn, $query ); if( $exec ) { exit( json_encode( array( 'msg' => 'data inserted successfully!') ) ); } else { exit( json_encode( array( 'msg' => 'something went wrong!') ) ); } } else { exit( json_encode( array( 'msg' => 'nothing insert!') ) ); } alternatively continue using mysql_query ( though highly discouraged these days because of sql injection ) , execute each query in first loop process array or in separate loop this.
$data = isset( $_request['data'], $_post['kat'] ) ? $_request['data'] : false; if( $data ){ $data = json_decode( $data, true ); $query = array(); foreach( $data $item ){ $kat= $item['kat_prod']; $nma_prod = $item['nma_prod']; $hrg_prod = $item['hrg_prod']; $kat = strip_tags( trim( $_post['kat'] ) ); $query[]="insert `produk` values ( '', '{$kat}', '{$nma_prod}', '{$hrg_prod}' );"; } if( !empty( $query ) ) { $msgs=array('msg'=>'multiple messages'); foreach( $query $i => $sql ){ $res = mysql_query( $sql, $conn ); $msgs[ 'stmt'.$i ]=$res ? 'data inserted successfully!' : 'something went wrong!'; } exit( json_encode( $msgs ) ); } else { exit( json_encode( array( 'msg' => 'nothing insert!') ) ); } mysql_close( $conn ); } mysqli , it's associated methods offer better protection against sql injection when use prepared statements - there lots of articles on stackoverflow choose.
Comments
Post a Comment