Kamis, 28 Mei 2015

Tutorial PHP : Membuat Aplikasi dengan CodeIgniter Part-6 (Aplikasi Travel)

Tutorial PHP : Membuat Aplikasi dengan CodeIgniter Part-6 (Aplikasi Travel)

Membuat Aplikasi CRUD menggunakan CodeIgniter pasti sudah bertebaran dimana-mana, disini  kita coba membuat aplikasi CRUD dengan 3 kriteria besar dalam studi kasus aplikasi travel (Pengelolaan Data Manufaktur).
  1. Bagaimana cara membuat stored procedure pada mysql
  2. Penerapan Audit Log pada aplikasi (Contoh Dasar Lihat Disini)
  3. Penggunaan jqGrid pada CodeIgniter. (Fungsi-fungsi Terkait JQGrid Dilihat disini)

TAMPILAN APLIKASI

Aplikasi Crud Dengan Code Igniter
Aplikasi Crud Dengan Code Igniter

Inisialisasi Library JQGRID

Untuk inisialisasi sebetulnya dapat kita lihat pada artikel sebelumnya, yakni saat kita membuat template. Buka file  /application/views/layout_dashboard/import-doctype.php
[php] // Bagian jQuery + JQueryUI
<style type="text/css">@import url("<?php echo base_url().C_CSS; ?>themes/smoothness/jquery.ui.all.css");</style>
<style type="text/css">@import url("<?php echo base_url().C_CSS; ?>themes/smoothness/jquery-ui-1.8.17.custom.css");</style> <script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery-ui-1.8.17.custom.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/external/jquery.bgiframe-2.1.2.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.effects.core.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.dialog.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.button.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.datepicker.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.tabs.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/ui/jquery.ui.autocomplete.js"></script>
<link rel="stylesheet" href="<?php echo base_url().C_CSS; ?>all.setting.css" type="text/css" media="screen" />
<!-- CSS + JS PLUGIN - GRID //-->
<link rel="stylesheet" type="text/css" media="screen" href="<?php echo base_url().C_JS; ?>jquery/grid/css/ui.jqgrid.css"/>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/grid/js/i18n/grid.locale-en.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/grid/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="<?php echo base_url().C_JS; ?>jquery/grid/js/jquery.jqGrid.min.js"></script>
[/php]

Pembuatan Menu Berdasarkan HakAkses

Untuk membuat menu berdasarkan hak akses dapat dilihat dibagian Login User. Dimana bila dijelaskan table-table yang terkait diantaranya :
  • Table conf_modul
  • Table conf_submodul
  • Table user
  • Table hakses
  • Table LOG
Kita ambil salah satu contoh satu untuk pengelolaan data master, yakni master manufaktur mobil atau produsen mobil.

DATABASE : TABLE, STORED PROCEDURE / FUNCTION

Untuk langkah pertama kita buat 1 paket kebutuhan untuk audit log, dimana ini berfungsi untuk mencatat seluruh kegiatan Proses INSERT/UPDATE/DELETE

TABLE TLOG

