Senin, 01 Agustus 2011

PHP Codeigniter - Export data dari database ke excel

export data from database to excel.

Pada kali ini saya juga akan sharing tentang export data dari database ke excel, dengan menggunakan library excel_reader2 yang bisa di download di http://code.google.com/p/php-excel-reader/downloads/list atau mirror

Sebelumnya, sharing ini adalah kelanjutan atau bisa dibilang masih berhubungan dengan sharing yang sebelumnya, yaitu sharing tentang penggunaan CI + jQuery 1.3.2  + Colorbox + Flexigrid. Jadi alangkah baikknya jika baca sharing yang sebelumnya, karena file yang ada di sharing tersebut dipakai pada sharing kali ini.. hehe

Langsung saja, pada sharing tentang export data ke excel ini cukup mudah dan simple (hehe bukannya sombong loh... XD),
jika excel_reader2 sudah di download taruh file excel_readernya dalam library untuk CI Versi 2 ada di folder CI_Root/application/libraries.
Selanjutnya edit file user.php dan buat fungsi export dan set_header seperti di bawah ini
function export(){
  $header = $this->set_header();
  $data = array($header);
    
  $filename  = 'Laporan_User';
  $loop = 0;
  foreach($this->user_model->getUser()->result() as $row){   
   $content[$loop] = array($row->USERNAME, $row->NAME, $row->EMAIL, $row->ADDRESS);
   array_push($data, $content[$loop]);
   $loop++;    
  }
  $this->load->helper('to_excel');
  array_to_excel($data, $filename); 
 }
  
 function set_header(){
  return array('Username','Nama','Email','Alamat');
 }

Setelah itu, edit pula file user_view.php
tambahkan button untuk export excel seperti contoh di bawah ini.
{name: 'Export', bclass: 'add', onpress : action}, // bclass : 'add' hanya untuk tampilan icon yg akan ditampilkan
{separator: true}

Setelah itu, tambahkan kondisi pada fungsi action pada user_view.php
if (com == 'Export') {
 if(confirm('Export to Excel file ?')) {
  export_excel();
 }
}

Tambahkan pula fungsi export_excel pada user_view.php
function export_excel() {
 window.open("<?php echo $url_form?>/export/","export_window");
}

Dan yang terakhir, buat file dengan nama to_excel_helper.php dan taruh dalam folder helper di CI.
if (!defined('BASEPATH')) exit('No direct script access allowed'); 

function to_excel($query, $filename='xlsoutput') 
{ 
     $headers = ''; // variable untuk menampung header 
     $data = ''; // variable untuk menampung data 

     //$obj =& get_instance(); 

     $fields = $query->field_data(); 
     if ($query->num_rows() == 0) { 
          echo 'The table appears to have no data.'; 
     } else { 
          foreach ($fields as $field) { 
             $headers .= $field->name . "\t"; 
          } 

          foreach ($query->result() as $row) { 
               $line = ''; 
               foreach($row as $value) { 
                    if ((!isset($value)) OR ($value == "")) { 
                         $value = "\t"; 
                    } else { 
                         $value = str_replace('"', '""', $value); 
                         $value = '"' . $value . '"' . "\t"; 
                    } 
                    $line .= $value; 
               } 
               $data .= trim($line)."\n"; 
          } 

          $data = str_replace("\r","",$data); 

          header("Content-type: application/x-msdownload"); 
          header("Content-Disposition: attachment; filename=$filename.xls"); 
          echo "$headers\n$data"; 
     } 
} 

function array_to_excel($array, $filename='xlsoutput') 
{ 
     $headers = ''; // variable untuk menampung header 
     $data = ''; // variable untuk menampung data 

     //$obj =& get_instance(); 

     //$fields = $query->field_data(); 
     if (sizeof($array) == 0) { 
          echo 'The table appears to have no data.'; 
     } else { 
          foreach ($array as $row) { 
               $line = ''; 
               foreach($row as $value) { 
                    if ((!isset($value)) OR ($value == "")) { 
                         $value = "\t"; 
                    } else { 
                         $value = str_replace('"', '""', $value); 
                         $value = '"' . $value . '"' . "\t"; 
                    } 
                    $line .= $value; 
               } 
               $data .= trim($line)."\n"; 
          } 

          $data = str_replace("\r","",$data); 


        header('Content-type: application/ms-excel'); 
        header("Content-Disposition: attachment; filename=$filename.xls"); 
        echo $data; 
     } 
}
Nah, lumayan mudah kan untuk export dari database ke file excel...

