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 }  ?>

avatar pramadians
@pramadians

26 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

7 Jawaban:

<pre> function insert_laporan(){ ... ... $id_organisasi = $this-&gt;input-&gt;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-&gt;db-&gt;query($querystr); if($query-&gt;result_array()[0]['maks']==NULL){//id org belum ada $id_baru = "$id_organisasi"."001"; }else{//id org sudah ada $maks = (int)$query-&gt;result_array()[0]['maks']; $angka_maks = ++$maks; if($angka_maks&lt;1000){//nomor laporan masih dibawah 1000 if($angka_maks&lt;10){ $angka_maks_str = "00"."$angka_maks"; }elseif($angka_maks&gt;9 && $angka_maks&lt;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"=&gt;"angka laporan lebih dari tiga digit (999)"]; $this-&gt;session-&gt;set_userdata($user_data); return false; } } $querystr = "insert into tb_laporan (id_laporan,...) values ($id_baru,...)"; $this-&gt;db-&gt;query($querystr); return true; }

</pre>

avatar 24361
@24361

17 Kontribusi 9 Poin

Dipost 5 tahun yang lalu

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-&gt;db-&gt;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> &lt;?php foreach ($uidt-&gt;result() as $IDfier) { ?&gt;
&lt;div class="form-group"&gt; &lt;label&gt;ID Laporan1&lt;/label&gt; &lt;input class="form-control" id="id_lap1" name="id_lap1" readonly="readonly" type="text" value="&lt;?php echo $IDfier-&gt;id_organisasi;?&gt;"&gt;&lt;br&gt; &lt;?php echo form_error('id_lap1', '&lt;span class="error"&gt;', '&lt;/span&gt;'); ?&gt; &lt;/div&gt; &lt;?php } ?&gt;
</pre>

avatar pramadians
@pramadians

26 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Controller..

<pre> $tes = $this-&gt;session-&gt;userdata['id_organisasi'];
$data['uidt'] = $this-&gt;aktifrecord-&gt;userIDT($tes); </pre>

avatar pramadians
@pramadians

26 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

kan tinggal dimodifikasi sedikit

<pre> function insert_($test){ $id_organisasi = $test;//$test adalah id organisasi //selanjutnya sama ... </pre>

avatar 24361
@24361

17 Kontribusi 9 Poin

Dipost 5 tahun yang lalu

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> &lt;?php foreach ($uidt-&gt;result() as $IDfier) { ?&gt;
&lt;div class="form-group"&gt; &lt;label&gt;ID Laporan1&lt;/label&gt; &lt;input class="form-control" id="id_lap1" name="id_lap1" readonly="readonly" type="text" value="&lt;?php echo $IDfier-&gt;id_organisasi.'$id_baru';?&gt;"&gt;&lt;br&gt; &lt;?php echo form_error('id_lap1', '&lt;span class="error"&gt;', '&lt;/span&gt;'); ?&gt; &lt;/div&gt; &lt;?php } ?&gt;
</pre>

avatar pramadians
@pramadians

26 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

adapun model nya sebagai berikut :

<pre> function userIDT($tes){ $query = $this-&gt;db-&gt;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-&amp;gt;db-&amp;gt;query($querystr);
if($query-&amp;gt;num_rows()&amp;gt;0){
	foreach($query-&amp;gt;result_array() as $row){
		$angka_terbesar= $row[&#039;angka_terakhir&#039;];
	}
}
if($angka_terbesar &amp;lt; 999)
{
	$angka_baru = ++$angka_terbesar;
	$id_baru=&quot;$id_organisasi&quot;.&quot;$angka_baru&quot;;
	$querystr = &quot;INSERT into tb_laporan(id_lap1) VALUES($id_baru)&quot;;
	$this-&amp;gt;db-&amp;gt;query($querystr);
}

} </pre>

avatar pramadians
@pramadians

26 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Jawaban Terpilih

di view (tambah_data) seharusnya id laporan jangan ditampilkan. view itu kira2 isinya gini:

<pre> &lt;?php foreach ($uidt-&gt;result() as $IDfier) { ?&gt;
&lt;input type="hidden" name="id_organisasi" value="&lt;?php echo $IDfier-&gt;id_organisasi;?&gt;"&gt; &lt;label&gt;Isi laporan&lt;/label&gt;&lt;br&gt; &lt;textarea name="isi"&gt;&lt;/textarea&gt;&lt;br&gt; &lt;button type="submit" name="submit"&gt;Tambah&lt;/button&gt; &lt;?php } ?&gt; </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

avatar 24361
@24361

17 Kontribusi 9 Poin

Dipost 5 tahun yang lalu

Tanggapan

Terimakasih atas bantuan nya Gan...

Login untuk ikut Jawaban