php - How to get and count post variable (array) in CodeIgniter? -
i have form in view (i'm using codeigniter), in form there's element (array) code below:
<table class="table table-stripped table-bordered" id="tbl-obat"> <colgroup> <col class="con0"> <col class="con1"> <col class="con0"> <col class="con1"> <col class="con0"> </colgroup> <thead> <tr> <th>no.</th> <th>obat</th> <th>dosis</th> <th>satuan</th> <th>jumlah</th> </tr> </thead> <tbody> <tr> <td> <div id="1">1</div> <input type="hidden" name="kd_obat_1" id="kd_obat_1" class="kd_obat" value="02"> </td> <td> <input type="text" name="nama_obat_1" id="nama_obat_1" class="nama_obat input-large ui-autocomplete-input valid" autocomplete="off"><span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span> </td> <td> <input type="text" name="dosis_1" id="dosis_1" class="dosis input-small valid"> </td> <td> <select name="satuan_1" id="satuan_1" class="satuan uniformselect valid" style="width:100px;"> <option name="-">pilih satuan</option> <option value="ksko-01">ampul</option> <option value="ksko-02">buah</option> <option value="ksko-03">botol</option> <option value="ksko-04">bungkus</option> <option value="ksko-05">kaplet</option> </select> </td> <td> <input type="text" name="jumlah_1" id="jumlah_1" class="jumlah input-large valid"> </td> </tr> <tr> <td> <div id="2">2</div> <input type="hidden" name="kd_obat_2" id="kd_obat_2" class="kd_obat" value="01"> </td> <td> <input type="text" name="nama_obat_2" id="nama_obat_2" class="nama_obat input-large ui-autocomplete-input valid" autocomplete="off"><span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span> </td> <td> <input type="text" name="dosis_2" id="dosis_2" class="dosis input-small valid"> </td> <td> <select name="satuan_2" id="satuan_2" class="satuan uniformselect valid" style="width:100px;"> <option name="-">pilih satuan</option> <option value="ksko-01">ampul</option> <option value="ksko-02">buah</option> <option value="ksko-03">botol</option> <option value="ksko-04">bungkus</option> <option value="ksko-05">kaplet</option> </select> </td> <td> <input type="text" name="jumlah_2" id="jumlah_2" class="jumlah input-large valid"> </td> </tr> </tbody> </table> how can count array , post values in controller codeigniter? seek code doesnt work :
foreach ($_post $key=>$val) { $$key = $val; } $obat = array(); $i = 1; while(${"nama_obat_".$i}) { if(isset(${"nama_obat_".$i}) or !empty(${"nama_obat_".$i}) or ${"nama_obat_".$i} !== "") { $obat[$i]['kd_trans_pelayanan'] = $trans_id; $obat[$i]['nama_obat'] = ${"nama_obat_".$i}; $obat[$i]['dosis'] = ${"dosis_".$i}; $obat[$i]['kd_sat_kecil_obat'] = ${"satuan_".$i}; $obat[$i]['qty'] = ${"jumlah_".$i}; $i++; } else { exit(1); } } echo '<pre>'; print_r($obat); thanks in advance!
edit :
i need count field name 'kd_obat_x' x = 1 n, based on user input. i need algorithm how many variables posted based on user input , on data. here's finish code:
view.php
<h4>step 3: obat</h4> <p> <table class="table table-stripped table-bordered" id="tbl-obat"> <colgroup> <col class="con0" /> <col class="con1" /> <col class="con0" /> <col class="con1" /> <col class="con0" /> </colgroup> <thead> <tr> <th>no.</th> <th>obat</th> <th>dosis</th> <th>satuan</th> <th>jumlah</th> </thead> <tbody></tbody> </table> </p> <p> <a href="#" id="addobat" class="btn btn-primary btn-rounded"><i class="icon-plus icon-white"></i> tambah</a> <a href="#" id="removeobat" class="btn btn-danger btn-rounded"><i class="icon-trash icon-white"></i> hapus</a> </p> my.js
<script type="text/javascript"> // autocomplete obat jquery(function() { var counter3 = 1; var options = { source: '<?php echo base_url(); ?>admin/autocompleteobat', minlength: 2, focus: function( event, ui ) { jquery('#nama_obat_'+counter3).val(ui.item.value); jquery(this).closest('tr').find('input.kd_obat').val(ui.item.kd_obat); }, select: function( event, ui ) { //event.preventdefault(); jquery('#nama_obat_'+counter3).val(ui.item.value); jquery(this).closest('tr').find('input.kd_obat').val(ui.item.kd_obat); }, messages: { noresults: '' } }; jquery('input.nama_obat').live("keydown.autocomplete", function() { jquery(this).autocomplete(options); }); var addinput = function() { if (counter3 > 1){ jquery('a#removeobat').removeattr('disabled'); } var inputhtml = '<tr><td><div id="'+counter3+'">'+counter3+'</div><input type="hidden" name="kd_obat_'+counter3+'" id="kd_obat_'+counter3+'" class="kd_obat" /></td><td><input type="text" name="nama_obat_'+counter3+'" id="nama_obat_'+counter3+'" class="nama_obat input-large" /></td><td><input type="text" name="dosis_'+counter3+'" id="dosis_'+counter3+'" class="dosis input-small" /></td><td><select name="satuan_'+counter3+'" id="satuan_'+counter3+'" class="satuan uniformselect" style="width:100px;"><option name="-">pilih satuan</option><?php foreach($list_satuan_kecil $lsk) : ?><option value="<?php echo $lsk['kd_sat_kecil_obat']; ?>"><?php echo $lsk['sat_kecil_obat']; ?></option><?php endforeach; ?></select></td><td><input type="text" name="jumlah_'+counter3+'" id="jumlah_'+counter3+'" class="jumlah input-large" /></td></tr>'; jquery(inputhtml).appendto("table#tbl-obat tbody"); jquery("input.nama_obat:last").focus(); jquery('html, body').animate({ scrolltop: jquery("input.nama_obat:last").offset().top }, 2000); counter3++; }; var removeinput = function() { counter3--; if(counter3 == 1){ jquery('a#removeobat').attr('disabled','disabled'); //alert("minimal sisa 1!"); counter3++; //console.log('jika counter == 1 :' + counter3); }else{ jquery("table#tbl-obat tbody tr:last").remove(); //console.log('jika counter != 1 :' + counter3); } jquery("input.nama_obat:last").focus(); jquery('html, body').animate({ scrolltop: jquery("input.nama_obat:last").offset().top }, 2000); }; if (!jquery("table#tbl-obat tbody").find("input.nama_obat").length) { addinput(); } jquery("a#addobat").click(addinput); jquery("a#removeobat").click(removeinput); }); </script> admin.php (controller)
function autocompleteobat() { if (isset($_request['term'])){ $q = strtolower($_get['term']); $output = $this->m_crud->get_obat($q); $this->output->set_content_type('application/json')->set_output(json_encode($output)); } } /***master pelayanan***/ function pelayanan($par1 = '', $par2 = '', $par3 = '') { if (!$this->session->userdata('logged_in') == true) { redirect('login'); } if ($par1 == 'tambah') { $trans_id = $this->m_crud->generate_transaksi(); $pelayanan['kd_trans_pelayanan'] = $trans_id; $pelayanan['kd_rekam_medis'] = $this->input->post('kd_rekam_medis'); $pelayanan['tgl_pelayanan'] = $this->functions->convert_date_sql($this->input->post('tgl_pelayanan')); $pelayanan['kd_jenis_layanan'] = $this->input->post('kd_jenis_layanan'); $pelayanan['kd_unit_pelayanan'] = $this->input->post('kd_unit_pelayanan'); $pelayanan['kd_puskesmas'] = 'p3271010101'; //$this->session->userdata('kd_puskesmas'); // harusnya diambil dari session $pelayanan['kd_dokter'] = $this->input->post('kd_dokter'); $pelayanan['kd_petugas'] = $this->input->post('kd_petugas'); $pelayanan['kd_status_pasien'] = $this->input->post('kd_status_pasien'); // blm $pelayanan['anamnesa'] = $this->input->post('anamnesa'); $pelayanan['cat_fisik'] = $this->input->post('cat_fisik'); $pelayanan['cat_dokter'] = $this->input->post('cat_dokter'); $pelayanan['kd_bed'] = $this->input->post('kd_bed'); $pelayanan['no_rujukan'] = $this->input->post('no_rujukan'); $pelayanan['tempat_rujukan'] = $this->input->post('tempat_rujukan'); // pelayanan obat $obat = array(); $i = 1; while(${"nama_obat_".$i}) { if(isset(${"nama_obat_".$i}) or !empty(${"nama_obat_".$i}) or ${"nama_obat_".$i} !== ""){ $obat[$i]['kd_trans_pelayanan'] = $trans_id; $obat[$i]['nama_obat'] = ${"nama_obat_".$i}; $obat[$i]['dosis'] = ${"dosis_".$i}; $obat[$i]['kd_sat_kecil_obat'] = ${"satuan_".$i}; $obat[$i]['qty'] = ${"jumlah_".$i}; /* insert db here */ $i++; } else { exit(1); } } echo '<pre>'; print_r($obat); } } and model m_crud.php
function get_obat($q){ $this->db->select('kd_obat,nama_obat'); $this->db->like('nama_obat', $q); $this->db->or_like('kd_obat', $q); $query = $this->db->get('obat'); $results = array(); if($query->num_rows > 0){ $i = 1; foreach ($query->result_array() $row){ $results[$i]['label'] = $row['kd_obat'].' - '.$row['nama_obat']; //build array $results[$i]['value'] = htmlentities(stripslashes($row['nama_obat'])); $results[$i]['kd_obat'] = htmlentities(stripslashes($row['kd_obat'])); $i++; } } homecoming $results; }
you can count element 'kd_obat_' using code:
$count=0; foreach($arr $key=>$value){ $pos = strpos($key,'kd_obat_'); if($pos!==false){ $count++; }else{ continue; } } echo $count; php arrays codeigniter post
No comments:
Post a Comment