Sekian sharing untuk export ke file excel.
Semoga bisa bermanfaat... ^_^


Keyword : PHP CodeIgniter, Export to excel, excel reader

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi    : http://code.google.com/p/php-excel-reader/
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Sharing Penggunaan jQuery Flexigrid dan Colorbox pada CodeIgniter

Wah setelah sekian lama tidur dari dunia per blog-an, kini bangun lagi untuk ngeblog.. hehe maklum sok sibuk.. XD
kali ini saya akan sharing tentang penggunaan CI + jQuery 1.3.2 (jQuery UI) + Colorbox + Flexigrid. Flexigrid adalah plugin dari jQuery untuk menampilkan data dalam format grid/tabel (ya begitulah pokoknya mah.. hahay..), sedang Colorbox fungsinya terutama yg saya ambil adalah untuk membuat tampilan form.

langsung saja, pertama2 download dulu bahan2 yang dibutuhkan, seperti
  1. CI (CI yg saya gunakan pada sharing kali ini adalah CI versi 2) di codeigniter.com
  2. jQuery, bisa di jqueryui.com,
  3. Flexigrid, bisa d dapat di  flexigrid for jquery (per 25 Juli 2011) atau mirror
  4. Colorbox, bisa di dapat di  colorpowered.com (per 25 Juli 2011) atau mirror. Untuk Colorbox, saya menggunakan css dan folder images dari example 5 dalam sharing kali ini.
Setelah semua bahan di dapat, ekstrak CI ke web server (contoh Xampp) dengan nama test, setelah itu taruh/ekstrak file/folder jQuery, Flexigrid dan Colorbox ke folder "api" yg sejajar dg folder system dalam aplikasi CI seperti gambah dibawah ini. Namun kalau ingin lebih mudah mendapatkan bahan-bahan yang dibutuhkan, silakan download file api.zip / mirror yang telah saya sediakan.