[sql] DROP TABLE IF EXISTS `t_log`;
CREATE TABLE IF NOT EXISTS `t_log` (
`logID` varchar(64) NOT NULL DEFAULT '',
`logAktivitas` enum('INSERT','UPDATE','DELETE') NOT NULL DEFAULT 'INSERT',
`logTable` varchar(50) DEFAULT NULL,
`logPenjelasan` text,
`logKomputer` varchar(64) DEFAULT NULL,
`logTerakhir` datetime DEFAULT NULL,
`logUser` varchar(50) DEFAULT NULL,
PRIMARY KEY (`logID`,`logAktivitas`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/sql]

PROCEDURE INSERT TLOG

[sql] DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_tlog_insert`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_tlog_insert`(IN `i_aktivitas` varchar(15), IN `i_table` varchar(50), IN `i_penjelasan` text, IN `i_alamatIP` varchar(150), IN `i_user` varchar(50))
BEGIN
#Routine body goes here...
DECLARE logid VARCHAR(150);
SET logid = UUID(); INSERT INTO t_log
(logID, logAktivitas, logTable, logPenjelasan, logKomputer, logTerakhir, logUser)
VALUES
(logid, i_aktivitas, i_table,i_penjelasan,i_alamatIP,SYSDATE(),i_user);
END$$
[/sql] Selesai dengan urusan Loging. kita buat Fungsionalitas aplikasi untuk mengolah data Manufaktur 😀

FUNCTION fn_trefmanufaktur_insert

Fungsi ini kita akan butuhkan untuk proses insert data manufaktur
[sql] DELIMITER $$
DROP FUNCTION IF EXISTS `fn_trefmanufaktur_insert`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `fn_trefmanufaktur_insert`(`i_manufakturID` varchar(50),`i_manufakturNama` varchar(50), `i_alamatIP` varchar(64),`i_user` varchar(64)) RETURNS int(11)
MODIFIES SQL DATA
BEGIN
/* Declare Boolean-like variables as FALSE. */
DECLARE lv_return_value INT DEFAULT FALSE;
DECLARE lv_error_value INT DEFAULT FALSE;
DECLARE sqlStatement VARCHAR(2500);
/* Declare a generic exit handler to reset error control variable to true. */
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET lv_error_value := TRUE;
/* Insert statement with auto commit enabled. */
INSERT INTO tref_manufaktur (tref_manufaktur.manufakturID,tref_manufaktur.manufakturNama) VALUES (i_manufakturID,i_manufakturNama);
/* inisialisasi nilai log */
SET sqlStatement = CONCAT('manufakturID','=',i_manufakturID,'|','manufakturNama','=',i_manufakturNama);
/* catat log */
CALL sp_tlog_insert('INSERT','TREF_MANUFAKTUR',sqlStatement,i_alamatIP,i_user);
/* True unless the CONTINUE HANDLER disables the error control variable. */
IF lv_error_value = FALSE THEN
SET lv_return_value := TRUE;
END IF;
/* Return local variable. */
RETURN lv_return_value;
END$$
[/sql]

STORED PROCEDURE sp_manufaktur_insert

Fungsi ini kita akan butuhkan untuk proses insert data manufaktur serta log
[sql] DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_manufaktur_insert`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_manufaktur_insert`(IN `i_manufakturID` varchar(50),IN `i_manufakturNama` varchar(50), IN `i_alamatIP` varchar(150),IN `i_user` varchar(50))
BEGIN
#Routine body goes here...
/* Declare a control variable that manages transaction
success or failure. */
DECLARE lv_success_value INT DEFAULT FALSE;
/* Start a transaction context. */
START TRANSACTION;
/* Set a SAVEPOINT in the transaction context. */
SAVEPOINT before_transaction;
/* Call the function. */
SET lv_success_value := fn_trefmanufaktur_insert(i_manufakturID,i_manufakturNama,i_alamatIP,i_user);
/* Check the status of the control variable, and commit
or rollback the transaction. */
IF lv_success_value = TRUE THEN
COMMIT;
SELECT 'OK' AS HASIL;
ELSE
ROLLBACK TO before_transaction;
SELECT 'NOK' AS HASIL;
END IF;
END$$
[/sql]

FUNCTION fn_trefmanufaktur_update

Fungsi ini kita akan butuhkan untuk proses perubahan data manufaktur
[sql] DELIMITER $$
DROP FUNCTION IF EXISTS `fn_trefmanufaktur_update`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `fn_trefmanufaktur_update`(`i_manufakturID` varchar(50),`i_manufakturNama` varchar(50), `i_alamatIP` varchar(64),`i_user` varchar(64)) RETURNS int(11)
BEGIN
/* Declare Boolean-like variables as FALSE. */
DECLARE lv_return_value INT DEFAULT FALSE;
DECLARE lv_error_value INT DEFAULT FALSE;
DECLARE sqlStatement VARCHAR(2500);
/* Declare a generic exit handler to reset error control variable to true. */
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET lv_error_value := TRUE;
/* Update statement with auto commit enabled. */
UPDATE tref_manufaktur SET manufakturNama=i_manufakturNama WHERE manufakturID=i_manufakturID;
/* inisialisasi nilai log */
SET sqlStatement = CONCAT('manufakturID','=',i_manufakturID,'|','manufakturNama','=',i_manufakturNama);
/* catat log */
CALL sp_tlog_insert('UPDATE','TREF_MANUFAKTUR',sqlStatement,i_alamatIP,i_user);
/* True unless the CONTINUE HANDLER disables the error control variable. */
IF lv_error_value = FALSE THEN
SET lv_return_value := TRUE;
END IF;
/* Return local variable. */
RETURN lv_return_value;
END$$
[/sql]

STORED PROCEDURE sp_manufaktur_update

Fungsi ini kita akan butuhkan untuk proses perubahan data manufaktur serta log
[sql] DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_manufaktur_update`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_manufaktur_update`(IN `i_manufakturID` varchar(50),IN `i_manufakturNama` varchar(50), IN `i_alamatIP` varchar(150),IN `i_user` varchar(50))
BEGIN
#Routine body goes here...
/* Declare a control variable that manages transaction
success or failure. */
DECLARE lv_success_value INT DEFAULT FALSE;
/* Start a transaction context. */
START TRANSACTION;
/* Set a SAVEPOINT in the transaction context. */
SAVEPOINT before_transaction;
/* Call the function. */
SET lv_success_value := fn_trefmanufaktur_update(i_manufakturID,i_manufakturNama,i_alamatIP,i_user);
/* Check the status of the control variable, and commit
or rollback the transaction. */
IF lv_success_value = TRUE THEN
COMMIT;
SELECT 'OK' AS HASIL;
ELSE
ROLLBACK TO before_transaction;
SELECT 'NOK' AS HASIL;
END IF;
END$$
[/sql]

FUNCTION fn_trefmanufaktur_delete

Fungsi ini kita akan butuhkan untuk proses penghapusan data manufaktur
[sql] DELIMITER $$
DROP FUNCTION IF EXISTS `fn_trefmanufaktur_delete`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `fn_trefmanufaktur_delete`(`i_manufakturID` varchar(50),`i_manufakturNama` varchar(50), `i_alamatIP` varchar(64),`i_user` varchar(64)) RETURNS int(11)
BEGIN
/* Declare Boolean-like variables as FALSE. */
DECLARE lv_return_value INT DEFAULT FALSE;
DECLARE lv_error_value INT DEFAULT FALSE;
DECLARE sqlStatement VARCHAR(2500);
/* Declare a generic exit handler to reset error control variable to true. */
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET lv_error_value := TRUE;
/* DELETE statement with auto commit enabled. */
DELETE FROM tref_manufaktur WHERE manufakturID=i_manufakturID;
/* inisialisasi nilai log */
SET sqlStatement = CONCAT('manufakturID','=',i_manufakturID,'|','manufakturNama','=',i_manufakturNama);
/* catat log */
CALL sp_tlog_insert('DELETE','TREF_MANUFAKTUR',sqlStatement,i_alamatIP,i_user);
/* True unless the CONTINUE HANDLER disables the error control variable. */
IF lv_error_value = FALSE THEN
SET lv_return_value := TRUE;
END IF;
/* Return local variable. */
RETURN lv_return_value;
END$$
[/sql]

STORED PROCEDURE sp_manufaktur_delete

Fungsi ini kita akan butuhkan untuk proses penghapusan data manufaktur serta log
[sql] DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_manufaktur_delete`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_manufaktur_delete`(IN `i_manufakturID` varchar(50),IN `i_manufakturNama` varchar(50), IN `i_alamatIP` varchar(150),IN `i_user` varchar(50))
BEGIN
#Routine body goes here...
/* Declare a control variable that manages transaction
success or failure. */
DECLARE lv_success_value INT DEFAULT FALSE;
/* Start a transaction context. */
START TRANSACTION;
/* Set a SAVEPOINT in the transaction context. */
SAVEPOINT before_transaction;
/* Call the function. */
SET lv_success_value := fn_trefmanufaktur_delete(i_manufakturID,i_manufakturNama,i_alamatIP,i_user);
/* Check the status of the control variable, and commit
or rollback the transaction. */
IF lv_success_value = TRUE THEN
COMMIT;
SELECT 'OK' AS HASIL;
ELSE
ROLLBACK TO before_transaction;
SELECT 'NOK' AS HASIL;
END IF;
END$$
[/sql]

^_^ Seteleah kita persiapkan semua kebutuhan akses data sekarang kita beralih ke sisi aplikasi namun masih dalam sisi server

CONTROLLER (application/controllers/Trefmanufaktur.php)

Controller ini kita gunakan untuk memproses semua data manufaktur. untuk penjelasan bisa dilihat setiap baris comment pada baris perintah
Pertama kita buat kerangka seperti dibawah :
[php] class Trefmanufaktur extends CI_Controller {
private $nomor_manufaktur_baru; /* untuk generate nomor baru */
private $table; /* mendefinisikan table */
private $primaryKey; /* mendefinisikan promary Key */
private $username; /* menampung user yang login untuk kebutuhan log */
private $conn; /* menampung variable koneksi */
function __construct(){} /* menginisialisasi nilai awal pada class */
public function index(){} /* event index */
/* mendapatkan data record dari berdasarkan record yang dipilih pada grid */
public function getDataManufaktur(){}
/* menghapus record */
public function delete()
/* merubah data */
public function update()
/* memasukan data baru */
public function entry()
/* menampilkan data */
public function gridManufaktur(){}
[/php]

__construct

[php] function __construct(){ parent::__construct();
/* mendeklarasikan, meng-inisialisasi variable usernip sebagai penampun session nip */
$this->usernip = $this->session->userdata('nip');
/* membangun koneksi dengan melakukan panggilan class citdbase */
$this->conn = new Citdbase();
/* pengecekan, apakah sudah ada yang login atau belum */
if (($this->usernip == '') || (!isset ($this->usernip)))
{
/* jika belum login, halaman akan terlempar ke halaman login */
redirect('home', 'refresh');
/* jika tidak berhasil tukarkan dengan perintah ini */
// $this->load->view('login_form');
}
else{
/* inisialisasi sql statement untuk memanggil stored procedure */
$sql = "call sp_GetUserByNIP(?)";
/* ekseskusi stored procedure */
$result = $this->db->query($sql, array(mysql_escape_string($this->usernip)),TRUE)->result();
/* retrieve nilai/hasil dari hasil eksekusi stored procedure */
foreach ($result as $row) {
$this->username = $row->username;
}
}
/* inisialisasi nama table dan primarykey dari table */
$this->table = "tref_manufaktur";
$this->primaryKey = "manufakturID";
/* inisialisasi nomor manufaktur baru */
$this->nomor_manufaktur_baru= $this->conn->CIT_AUTONUMBER($this->table, $this->primaryKey, 'M', '2');
}
[/php]

Action Index

[php] public function index(){
/* inisialisasi variable yang dibutuhkan pada template dan form utama admin */
$view = array(
'mainview'=>'view_tref_manufaktur'
,'namaform'=>'FORM MANUFAKTUR'
,'information_message'=>'REFERENSI MANUFAKTUR'
,'title'=>'DASHBOARD '.APP_NAME); /* inisialisasi nilai textbox */
$textbox = array('manufakturID'=> $this->nomor_manufaktur_baru
, 'manufakturNama'=>'');
/* merge array */
$data = array_merge($view,$textbox);
/* render */
$this->load->view('view_tref_manufaktur',$data);
}
[/php]

Action Entry/Insert Data

[php] /* memasukan data baru */
public function entry(){
/* mendapatkan variabel post dari text-box nama manufaktur pada view */
$manufakturNama = $_POST["manufakturNama"]; /* mendapatkan variabel post dari text-box id manufaktur pada view */
/* $manufakturID = $_POST["manufakturID"]; */
/* karena proses insert, dan menghindari duplikasi entry pada kolom manufakturID, generate ulang untuk ID Manufaktur */
$manufakturID = $this->conn->CIT_AUTONUMBER($this->table, $this->primaryKey, 'M', '2');
/* deklarasi nilai balik proses penyimpanan */
$return = array();
/* jika nama manufaktur tidak kosong, maka eksekusi stored procedure penyimpanan manufaktur */
if((isset($manufakturNama)) && (trim($manufakturNama)!="")){
/* inisialisasi sql statement untuk memanggil stored procedure */
$sql = "call sp_manufaktur_insert(?,?,?,?)";
/* ekseskusi stored procedure, dengan memberikan parameter yang dibutuhkan oleh stored procedure */
$result = $this->db->query($sql
, array(
mysql_escape_string($manufakturID)
, mysql_escape_string($manufakturNama)
, $_SERVER["REMOTE_ADDR"] , $this->username
),TRUE)->result();
/* inisialisasi hasil kembalian pemanggilan stored procedure */
$hasil = 0;
foreach ($result as $row) {
$hasil = $row->HASIL;
}
if($hasil == 'OK'){
/* jika OK, maka tampilkan pesan berhasil */
$return = array('alert'=>'<h4 class="alert_success">DATA BERHASIL DISIMPAN</h4>');
}else{
/* jika NOK, maka tampilkan pesan gagal */
$return = array('alert'=>'<h4 class="alert_error">DATA GAGAL DISIMPAN</h4>');
}
}else{
/* jika nama manufaktur kosong, maka tampilkan pesan error */
$return = array('alert'=>'<h4 class="alert_error">A Success Message</h4>');
}
/* render pesan sebagai nilai balik */
echo json_encode($return);
}
[/php]

Action Update Data

[php] /* merubah data */
public function update(){
/* mendapatkan variabel post dari text-box nama manufaktur pada view */
$manufakturNama = $_POST["manufakturNama"]; /* mendapatkan variabel post dari text-box id manufaktur pada view */
$manufakturID = $_POST["manufakturID"];
/* deklarasi nilai balik proses penyimpanan */
$return = array();
/* jika nama manufaktur tidak kosong, maka eksekusi stored procedure penyimpanan manufaktur */
if((isset($manufakturNama)) && (trim($manufakturNama)!="")){
/* inisialisasi sql statement untuk memanggil stored procedure */
$sql = "call sp_manufaktur_update(?,?,?,?)";
/* ekseskusi stored procedure, dengan memberikan parameter yang dibutuhkan oleh stored procedure */
$result = $this->db->query($sql
, array(
mysql_escape_string($manufakturID)
, mysql_escape_string($manufakturNama)
, $_SERVER["REMOTE_ADDR"] , $this->username
),TRUE)->result();
/* inisialisasi hasil kembalian pemanggilan stored procedure */
$hasil = 0;
foreach ($result as $row) {
$hasil = $row->HASIL;
}
if($hasil == 'OK'){
/* jika OK, maka tampilkan pesan berhasil */
$return = array('alert'=>'<h4 class="alert_success">DATA BERHASIL DISIMPAN</h4>');
}else{
/* jika NOK, maka tampilkan pesan gagal */
$return = array('alert'=>'<h4 class="alert_error">DATA GAGAL DISIMPAN</h4>');
}
}else{
/* jika nama manufaktur kosong, maka tampilkan pesan error */
$return = array('alert'=>'<h4 class="alert_error">A Success Message</h4>');
}
/* render pesan sebagai nilai balik */
echo json_encode($return);
}
[/php]

Action Delete Data

[php] /* menghapus record */
public function delete(){ /* mendapatkan variabel post dari text-box id manufaktur pada view */
$manufakturID = $_POST["manufakturID"];
$manufakturNama = $_POST["manufakturNama"];
/* deklarasi nilai balik proses penyimpanan */
$return = array();
/* inisialisasi sql statement untuk memanggil stored procedure */
$sql = "call sp_manufaktur_delete(?,?,?,?)";
/* ekseskusi stored procedure, dengan memberikan parameter yang dibutuhkan oleh stored procedure */
$result = $this->db->query($sql
, array(
mysql_escape_string($manufakturID)
, mysql_escape_string($manufakturNama)
, $_SERVER["REMOTE_ADDR"] , $this->username
),TRUE)->result();
/* inisialisasi hasil kembalian pemanggilan stored procedure */
$hasil = 0;
foreach ($result as $row) {
$hasil = $row->HASIL;
}
if($hasil == 'OK'){
/* jika OK, maka tampilkan pesan berhasil */
$return = array('alert'=>'<h4 class="alert_success">DATA BERHASIL DIHAPUS</h4>');
}else{
/* jika NOK, maka tampilkan pesan gagal */
$return = array('alert'=>'<h4 class="alert_error">DATA GAGAL DIHAPUS</h4>');
}
/* render pesan sebagai nilai balik */
echo json_encode($return);
}
[/php]

Action SELECT Data dalam grid

[php] /* menampilkan data */
public function gridManufaktur(){
/* inisialisasi variable index untuk melakukan sorting pada grid */
$sidx = $_REQUEST['sidx']; /* inisialisasi metode sorting pada grid */
$sord = $_REQUEST['sord'];
/* inisialisasi halaman yang sedang diakses pada grid */
$page = $_REQUEST['page'];
/* inisialisasi jumlah row yang diakses setiap kali tampil grid */
$limit = $_REQUEST['rows'];
/* inisialisasi koneksi */
// $cn = new Citdbase(); jika tidak menggunakan variable global
$data = $this->conn->CIT_JQGRID('tref_manufaktur');
/* mendapatkan jumlah data */
$count = count($data);
/* jika data > 0 , total halaman adalah hasil pembulatan dari jumlah data dibagi batas data yang tampil */
/* jika data = 0 , total halaman adalah 0 */
if( $count > 0 ) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
/* jika halaman > jumlah halaman , halaman = jumlah halaman*/
if ($page > $total_pages) $page=$total_pages;
/* mendapatkan nilai awal untuk query */
$start = $limit*$page - $limit;
/* jika nilai awal < 0 , maka nilai awal di set menjadi 0*/
if ($start<0) $start=0;
/* membentuk queri dengan limit dan start*/
$row = $this->conn->CIT_JQGRID('tref_manufaktur',$sidx, $sord, $start, $limit);
$responce->page = $page;
$responce->total = $total_pages;
$responce->records = $count;
$i=0;
$rowId = 1;
/* extract data hasil eksekusi dan tempelkan pada array untuk dimasukan kedalam grid*/
foreach ($row as $val => $r) {
$responce->rows[$i]['manufakturID']=$r['manufakturID'];
$responce->rows[$i]['cell']=array(
$r['manufakturID'],
$r['manufakturNama'] );
$i++;
}
/* encode array kedalam bentuk json */
echo json_encode($responce);
}
[/php]

Action mendapatkan nilai berdasarkan ID

[php] public function getDataManufaktur(){
/* mendapatkan variabel post manufakturID */
$manufakturID = $_POST["manufakturID"]; /* mendapatkan nilai yang dibutuhkan berdasarkan variabel yang dikirim */
$manufakturNama = $this->conn->CIT_GETSOMETHING('manufakturNama', $this->table, array($this->primaryKey=>$manufakturID));
/* simpan nilai yang dibutuhkan berdasarkan variabel yang dikirim kedalam variabel array untuk diencode kedalam bentuk jSon */
$return = array('manufakturNama'=>$manufakturNama);
echo json_encode($return);
}
[/php]

Setelah kita membuat bagian back-end, kita beranjak ke bagian View
.

view_tref_manufaktur

[php] <div id="notif"></div>
<article class="module width_full">
<header><h3><?php echo $namaform; ?></h3></header>
<div class="module_content">
<a class="ui-state-default ui-corner-all" id="new" href="javascript:void(0)"><span class="ui-icon ui-icon-gear"></span>Baru/Batal</a>
<a class="ui-state-default ui-corner-all" id="save" href="javascript:void(0)"><span class="ui-icon ui-icon-disk"></span>Simpan</a>
<a class="ui-state-default ui-corner-all" style="display: none;" id="update" href="javascript:void(0)"><span class="ui-icon ui-icon-disk"></span>Update</a>
<a class="ui-state-default ui-corner-all" id="delete" href="javascript:void(0)"><span class="ui-icon ui-icon-trash"></span>Hapus</a>
<a class="ui-state-default ui-corner-all" id="edit" href="javascript:void(0)"><span class="ui-icon ui-icon-pencil"></span>Edit</a>
<fieldset>
<label>ENTRY / EDIT MANUFAKTUR</label>
<input type="hidden" name="t-manufakturID" id="t-manufakturID" value="<?php echo $manufakturID;?>"/>
<input type="text" name="t-manufakturNama" id="t-manufakturNama" value="<?php echo $manufakturNama;?>"/>
</fieldset>
<div class="clear"></div>
</div>
</article><!-- end of stats article -->
<article class="module width_full">
<header><h3>DATA MANUFAKTUR</h3></header>
<div class="module_content">
<table align="center" style="text-align: center;" id="gManufaktur"></table>
<div id="pManufaktur"></div>
<div class="clear"></div> <div class="clear"></div>
</div>
</article><!-- end of stats article -->
<script type="text/javascript" src="<?php echo base_url().C_JS;?>application/grid-manufaktur.js"></script>
[/php]

Kemudian langkah terakhir kita membuat file Javascript untuk pemrosesan tombol dan grid. buat 1 file difolder _assets/js/application/

grid-manufaktur.js

[javascript] $(function(){
var lastsel;
jQuery("#gManufaktur").jqGrid({
url:'Trefmanufaktur/gridManufaktur',
datatype: "json",
colNames:['ID', 'NAMA'],
colModel:[
{name :'manufakturID',index:'manufakturID',width : 50},
{name :'manufakturNama',index:'manufakturNama',editable:true,width:150}
],
rownumbers : true,
rowNum : 10,
autowidth : true,
height : '100%',
multiselect : true,
rowList : [10,20,30],
pager : jQuery('#pManufaktur'),
sortname : 'manufakturID',
viewrecords : true,
sortorder : "ASC",
loadComplete:function(){
$("#gManufaktur").hideCol('manufakturID');
},onSelectRow:function(id){
var id = $("#gManufaktur").getRowData(id)['manufakturID'];
var name = $("#gManufaktur").getRowData(id)['manufakturNama'];
$("#delete").show('fast');
//jQuery(this).editRow(id, true);
}
}).navGrid('#pManufaktur',{edit:true,add:true,del:false});
});
/* tombol penyimpanan */
$("#save").click(function(){
$.post("Trefmanufaktur/entry",{
manufakturID : $("#t-manufakturID").val()
, manufakturNama : $("#t-manufakturNama").val()
},function(e){
$("#notif").html(e.alert);
$("#gManufaktur").trigger('reloadGrid');
},'json');
});
/* tombol perubahan data */
$("#update").click(function(){
$.post("Trefmanufaktur/update",{
manufakturID : $("#t-manufakturID").val()
, manufakturNama : $("#t-manufakturNama").val()
},function(e){
$("#notif").html(e.alert);
$("#gManufaktur").trigger('reloadGrid');
},'json');
});
/* tombol baru */
jQuery("#new").click( function() {loadUrl('Trefmanufaktur');});
/* tombol edit */
jQuery("#edit").click( function() {
var s = $("#gManufaktur").jqGrid('getGridParam','selarrrow');
if (s.length > 1 || s.length < 1){
alert('Select one for editing');
}else{
var id = $("#gManufaktur").getRowData(s)['manufakturID'];
$.post("Trefmanufaktur/getDataManufaktur", {
manufakturID : id
}, function(e){
$("#t-manufakturID").val(id);
$("#t-manufakturNama").val(e.manufakturNama);
$("#update").show();
$("#save").hide();
}, 'json')
}
});
/* tombol hapus */
jQuery("#delete").click( function() {
var s = $("#gManufaktur").jqGrid('getGridParam','selarrrow');
if (s.length < 1){
alert('Select one for Delete');
}else{
var i =0;
var splitter = s.toString().split(',');
alert(splitter[0]);
for (i=0;i<$("#gManufaktur").jqGrid('getGridParam','selarrrow').length;i++){
var id = $("#gManufaktur").getRowData(splitter[i])['manufakturID'];
$.post('Trefmanufaktur/delete', {
manufakturID : id
,manufakturNama : $("#gManufaktur").getRowData(splitter[i])['manufakturNama'] }, function(e){
$("#notif").html(e.alert);
$("#gManufaktur").trigger('reloadGrid');
},'json');
}
}
});
[/javascript] Sampai dengan disini, aplikasi crud CodeIgniter sudah beres. Untuk data master sesuai dengan rancangan database yang pernah kita buat, silahkan untuk dicoba 😀

0 komentar:

Posting Komentar