Postingan lainnya
Insert id (primary) berdasarkan kode organisasi.
Assalamu'alaikum..
Saya ingin membuat id pada tb_laporan berdasarkan kode organisasi. Misalnya kode organisasi = 16, maka saat user insert data ke tb_laporan id_lap nya menjadi 16001, 16002, 16003 dst. Adapun sistem yg sedang berjalan saat ini, saya hanya berhasil menampilkan kode organisasinya saja (16) namun untuk angka selanjutnya belum bisa di lakukan. Adapun script nya pada saat ini adalah sebagai berikut :
<?php foreach ($uidt->result() as $IDfier) { ?>
<div class="form-group">
<label>ID Laporan1</label>
<input class="form-control" id="id_lap1" name="id_lap1" readonly="readonly" type="text"
value="<?php echo $IDfier->id_organisasi;?>"><br>
<?php echo form_error('id_lap1', '<span class="error">', '</span>'); ?>
</div>
<?php } ?>
7 Jawaban:
<pre> function insert_laporan(){ ... ... $id_organisasi = $this->input->post('id_organisasi'); $like = $id_organisasi."___"; $querystr = "select right(max(id_laporan),3) as maks from tb_laporan where id_laporan like '$like'"; $query = $this->db->query($querystr); if($query->result_array()[0]['maks']==NULL){//id org belum ada $id_baru = "$id_organisasi"."001"; }else{//id org sudah ada $maks = (int)$query->result_array()[0]['maks']; $angka_maks = ++$maks; if($angka_maks<1000){//nomor laporan masih dibawah 1000 if($angka_maks<10){ $angka_maks_str = "00"."$angka_maks"; }elseif($angka_maks>9 && $angka_maks<100){ $angka_maks_str = "0"."$angka_maks"; }else{ $angka_maks_str = "$angka_maks"; } $id_baru = "$id_organisasi"."$angka_maks_str"; }else{//nomor laporan sudah 1000 $user_data=["error_999"=>"angka laporan lebih dari tiga digit (999)"]; $this->session->set_userdata($user_data); return false; } } $querystr = "insert into tb_laporan (id_laporan,...) values ($id_baru,...)"; $this->db->query($querystr); return true; }
</pre>
Tanggapan
Terimakasih sebelumnya atas jawaban nya Mas/Pak. Namun untuk id_organisasi itu tampilnya otomatis pak. deskripsinya setiap organisasi yg login, itu id nya berbeda-beda. Berikut saya share Model, View dan controller nya. Terimakasih
Model (aktifrecord.php)
<pre> function userIDT($tes){ $query = $this->db->query('SELECT * FROM user AS us JOIN tb_organisasi AS org ON us.id_organisasi=org.id_organisasi WHERE us.id_organisasi="'.$tes.'"'); return $query; } </pre>
View (tambah_data)
<pre>
<?php foreach ($uidt->result() as $IDfier) { ?>
<div class="form-group">
<label>ID Laporan1</label>
<input class="form-control" id="id_lap1" name="id_lap1" readonly="readonly" type="text"
value="<?php echo $IDfier->id_organisasi;?>"><br>
<?php echo form_error('id_lap1', '<span class="error">', '</span>'); ?>
</div>
<?php } ?>
</pre>
Controller..
<pre>
$tes = $this->session->userdata['id_organisasi'];
$data['uidt'] = $this->aktifrecord->userIDT($tes);
</pre>
kan tinggal dimodifikasi sedikit
<pre> function insert_($test){ $id_organisasi = $test;//$test adalah id organisasi //selanjutnya sama ... </pre>
Tanggapan
Terimakasih pencerahan nya mas/pak,, di coba dulu,,
Ketika saya letak kan variabel id_baru ($id_baru) pada view nya,, tidak terjadi perubahan pak. Adapun script pada view adalah sebagai berikut :
<pre>
<?php foreach ($uidt->result() as $IDfier) { ?>
<div class="form-group">
<label>ID Laporan1</label>
<input class="form-control" id="id_lap1" name="id_lap1" readonly="readonly" type="text"
value="<?php echo $IDfier->id_organisasi.'$id_baru';?>"><br>
<?php echo form_error('id_lap1', '<span class="error">', '</span>'); ?>
</div>
<?php } ?>
</pre>
adapun model nya sebagai berikut :
<pre> function userIDT($tes){ $query = $this->db->query('SELECT * FROM user AS us JOIN tb_organisasi AS org ON us.id_organisasi=org.id_organisasi WHERE us.id_organisasi="'.$tes.'"'); return $query;
$id_organisasi = $tes; $like = $id_organisasi."___"; $querystr = "select right(max(id),3) as angka_terakhir from tb_laporan where id like '$like'";
$query = $this-&gt;db-&gt;query($querystr);
if($query-&gt;num_rows()&gt;0){
foreach($query-&gt;result_array() as $row){
$angka_terbesar= $row['angka_terakhir'];
}
}
if($angka_terbesar &lt; 999)
{
$angka_baru = ++$angka_terbesar;
$id_baru="$id_organisasi"."$angka_baru";
$querystr = "INSERT into tb_laporan(id_lap1) VALUES($id_baru)";
$this-&gt;db-&gt;query($querystr);
}
} </pre>
Jawaban Terpilih
di view (tambah_data) seharusnya id laporan jangan ditampilkan. view itu kira2 isinya gini:
<pre>
<?php foreach ($uidt->result() as $IDfier) { ?>
<input type="hidden" name="id_organisasi" value="<?php echo $IDfier->id_organisasi;?>">
<label>Isi laporan</label><br>
<textarea name="isi"></textarea><br>
<button type="submit" name="submit">Tambah</button>
<?php } ?>
</pre>
jadi alurnya: controller menampilkan view (tambah_data) untuk mengisi laporan. ketika laporan di submit. balik lagi ke controller. selanjutnya controller memanggil fungsi insert_laporan() untuk menambahkan laporan ke tb_laporan.
untuk fungsi insert_laporan() cek update jawaban saya sebelumnya
Tanggapan
Terimakasih atas bantuan nya Gan...