Pertama2, untuk design database, saya hanya menggunakan satu tabel aja (ya kan cuma contoh, g papa kan...??!!! hehe)
buat tabel dengan nama 'user_account' pada mysql.
CREATE TABLE IF NOT EXISTS `user_account` (
  `USERNAME` varchar(20) NOT NULL,
  `NAME` varchar(50) NOT NULL,
  `EMAIL` varchar(32) NOT NULL,
  `ADDRESS` varchar(100) NOT NULL,
  PRIMARY KEY (`USERNAME`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Setelah itu, buat file controller untuk menangani request dari user dengan nama file user.php yang isinya
class User extends CI_Controller{
 function __construct(){
  parent::__construct();
  $this->load->model('user_model');
 }
 
 function index(){
  $data['view']        = 'user/user_view';
  $data['url_json']  = site_url('user/json_user');
  $data['url_form']    = site_url('user');
  $data['title']      = 'Data User';
  $data['title_form']  = 'Form Data User';
  $this->load->view('home',$data);
 }
 
 function json_user(){
  $page   = $this->input->post('page');
  $rp   = $this->input->post('rp');
  $sortname  = $this->input->post('sortname');
  $sortorder  = $this->input->post('sortorder');
  if (!$sortname) $sortname  = 'username';
  if (!$sortorder) $sortorder = 'asc';
  
  $sort = "ORDER BY $sortname $sortorder";  // untuk pengurutan data
  
  if (!$page) $page = 1;  // halaman yg di tampilkan pertama kali
  if (!$rp) $rp = 10;  // total baris yg ditampilkan
  
  $start = (($page-1) * $rp);
  $limit = "LIMIT $start, $rp";  // untuk pembatasan data yg ditampilkan / pagination
  
  $query = $this->input->post('query');  // parameter yg diinputkan saat pencarian data
  $qtype = $this->input->post('qtype');  // kolom atribut yang ingin dicari 
  
  $where = "";
  if ($query) $where .= " WHERE $qtype LIKE '%$query%'";  // untuk proses pencarian data
  
  $result = $this->user_model->getUser($where, $sort, $limit);
  $total  = $this->user_model->countUser($where);
  
  $json  = "";    
  $json .= "{\n";
  $json .= "page: $page,\n";
  $json .= "total: $total,\n";
  $json .= "rows: [";
  $rc = false;
  $i = $start;
  foreach ($result->result() as $row) {
   $i++;
   if($i <= 9) $i = '0'.$i;
   if ($rc) $json .= ",";
   $json .= "\n{";
   $json .= "id:'".$row->USERNAME."',";
   $json .= "cell:[";
   $json .= "'".$i."',";
   $json .= "'".addslashes($row->USERNAME)."',";
   $json .= "'".addslashes($row->NAME)."',";
   $json .= "'".addslashes($row->EMAIL)."',";
   $json .= "'".addslashes($row->ADDRESS)."'";
   $json .= "]}";
   $rc = true;  
  }
  $json .= "\n]}";
  
  header("Expires: Wed, 01 Jan 2020 00:00:00 GMT" ); 
  header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT"); 
  header("Cache-Control: no-cache, must-revalidate" ); 
  header("Pragma: no-cache" );
  header("Content-type: text/x-json");
  echo $json;
 }
 
 function add(){  //  fungsi untuk menampilkan form tambah user
  $data['view']    = 'user/user_form';
  $data['action']  = site_url('user/create');
  $this->load->view('home', $data);
 }
 
 function create(){  //  fungsi untuk tambah data user
  $data   = array('username' => trim($this->input->post('username')),
       'name' => trim($this->input->post('name')), 
       'email' => trim($this->input->post('email')),
       'address' => trim($this->input->post('address')));         
  $this->user_model->addUser($data);
  $this->reload(); 
 }
 
 function edit($username){  //  fungsi untuk menampilkan form edit user
  $user = $this->user_model->getUserByUsername($username)->row();
  $data['action']  = site_url("user/update/$username");
  $data['view']     = 'user/user_form';
  $data['username'] = $user->USERNAME;
  $data['name']  = $user->NAME;
  $data['email']  = $user->EMAIL;
  $data['address'] = $user->ADDRESS;
  $this->load->view('home', $data);
 }
 
 function update($username){  //  fungsi untuk edit data user
  $data   = array('name' => trim($this->input->post('name')), 
       'email' => trim($this->input->post('email')),
       'address' => trim($this->input->post('address'))); 
  $this->user_model->editUser($username, $data);
  $this->reload();
 }
 
 function delete($username){  //  fungsi untuk hapus data user
  $this->user_model->deleteUser($username);
 }
 
 function reload(){  // fungsi untuk mereload flexigrid
  echo '<script type="text/javascript">parent.$("#tabel").flexReload();</script>';
  echo '<script type="text/javascript">parent.$.fn.colorbox.close();</script>';
 }
}

Dari yang saya dapet dari internet, terdapat fungsi dari flexigrid yang ditaruh dalam folder libraries d CI.
Namun setelah saya coba, bisa juga file flexigridnya disatukan dalam controller seperti pada fungsi json_user di atas.

Setelah membuat controller selesai, buatlah model dengan nama user_model.php yg isinya
*Untuk proses validasi data bisa kamu bikin peraturannya sendiri, seperti tidak boleh ada username yg sama, dan lainnya.

class User_model extends CI_Model{
 function __construct(){
  parent::__construct();
 }
 
 var $table = 'user_account';
 
 //  fungsi untuk mengambil data user per-page (pagination), 
 //  ** khusus untuk MySql, cos untuk Oracle ataupun Postgre saya blum coba.. hehe
 function getUser($where = '', $sort = '', $limit = ''){
  return $this->db->query("select * from ".$this->table." $where $sort $limit");
 }
 
 function getUserByUsername($username){
  return $this->db->get_where($this->table, array('username' => $username));
 }
 
 function countUser($where){
  return $this->getUser($where)->num_rows();
 }

 function addUser($data){
  $this->db->insert($this->table,$data); 
 }
 
 function editUser($username, $data){
  $this->db->where('username',$username);
  $this->db->update($this->table, $data);
 }
 
 function deleteUser($username){
  $this->db->delete($this->table, array('username' => $username));
 }
}

untuk query dalam User_model.php nya hanya untuk CRUD yang sederhana (hehe belagu bin ngguaya nih.. :P), jadi saya pake Active Record-nya CI, biar simpel (kecuali fungsi yang pertama XD).

untuk view ada 3 file yg harus dibuat
1. file home.php yg berisi
<html>
<head>
 <meta name="KEYWORDS" content="Contoh JQuery Flexigrid dan Colorbox">
    <title>Contoh JQuery Flexigrid dan Colorbox</title>
 <link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/themes/redmond/jquery.ui.all.css" />
 <link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/flexigrid/css/flexigrid.css">
 <link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/colorbox/colorbox.css" />
 
 <!-- yang ini optional, sesuai css yg kamu mau, tapi sudah saya includkan d api.zip-->
 <link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/style.css" />
 
 <script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/jquery/jquery-1.3.2.js"></script>
 <script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/flexigrid/js/flexigrid.js"></script>
 <script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/colorbox/jquery.colorbox.js"></script>

 <script type="text/javascript">
  $(document).ready(function() {
   $("#cancel").click(function() {
    parent.$.fn.colorbox.close();
   });
  });
 </script>
</head>
<body>
<?php $this->load->view($view);?>
</body>
</html>

2. file user_view.php, file ini ditaruh dalam folder user pada view. file ini bertujuan untuk menampilkan data pada grid.
<table id="tabel" style="display:none"></table>
<script type="text/javascript" language="javascript">
 $('#tabel').flexigrid ({
  url: '<?php echo $url_json?>',       // url untuk memanggil fungsi di controller test/json_test
  dataType: 'json', 
  colModel : [
   {display: 'NO',   name : 'no',   width : 25,  sortable : true,  align: 'center'},
   {display: 'Username',  name : 'username',  width : 80,  sortable : true,  align: 'left'},
   {display: 'Nama',   name : 'name',   width : 110,  sortable : true,  align: 'left'},
   {display: 'Email',   name : 'email',  width : 200,  sortable : false, align: 'left'},
   {display: 'Alamat',  name : 'address',  width : 320,  sortable : false, align: 'left'}
  ],
  buttons : [     // tombol untuk melakukan tambah/edit/hapus data di grid
   // bclass untuk flexigrid sudah di definisikan (default), untuk tambah : add, edit : edit, dan hapus : delete. 
   //Jika ingin buat bclass baru, maka harus mengedit colorbox.css-nya (tidak direkomendasikan bagi yg belum expert...hehe)
   {name: 'Add', bclass: 'add', onpress : action}, 
   {separator: true},
   {name: 'Edit', bclass: 'edit', onpress : action},
   {separator: true},
   {name: 'Delete', bclass: 'delete', onpress : action},
   {separator: true}
  ],
  searchitems : [    // tombol untuk pencarian data
   // untuk field "name" usahakan namanya sama dengan nama atribut yg dicari dalam database
   {display: 'Username', name : 'username', isdefault: true}, 
   {display: 'Nama', name : 'name', isdefault: false}
  ],
  sortname: 'username',  // sortname sesuaikan dengan nama atribut dalam database
  sortorder: 'asc',
  usepager: true,
  resizable: false,
  title: '<?php echo $title?>',
  useRp: true,
  rp: 10,
  showTableToggleBtn: true,
  width: 800,
  height: 241
 });
 
  
 function action(com,grid) {
  // 'Add' === name dalam button flexigrid 
  if (com == 'Add') {   
   forms('add', '');
  } else if (com == 'Edit') {
   // cek baris yg d pilih (contoh baris yg dipilih min/max adalah 1)
   if ($('.trSelected',grid).length == 1) { 
    $('.trSelected',grid).each(function() {
     var id = $(this).attr('id');
     id = id.substring(id.lastIndexOf('row')+3);  // ambil data kolom id       
     forms('edit', id);
    });    
   } else {
    alert('Silahkan pilih salah satu baris yang ingin di edit');
    return false;
   }
  } else if (com == 'Delete') {
   if ($('.trSelected',grid).length == 1) {
    $('.trSelected',grid).each(function() {
     var id   = $(this).attr('id');
     id = id.substring(id.lastIndexOf('row')+3);
     if(confirm('Apakah anda yakin akan menghapus data : '+id+' ?')) {
      $.ajax({
       type: 'get',
       url:'<?php echo $url_form?>/delete/'+id,         // url untuk fungsi pada controller test/delete($id)
       success: function() { $('#tabel').flexReload(); }
      });
     }
    });
   } else {
    alert('Silahkan pilih salah satu baris yang ingin di delete');
    return false;
   }
  }
 }
  
 function forms(clas, id){ // setting untuk tampilan colorbox  
  if(id != ''){ 
   id = '/' + id; 
  }else { 
   id = ''; 
  }
  $('.'+clas).colorbox({
   href  : '<?php echo $url_form?>/'+clas+id,  // memanggil fungsi di controller test/add($id) atau test/edit($id)
   innerWidth : 500, 
   innerHeight : 297,
   iframe  : true,
   overlayClose: false,
   title  : '<font color="#45678D"><b><?php echo $title_form?></b></font>',
   onLoad  : function() { $('#cboxClose').remove(); }
  });
 }
</script>

dan yang terakhir,
3. file user_form.php, file ini bertujuan untuk menampilkan form (dg colorbox) untuk proses tambah atau edit data.
<form id="form" name="form" action="<?php echo $action ?>" method="post" enctype="multipart/form-data">
<table border="0" cellpadding="2" cellspacing="1" style="margin:5px">
 <tr>
  <td>Username</td>
     <td>&nbsp;:&nbsp;</td>
     <td><input type="text" name="username" <?php echo (!empty($username))? "value='$username' disabled" : '';?> /></td>
 </tr>        
 <tr>
  <td>Nama</td>
     <td>&nbsp;:&nbsp;</td>
     <td><input type="text" name="name" value="<?php echo (!empty($name))? $name : '';?>" /></td>
 </tr>    
 <tr>
  <td>Email</td>
     <td>&nbsp;:&nbsp;</td>
     <td><input type="email" name="email" value="<?php echo (!empty($email))? $email : '';?>" /></td>
 </tr>        
 <tr>
  <td>Alamat</td>
     <td>&nbsp;:&nbsp;</td>
     <td><textarea name="address" cols="40" rows="3"><?php echo (!empty($address))? $address : '';?></textarea></td>
 </tr>
 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
    <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type="submit" value="Submit">&nbsp;<input type="button" value="Cancel" name="cancel" id="cancel"></td>
 </tr>
</table>
</form>

Untuk file user_view.php dan user_form.php di taruh dalam folder user dalam view.


OK. Sekian dulu sharing dari saya, mumpung lagi mood buat sharing. hehe
Moga bermanfaat bagi yg membutuhkan.. ^_^

Keyword : PHP CodeIgniter, Flexigrid, Colorbox, jQuery

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi    :jQuery, Flexidrid and Colorbox example.
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Rabu, 27 April 2011

Kelas PHP (Library CodeIgniter) untuk Mengetahui Kecepatan Proses Data

php class to find out the data processing speed.

Kali ini hal yang akan di share adalah tentang library (CodeIgniter) atau kelas (PHP OO) untuk mengetahui kecepatan aplikasi kita (dalam satuan waktu) dalam mengolah suatu data. Hal ini dapat bermanfaat untuk mengetahui, apakah aplikasi web php kita termasuk aplikasi yang bagus dan dapat mengolah data dengan cepat.

langsung aja... Untuk
1.  CodeIgniter
Untuk pemrograman php dengan menggunakan framework CodeIgniter, script dapat dijadikan sebagai library CI. Seperti contoh, buat class di library CI (untuk CI 2.x ada di %CI_root%/application/libraries , untuk CI 1.x ada di %CI_root%/system/application/libraries) dengan nama Count_time_process.php yang isi classnya adalah

class Count_time_process{
   function Count_time_process(){              // the constructor
      $this->obj =& get_instance();
   }
 
   function start_time(){ 
      $mtime = microtime(); 
      $mtime = explode(' ', $mtime); 
      return $mtime;
   }
 
   function finish_time($starttime){
      $starttime = $starttime[1] + $starttime[0];
      $mtime = microtime();
      $mtime = explode(" ", $mtime);
      $mtime = $mtime[1] + $mtime[0];
      return ($mtime - $starttime);
   }
}

untuk menggunakannya bisa seperti ini
$this->load->library('Count_time_process');
$start_time = $this->count_time_process->start_time();

// pura-puranya ada proses yang dikerjakan disini :D

$finish_time = $this->count_time_process->finish_time($start_time);

2. PHP Class
Untuk pemrograman php dengan menggunakan konsep OO (object oriented) script bisa dijadikan class, seperti Count_time_process.php. Sebenarnya untuk penulisan program antara class PHP dengan class untuk library CI sama saja, hanya terdapat penambahan contructor pada library CI, sedang untuk class PHP bisa diabaikan contructornya.
untuk menggunakannya bisa seperti ini
include_once("Count_time_process.php");
$process = new Count_time_process();
$start_time = $process->start_time();

// pura-puranya ada proses yang dikerjakan juga disini :D

$finish_time = $process->finish_time($start_time);

Sekian dulu untuk sharing count time process. Moga bermanfaat.. hehehe
Sundul gan... :D

Keyword : PHP CodeIgniter count time process, kecepatan proses

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi    : PHP Time, PHP Datetime
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Senin, 18 April 2011

Kelas PHP untuk Merubah Format Tanggal

PHP Class to Change Date Format .

Ni ada sharing dariku, kali ini adalah membuat class untuk mengganti/merubah format tanggal. Misal ingin merubah dari tanggal 12/02/2011 menjadi 2011/02/12 atau jadi 12 Februari 2011. Langsung saja, ini script nya (maaf klo masih ada logika yg kurang tepat, ini masih tahap percobaan.) Simpan script ini dengan nama MZA_Date.php
class MZA_Date{
    public $separator;
    public $format = array();
    
    function change_format_date($date, $format_date, $new_format_date){
        $this->format = array();
        $format_date = str_split($format_date);
        $this->split_date($format_date);
        $format_date = $this->format;
                
        $date = explode($this->separator,$date);
        
        $this->format = array();
        $new_format_date = str_split($new_format_date);
        $this->split_date($new_format_date);
        $new_format_date = $this->format;
        for($i=0;$i<count($new_format_date);$i++){
            for($j=0;$j<count($format_date);$j++){
                if(strcasecmp($format_date[$j],$new_format_date[$i]) == 0){
                    $new_date[$i] = $this->check_format($date[$j],$new_format_date[$i]);
                }
            }
        }
        return $new_date[0].$this->separator.$new_date[1].$this->separator.$new_date[2];
    }
    
    function check_format($date, $format_date){
        switch ($format_date){
            case 'y' : $date = substr($date,-2);break;
            case 'M' : $date = $this->month_picker($date); break;            
            case 'm' : $date = $this->month_picker($date); break;
        }
        return $date;
    }
    
    function month_picker($month){
       $array_month = array(0 => "Januari", 1 => "Februari", 2 => "Maret", 
                            3 => "April", 4 => "Mei", 5 => "Juni", 
                            6 => "Juli", 7 => "Agustus", 8 => "September", 
                            9 =>"Oktober", 10 =>"November", 11 =>"Desember");        
        if(is_int($month)){
            $month = intval($month);
            return $array_month[$month-1];
        }else{
            return array_search($month, $array_month)+1;
        }
    }
    
    function split_date($format_date){
        for($i=0;$i<count($format_date);$i++){
            if(ctype_alpha($format_date[$i])){
                array_push($this->format,$format_date[$i]);
            }else{
                $this->separator  = $format_date[$i];
            }
        }
    }
}
cara pakainya class tinggal panggil fungsi yg pertama dalam class tersebut, yaitu  change_format_date($date, $format_date, $new_format_date) dimana parameter :
$date : tanggal yang mau di ganti
$format_date : format dari $date, jika $date = "13/02/2011" maka $format_date HARUS "d/m/Y"
$new_format_date : format tanggal yg baru 
Format tanggal yg disediakan
 Y : Penulisan tahun seperti tahun "2011"
 y : Penulisan tahun dengan 2 digit di depan dihilangkan seperti tahun "11" dari "2011"
 M : Penulisan nama bulan seperti bulan "Februari"
 m : Penulisan nomor urut bulan seperti bulan "02" atau "2" untuk bulan "Februari"
 d : Penulisan tanggal seperti tanggal "17"
Contoh pengggunaan : Buat script seperti d bawah ini, dan simpan dengan nama (contoh) date_example.php
include_once("MZA_Date.php");

$DATE = new MZA_Date();
$date = date("d m Y");
$format = "d m Y";
$new_format = "d M Y";
 
$date = $DATE->change_format_date($date, $format, $new_format);
Demikian dulu sharing PHP Class untuk Merubah Format Tanggal. Semoga bermanfaat... ^_^

Keyword : PHP to change date format, PHP untuk merubah format tanggal

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi    : PHP Date
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Rabu, 23 Maret 2011

Cara Cepat Menghapus Folder Autorun.inf Buatan Smadav

Bagi sebagian orang folder autorun.inf buatan smadav pada usb flashdisk sangat membantu untuk mencegah menyebarnya virus lewat usb flashdisk tersebut. Namun, bagi sebagian orang pula hal ini malah merepotkan atau mengganggu.

Nah bagi teman-teman yang ingin menghapus folder autorun.inf ini tidak usah repot harus men-donwload aplikasi autorun remover, kita bisa bikin sendiri.

Caranya,
Buka notepad, kemudian ketik:

rd /s /q autorun.inf\con\aux\

rd /s /q autorun.inf\con\

rd /s /q autorun.inf\
Simpan file tersebut dengan ekstensi batch file (contoh autorun_remover.bat), kemudian close notepad.

Jika ingin menghapus folder autorun.inf, copy-kan file autorun_remover.bat ke direktori yang sama dengan folder autorun berada. Trus double klik file tersebut, tunggu beberapa detik dan hasilnya folder autorun.inf akan terhapus.

Demikian dulu tutorial Cara Cepat Menghapus Folder Autorun.inf Buatan Smadav... ^_^

Keyword : hapus autorun smadav

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.

Referensi   : Topik Facebook

Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Senin, 14 Maret 2011

Impor File Excel (xls) dengan CodeIgniter dan library excel_reader

Import Excel Files (.xls) with CodeIgniter and Excel_reader Library.

Pertama-tama kita harus download library untuk membaca file excel (xls). Library yang saya gunakan adalah excel_reader yang saya dapat di  google. Simpan file tersebut dalam folder %CI_Root%\system\application\libraries.

Selanjutnya jangan lupa untuk men-setting konfigurasi umum dari CodeIgniter.
Buat controller dengan nama contoh.php
class Contoh extends Controller {
  function Contoh(){
    parent::Controller(); 
    $this->load->helper('form'); // untuk menangani proses form 
  }

  function index() {
    $this->load->view('import_file_excel');
  }

  function read_file(){
    include_once ( APPPATH."libraries/excel_reader2.php");
    $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
       
    $j = -1;
    for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){ 
      $j++;
      $nama[$j]   = $data->val($i, 1);
      $nim[$j]    = $data->val($i, 2);
      $kelas[$j]  = $data->val($i, 3);
    }
    
    $xdata['nama']  = $nama;
    $xdata['nim']  = $nim;
    $xdata['kelas']  = $kelas;
    $this->load->view('message_import_file_excel', $xdata);
  }
}
Penjelasan :
Fungsi index() adalah fungsi yang pertama kali dijalankan saat controller contoh dipanggil.
Fungsi read_file() adalah fungsi untuk membaca data yang ada dalam file excel (xls)

Selanjutnya kita buat file di view. Ada 2 file yang harus dibuat, yaitu import_file_excel.php dan message_import_file_excel.php
untuk import_file_excel.php file ini ditujukan untuk tampilan untuk mengimpor file.
<html>
<head>
</head>
<body>
  <br>
  Contoh untuk import excel
  <?php echo form_open('contoh/read_file');?>
        echo form_fieldset('IMPORT FILE PO'); ?> 
  <table>
    <tr>  
      <td>Upload file (*.xls) : </td>  
      <td><input name="userfile" type="file"></td>
      <td><input name="upload" type="submit" value="import"></td>
    </tr>
  </table>
  <?php echo form_fieldset_close();
        echo form_close();?>
</body>
</html>

untuk file message_import_file_excel.php ditujukan untuk menampilkan data yang telah diimpor dari file excel
<html>
<head></head>
<body>
  <table border="1">
    <tr>
      <th>Nama</th>
      <th>Kelas</th>
      <th>Nim</th>
    </tr>
    <?php $i = 0;
          while($i < count($nama)):?>
    <tr>
      <td><?php echo $nama[$i]?></td>
      <td><?php echo $nim[$i]?></td>
      <td><?php echo $kelas[$i]?></td>
    </tr>
      
    <?php $i++; endwhile;?>
  </table>
</body>
</html>

Nah, aplikasi sederhana untuk membaca file excel telah berhasil dibuat. Untuk contoh tamplate data di file excel dapat mengikuti seperti ini

NB :
- kode ini sudah di implementasikan di CI 1.7.3 dan berhasil. Untuk penggunaan di CI 2.0.x, kode bisa sedikit diedit  pada class controller sesuai dengan standar penulisan di CI 2.0.x.

Demikian dulu pengenalan Framework PHP Codeigniter untuk bagian Impor File Excel (xls) dengan CodeIgniter dan library excel_reader... ^_^

Keyword : impot file excel, excel_reader, CodeIgniter

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi   : CodeIgniter User Guide
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

Kamis, 10 Maret 2011

Pengenalan Framework PHP CodeIgniter, Bab Konfigurasi CodeIgniter

Introduction to PHP Framework CodeIgniter, CodeIgniter Configuration Chapter

Sebelumnya pertama-tama download CI terbaru dari web nya yaitu codeigniter.com  OK... :D

CodeIgniter tidak terlalu sulit, apalagi bagi anda yang sudah menguasai PHP dan lebih mudah lagi apabila anda memahami PHP yang berbasis OOP(Object Oriented Programming) maupun konsep MVC(Model View Controller). Framework Codeigniter  berbasiskan konsep MVC yang memudahkan programmer dalam mengolah data.

Sebelum memulai membangun aplikasi web, alangkah baiknya mengetahui konfigurasi awal yang harus dilakukan sebelum menggunakan framework Codeigniter ini.

Pertama kita lihat file config.php di folder %CI_Root%\system\application\config
terdapat kode

    $config['base_url'] = "";
ini adalah konfigurasi untuk mengakses alamat dari aplikasi yang akan kita bangun. Contoh
     $config['base_url'] = "http://localhost/xxis/";
atau
     $config['base_url'] = "http://192.168.0.114/xxis/";

xxis disini adalah nama folder root dari aplikasi CI yang kita bangun. Jadi apabila nama folder rootnya
adalah Contoh, maka kodenya harus
     $config['base_url'] = "http://192.168.0.114/Contoh/";

Selanjutnya kita lihat file database.php yang masih se folder dengan file config.php
terdapat kode
     $db['default']['hostname'] = "localhost"; 
kode ini untuk mendefinisikan host dari database yg akan kita pakai, secara default hostnya adalah localhost        
     $db['default']['username'] = "postgres";
kode ini untuk mendefinisikan username dari pengguna database (secara default untuk MySQL : root, Postgre : postgre dan oracle : system).


     $db['default']['password'] = "xxis"; 
merupakan password yang kita pakai untuk mengakases database

     $db['default']['database'] = "xxis";
merupakan database mana yang akan kita pilih

     $db['default']['dbdriver'] = "postgre";
merupakan driver untuk mengakases database (untuk MySQL : mysql, postgresql : postgre, sedang oracle : oci8).

     $db['default']['port'] = 5432;
port default CI khusus untuk mengakases database PostgreSQL. Jika selain PostgreSQL, $db['default']['port'] = 5432; bisa di abaikan/dihilangkan.

untuk kode-kode lain yang ada di file database.php bisa diabaikan sesuai dengan nilai defaultnya.

Selanjutnya mari kita menjelajah lagi ke file autoload.php yang juga masih se folder dengan file config.php dan database.php. Disini adalah file untuk menyimpan konfigurasi mengenai file yang akan di load pertama kali saat aplikasi dijalankan.
contoh
     $autoload['libraries'] = array('database', 'session','site_sentry'); 
autoload file database.php, session.php dan site_sentry.php yang ada di folder libraries
     $autoload['helper'] = array('url','form','html'); 
autoload file url_helper.php, form_helper.php dan html_helper.php yang ada di folder helper file ini bisa kita abaikan jika kita tidak menginginkan autoload.

dan yang terakhir dari folder config yang ingin kita bahas adalah file router.php terdapat kode
     $route['default_controller'] = "welcome";
kode di atas adalah untuk memanggil controller welcome saat pertama kali dijalankan. Jadi saat aplikasi pertama kali dijalankan, controller welcome.php akan pertama kali dieksekusi.
contoh apabila kita klik address
     http://localhost/xxis/

maka secara otomatis akan menjadi
     http://localhost/xxis/index.php/welcome

apabila kode kita ubah menjadi
     $route['default_controller'] = "";

maka untuk mengakses controller welcome.php harus dengan
     http://localhost/xxis/index.php/welcome


karena apabila kita mengakases hanya dengan "http://localhost/xxis/" atau "http://localhost/xxis/index.php/"
framework Codeigniter tidak dapat mendefinisikan controller mana yang harus diakses.

Demikian dulu pengenalan Framework PHP Codeigniter untuk bagian konfigurasinya... ^_^

Keyword : konfigurasi CodeIgniter, CodeIgniter configuration

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi   : CodeIgniter User Guide
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com