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).- Bagaimana cara membuat stored procedure pada mysql
- Penerapan Audit Log pada aplikasi (Contoh Dasar Lihat Disini)
- Penggunaan jqGrid pada CodeIgniter. (Fungsi-fungsi Terkait JQGrid Dilihat disini)
TAMPILAN APLIKASI
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
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/DELETETABLE 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 perintahPertama 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