Showing posts with label codeigniter. Show all posts
Showing posts with label codeigniter. Show all posts

Thursday, October 29, 2015

Memahami Codeigniter menggunakan AJAX

Beberapa hal yang perlu dituliskan agar tidak lupa. Berikut adalah tulisan tentang konsep dasar tentang membuat sebuah aplikasi menampilkan menggunakan Codeigniter, yang dibantu fungsi javascript atau AJAX. Tulisan ini hanya untuk membantu memahami konsep dasar Pemrograman menggunakan Codeigniter. Langsung saja yang perlu disiapkan adalah codeigniter 2.0 atau versi keatas.
Tulisan ini difokuskan pada bagian view dan controller. Berikut adalah contoh script Controller dan view berikut penjelasannya sesuai kemampuan saya untuk menjelaskan.

Pertama kita main di controller. Buat file dengan nama c_test.php di dalam folder controller.
Setelah itu tuliskan script didalam c_test.php dibawah ini :


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class c_test extends MX_Controller {
      
       public function __construct(){
             parent::__construct();
             $this->load->library(array('session','encrypt','form_validation'));
       }

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

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

       function tampil(){
          $user = $this->input->post('user');
          $password = $this->input->post('password');
          echo "<script>alert('berhasil');</script>";
          echo "<script>$('#user').html('".$user."');</script>";
          echo "<script>$('#password').html('".$password."');</script>";
          echo "<script>document.getElementById('tampil').style.display = '';</script>";
       }

}
 
Keterangan :

Script dibawah selalu ditulis disetiap controller yang saya buat untuk mendefinisikan fungsi-fungsi.


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class c_test extends MX_Controller {
      
       public function __construct(){
             parent::__construct();
             $this->load->library(array('session','encrypt','form_validation'));
       }

               #Tempat menuliskan fungsi-fungsi pada controller.
}


Controller berfungsi mengatur yang ditampilkan pada browser. Setiap fungsi di controller bisa dipanggil melalui browser sesuai dengan lokasinya. Misal nama folder ci’nya adalah ikd, nama file’nya c_test.php. Maka pada browser bisa memanggil localhost/ikd/c_test. Nama class harus sesuai dengan nama file’nya.

class c_test extends MX_Controller {

 Kebetulan disini saya menggunakan hmvc yang memudahkan untuk mengatur folder controller, view, dan model’nya sesuai dengan nama modulenya. Disini saya memiliki folder ci dengan nama ikd, dan mempunyai module dengan nama test, nama file controller c_test.php, didalam file c_test.php ada function index yang berfungsi menampilkan default ketika kita memanggil file Controller tersebut. Jadi dengan adanya tambahan module maka di path browser saya dapat memanggil controller dengan path : localhost/ikd/test/c_test. Akan menampilkan view yang diload oleh index.

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

Selanjutnya disini saya membuat fungsi v_test_js. V_test_js memanggil view v_test_js yang isinya nanti adalah semua javascript yang digunakan pada v_test. Kenapa tidak dituliskan jadi satu dengan v_test karena biar tidak campur dengan html sehingga untuk memantenancenya lebih mudah.

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

Selanjutnua saya juga membuat fungsi tampil. Fungsi ini merupakan hasil setelah nanti di view terdapat aksi untuk klik button dan ditangkap difungsi javascript yang nantinya terus dilempar ke fungsi ini menggunakan AJAX.

//nama fungsi tampil
function tampil(){
      
//menangkap variable yang dikirim dari ajax yang ada di v_test_js.php
$user = $this->input->post('user');
$password = $this->input->post('password');

//menampilkan hasil menggunakan javascript
//menampilkan alert berhasil
echo "<script>alert('berhasil');</script>";

//menampilkan user dan password pada div user dan password di file v_test.php
       echo "<script>$('#user').html('".$user."');</script>";
       echo "<script>$('#password').html('".$password."');</script>";

       //menghilangkan display none sehingga tampilan user dan password dapat terlihat
       //display sebelumnya di div id=tampil adalah none
       echo "<script>document.getElementById('tampil').style.display = '';</script>";
}


Kedua Kita main di view. Buat view dengan nama v_test.php didalamfolder view. Tuliskan script html didalam v_test.php, scriptnya kurang lebih adalah seperti ini :


<html>
<body>
       <fieldset>
             <legend>Login</legend>
             <input name="user" type="text" /><br/>
             <input name="password" type="text" /><br/>
             <button onclick="login()">Masuk</button>
       </fieldset>
       <div id="tampil" style="display:none;">
             <fieldset>
                    <legend>User passsword</legend>
                    <div id="user"></div>
                    <div id="password"></div>
             </fieldset>
       </div>
</body>
</html>

<?php echo modules::run("test/c_test/v_test_js"); ?>
 
Keterangan :

Script diatas adalah view yang menampilkan input user dan input password. Perhatikan pada input dan div id pada secript diatas. Kita mulai dengan name setiap input, karena nanti di Ajax name ini sepagai identitas untuk menangkap isi dari input tersebut misal :

<input name="user" type="text" /><br/>

Dijavascript nanti kita bisa manangkap isi input name user dengan script dibawah ini

var user1 = $('input[name=user]').val();

Setelah itu kita bisa lihat setiap id pada div. Id setiap div ini membantu untuk mengidentivikasi div sehingga isi dari div tersebut dapat kita ubah sesuai dengan keinginan kita menggunakan javascript. Misal id user <div id="user"></div> Kita bisa mengubah isi div id user yang sebelumnya kosong menjadi isi dengan text user dengan script $(‘#user’).html(‘user’); script ini ditulis dijavascript.

Pada button terdapat onclick=login(), ini jika button diklik maka akan menjalankan fungsi login() yang terdapat pada file v_test_js.php.

<button onclick="login()">Masuk</button>

Script yang paling bawah adalah script php yang berfungsi memanggil atau menambahkan view v_test_js.php.

<?php echo modules::run("test/c_test/v_test_js"); ?>

Ketiga kita bisa membuat v_test_js.php didalam folder view juga. Kurang lebih isi filenya adalah script berikut :


<script type="text/javascript" src="<?php echo base_url(); ?>template/js/jquery.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>template/js/jquery-1.11.1.min.js"></script>

<script>
       function login(){
             var user1 = $('input[name=user]').val();
             var password1 = $('input[name=password]').val();

             $.ajax({
                    type: 'POST',
                    url: "<?php echo base_url(); ?>test/c_test/tampil",
                    data: {user:user1,password:password1},
                    success:function(data){
                           $('#test').html(data);
                    }
             });
       }
</script>
<div id="test"></div>
 
Keterangan :

<script type="text/javascript" src="<?php echo base_url(); ?>template/js/jquery.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>template/js/jquery-1.11.1.min.js"></script>

Script diatas berfungsi memanggil library agar ajax bisa berjalan. Lokasinya disesuaikan dengan penempatannya. Didalam codeigniter menggunakan <?php echo base_url(); ?>  untuk menampilkan base url Ci kita, kalo disini berarti menampilkan loaclhost/ikd, selanjutnya disambung dengan path lokasinya.

<script>
       function login(){
             var user1 = $('input[name=user]').val();
             var password1 = $('input[name=password]').val();

             $.ajax({
                    type: 'POST',
                    url: "<?php echo base_url(); ?>test/c_test/tampil",
                    data: {user:user1,password:password1},
                    success:function(data){
                           $('#test').html(data);
                    }
             });
       }
</script>

Fungsi login() berisi script ajax yang nantinya akan memanggil fungsi dicontroller dan mengirim beberapa variable yang akan ditangkap pada controller.

#Menangkap variable user dan password menggunakan javascript
var user1 = $('input[name=user]').val();
var password1 = $('input[name=password]').val();

#Lokasi Controller yang dituju
url: "<?php echo base_url(); ?>test/c_test/tampil",

#Variable yang dikirimkan pada controller
data: {user:user1,password:password1},

#Mengganti isi div id tes dengan dengan data
#data adalah tampilan dari isi controller dengan nama fungsi tampil
$('#test').html(data);

#berubah isinya ketika fungsi login digalankan
<div id="test"></div>

Jika saya mengakses localhost/ikd/test/c_test maka akan tampil



Jika diklik login maka yang akan tampil adalah alert berhasil dan tampilan dibawahnya :



Struktur file yang saya buat



Mungkin hanya ini dulu yang bisa saya tuliskan. Apabila ada yang ingin ditanyakan silahkan, nanti saya coba menjelaskan dan sekalian belajar juga agar bisa lebih baik lagi, Thanks Yaaaa..... laen waktu disambung lagi.













Thursday, October 2, 2014

mengimplementasikan try catch di PHP menggunakan Codeigniter

try and catch berfungsi untuk melihat apakah function yang dieksekusi terjadi kesalahan atau error atau tidak. jika terjadi kesalahan maka akan di catch. Dan catch akan menunjukan error yang ingin kita beritahukan. misalkan fungsi pembagian, ketika nilai pembagi adalah nol maka akan terjadi error defined by zero sedangkan kita ingin menampilkan nilai nol jika nilai pembaginya juga nol. Maka kita perlu menggunakan try and catch untuk menangkap pesan error tersebut dan menggantinya menggunakan nilai nol sesuai dengan yang ingin kita tampilkan. Berikut penjelasan ketika try and catch digunakan pada framework Codeigniter :

pertama kita membuat library dengan nama cek_error.php

dan mengisikan script dalam file tersebut seperti dibawah ini :

 <?php if (! defined('BASEPATH')) exit('No direct script access allowed');  
 class cek_error   
 {  
      public function __construct()  
      {  
           $this->CI =& get_instance();  
           ini_set('display_errors','on');  
           error_reporting(E_ALL^E_NOTICE);  
      }  
      function inverse($x,$y){  
           if($y==0){  
                throw new Exception('0');  
           }else{  
                return ($x/$y)*100;  
           }  
      }  
 }  

setelah membuat library selanjutnya load library yang telah dibuat dicontroller dan menggunakan try and catch :
 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');  
 class latihan extends CI_Controller {  
   public function __construct()  
    {  
     parent::__construct();  
     $this->load->library(array('cek_error'));  
     ini_set('display_errors','on');  
     error_reporting(E_ALL^E_NOTICE);  
    }  
  function index(){  
       try{  
         $tfi = $this->cek_error->inverse(10,0);  
        }catch(Exception $e){  
          $tfi = $e->getMessage();  
        }  
       echo round($tfi,2);  
    }  
 }  


Jika ingin menapilkan try and catch di view tinggal memindahkan saja try and catch tersebut diview.







Monday, June 9, 2014

REST Pada Codeigniter

REST merupakan singkatan dari representational state transfer, atau bisa disebut juga gaya arsitektur dalam membangun sebuah perangkat lunak yang melibatkan HTTP. Pengertian tersebut masih penyimpulan saya saja, jika ingin mengetahui lebih lanjut masalah REST bisa explorasi sendiri. Saya disini hanya ingin membahas untuk mengimplementasi REST pada codeigniter. Sehingga dapat dibuat sebuah API yang hanya menyediakan data yang dibuat menggunakan Codeigniter dengan REST. Data tersebut dapat berupa array dengan format JSON maupun XML. Tetapi saya lebih suka menggunakan JSON karena nanti pada sisi client pengambilan data JSON menggunakan javascript. 

Pertama yang kita lakukan adalah menyiapkan Framework Codeigniter. Silahkan download codeigniter dengan versi yang terbaru, atau bisa download versi yang saya gunakan yang sudah saya config dan saya tambahkan .htaccesss dan saya tambahkan HMVC. Codeigniter yang saya gunakan disini adalah versi 2.2.0

Setelah itu download restserver disini. Setelah terdownload drag and drop sesuai dengan penempatannya file dibawah ini di folder codeigniter yang sudah kita siapkan tadi.

application/libraries/Format.php
application/libraries/REST_Controller.php
application/config/rest.php

konfigurasi rest codeigniter untuk server sudah selesai, hanya 3 file diatas yang diperlukan. Masalah selanjutnya adalah bagaimana cara membuat untuk GET, POST, PUT, dan sebagainya pada restserver tersebut. Berikut saya berikan contoh script yang saya gunakan saja. disini kita hanya main di Controller dan models saja karena memang tujuannya untuk membuat data dan menkonfersinya dalam bentuk array dengan format JSON atau XML. Terusterang saya bingung ingin menjelaskannya, berikut scriptnya silahkan dibaca sekilas. Saya tidak menampilkan untuk databasenya. 

untuk controller :

<?php defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * Example
 *
 * This is an example of a few basic user interaction methods you could use
 * all done with a hardcoded array.
 *
 * @package CodeIgniter
 * @subpackage Rest Server
 * @category Controller
 * @author Phil Sturgeon
 * @link http://philsturgeon.co.uk/code/
*/

// This can be removed if you use __autoload() in config.php OR use Modular Extensions
require APPPATH.'/libraries/REST_Controller.php';

class c_laporan extends REST_Controller
{
public function __construct(){
parent:: __construct();
$this->load->model(array('m_laporan'));
}

//menampilkan data bulan
function combo_bulan_get(){
$ip = $_SERVER['REMOTE_ADDR'];
if($ip=="127.0.0.1"){
$combo_bulan = $this->m_laporan->combo_bulan();
if($combo_bulan){
$this->response($combo_bulan, 200);
}else{
$this->response(array('error'=> 'Could\'t find any users!'), 400);
}
}else{
echo "Page Not Found";
}
}
}

Untuk modelnya:

<?php
class m_laporan extends CI_Model{

//menampilkan data bulan
function combo_bulan(){
$query = $this->db->query('SELECT KD_BULAN AS "kd_bulan", NM_BULAN AS "nm_bulan" 
FROM MD_BULAN ORDER BY CAST(KD_BULAN AS INTEGER) ASC');
return $query->result();
}
}

Saya diatas menggunakan database oracle. Mungkin Jika masih kurang jelas bisa mempelajari link-link dibawah ini :


Terimakasih sudah mampir, Karena keterbatasan waktu mungkin ini yang dapat saya sampaikan. 



Sunday, June 8, 2014

membuat hmvc pada codeigniter

HMVC pada codeigniter berfungsi salah satunya adalah untuk membuat penempatan file lebih tertata. berikut adalah yang saya lakukan mengambil dari beberapa tutorial pada blog. Yang terpenting sudah mendownload codeigniter versi terbaru. Saya menggunakan codeigniter versi 2.2.0 silahkan download di sini http://ellislab.com/codeigniter.

Pertama yang dilakukan adalah memastikan codeigniter yang baru saja didownlod sudah tepat. Sehingga kita dapat menjalankan dibrowser http://localhost/Codeigniter_2.2.0. Tampilan awal codeigniter sudah jalan.  

Setelah itu dapat dibuat file .htaccess di dalam folder Codeigniter_2.2.0 untuk menghilangkan idex.php pada path saat kita ingin mengakses halaman pada codeigniter. sebelumnya kita mengakses http://localhost/Codeigniter_2.2.0/index.php/welcome. Maka tampilan akan tampil halaman welcome codeigniter, untuk menghilangkan index.php maka perlu .htaccess yang dibuat pada Codeigniter. 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Codeigniter_2.2.0

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

script diatas disimpan dalam folder Codeigniter_2.2.0. Setelah itu buka file config.php yang berada pada Codeigniter_2.2.0/Applications/Config/config.php. Edit baris

$config['base_url'] = '';

menjadi 

$config['base_url'] = 'http://localhost/Codeigniter_2.2.0';

Setelah itu coba jalankan lagi http://localhost/Codeigniter_2.2.0/welcome. Sampai disini pastikan halaman tersebut menampilkan tampilan yang sama seperti sebelumnya saat mengakses http://localhost/Codeigniter_2.2.0/index.php/welcome. Setelah jalan baru kita lanjut kelangkah berikutnya.

Langkah berikutnya dalah download modul HMVC yang akan kita gunakan untuk membuat hmvc. download disini. Didalamnya terdapat dua folder core dan third_party. Pindahkan folder tersebut ke Codeigniter/Application. Buat folder baru di Codeigniter/Application dengan nama modules_core.

Setelah itu buat folder hmvc di Codeigniter/Applications/modules_core. Buat folder controllers, views, models di Codeigniter/Applications/modules_core/hmvc. Sehinga didalam folder hmvc tersebut sudah terdapat controllers, views dan models. Jika kita ingin membaut folder hmvc-hmvc yang lain ya tinggal membuatnya didalam folder modules_core, tentunya dengan nama yang beda.

Sekarang kita coba buat file controllers di Codeigniter/Applications/modules_core/hmvc/controllers, buat file dengan nama hmvc.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Hmvc extends MX_Controller {

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

Selanjutnya buat file view di  Codeigniter/Applications/modules_core/hmvc/views, buat file dengan nama hmvc_view.php

<h2>This is from the HMVC module page. OKE</h2>

Setelah selesai kita coba config lagi pada codeigniter. Buka file autoload.php di Codeigniter/applcation/config/autoload.php dan edit script 

$autoload['packages'] = array();

menjadi

$autoload['packages'] = array(APPPATH.'third_party');

Buka Codeigniter/applcation/config/config.php dan edit script 


$config['log_threshold'] = 0;

$config['encryption_key'] = ' ';

menjadi 


$config['log_threshold'] = 1;

$config['encryption_key'] = 'myclientbase';

Tambahkan script

$config['modules_locations'] = array(
    APPPATH.'modules_core/' => '../modules_core/',
);

Saat rename folder yang perludiubah adalah config

$config['base_url'] = 'http://localhost/Codeigniter_2.2.0_hmvc';

dan

.htaccess (nama folder CI yang terdapat didalam htaccess)

Kurang lebih seperti diatas yang saya coba. Bila ada yang mencoba dan tidak jalan silahkan berikan komentar mungkin saya salah dalam menulis atau ada yang kurang. Jika memang ada masalah lain yang menyebabkan tidak jalan mungkin dapat diselesaikan secara kekeluargaan saja, hehe... 

Hasil ujicoba saya akan saya dokmentasikan disini, bisa didownload codeigniter_2.2.0_hmvc. Hanya namanya saja yang beda ditambah _hmvc tetapai secara prakteknya ga jauh beda. Terimakasih sudah mampir.....

Monday, June 2, 2014

Problem saat upload file excel (.xls) dari phpexcel tidak terbaca pada codeigniter:

Edit file upload.php pada codeigniter yang terletak di system/libraries line 200

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $this->file_type);

menjadi

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);

//----------------------------------------------------------------------------------

Monday, April 14, 2014

membuat .htaccess pada codeigniter

Codeigniter merupakan framework yang sudah tidak asing lagi bagi kalangan web developer. Membuat .htaccess pada codeigniter untuk menghilangkan index.php pada urlnya. Meskipun hal ini sangat sepele tetapi saya perlu mendokumentasikannya agar suatu saat nanti saya dapat mengenang perjalanan karir kodingan saya.. hehe padahal cuma asal ngoding aja yang penting jalan. Pertama kali pastinya sudah ada aplikasi yang dibuat menggunakan codeigniter tetappi belum dikasih file tanpa nama berektensi .htaccess sehingga saat mengakses urlnya masih menggunakan index.php. sekarang buat new file dengan notepad atau text editor lainnya dan isikan script dibawah ini :

<IfModule mod_rewrite.c>
Options -Indexes

RewriteEngine On
RewriteBase /
#RewriteCond %{REQUEST_URI} ^system.*
#RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /nama_folder/index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /nama_folder/index.php
</IfModule>



script diatas disave dengan extensi .htaccess dan disimpan di folder codeigniter.
Jika ini merupakan settingan awal aplikasi codeigniter anda maka perlu melakukan beberapa settingan pada config seperti berikut :

$config['index_page'] =  '';
$config['uri_protocol'] = 'AUTO';
$config['encryption_key'] = 'galih';
$config['sess_cookie_name'] = 'bebas';
$config['sess_encrypt_cookie'] = TRUE;

begitulah yang baru saya dapat dari awal mempelajari codeigniter, semoga kedepannya akan semakin faseh dan dapat menulis lebih bagus lagi. Terimakasih sudah mampir....

Monday, March 10, 2014

Upload and display gambar menggunakan database mysql dan framework codeigniter

Image merupakan salah satu komponen penting dalam design web. Menejemen upload image dalam web bisa ditangani menggunakan lokasi server sesuai path yang sudah ditentukan. Tetapi terkadang menyimpan file image dalam folder membuat sedikit ribet dalam mengolahnya. Saya mencoba menggunakan codeigniter dan mysql sebagai databasenya untuk mengolah upload file pada database. Sehingga saat pemanggilan atau ingin menampilkan image tinggal menggunakan Query seperti pengolahan data-data yang lazim diolah menggunakan database.

Codeigniter merupakan framework yang digunakan, menggunakan Codeigniter harus memahami konsep MVC. Berikut langkah pertama membuat database di MYSQL menggunakan type data blob:

1. Membuat database upload

CREATE DATABASE UPLOAD

2. Membuat table pada database upload

CREATE TABLE store ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, image BLOB NOT NULL, PRIMARY KEY (id) );

3. Setting database pada Application/database.php dengan nama database upload untuk menghubungkan dengan database.

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'upload';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

4.  Masuk dalam Model pada codeigniter, diasumsikan konfigurasi awal pada codeigniter sudah terconfig dengan baik. Membuat file Model dengan nama m_upload.php

<?php
class m_upload extends CI_model{

function __construct  ()
{
parent::__construct();
}

function tampil_upload($k){
$query = $this->db->query("SELECT * FROM store where id='$k'");
foreach($query->result_array() as $ok){
//header('Content-type: image');
$image = $ok['image'];
}
//header("Content-type: image/*");
echo $image;
}

function simpan($image_name,$image){
$query = $this->db->query("INSERT INTO store (name,image) VALUES ('$image_name','$image')");
return $query;
}
}
?>

5. Setelah model selesai lanjut ke Controller. Membuat file Controller dengan nama upload_blob.php

<?php if(! defined('BASEPATH')) exit('No direct script access allowed');

class upload_blob extends MX_Controller{

public function __construct()
{
parent::__construct();
$this->load->model('m_upload');
}

function gambar(){
$this->load->view('upload');
}

function tampil_gambar($k){
$this->load->model('m_upload');
$this->m_upload->tampil_upload($k);
//echo "galih";
}

function simpan(){
$this->load->library('upload');
$file = $_FILES['file']['tmp_name'];
$image_name = mysql_real_escape_string($_FILES['file']['name']);
$image = mysql_real_escape_string(file_get_contents($file));
//echo $image;
$this->load->model('m_upload');
$this->m_upload->simpan($image_name,$image);
}
}

6. Setelah Controller selesai masuk ke view. Membuat file View dengan nama upload.php

<form enctype="multipart/form-data" method="post" action="<?php echo base_url(); ?>index.php/upload_blob/simpan">
File:
<input type="file" name="file" accept="image/*">
<button type="submit">Upload</button>
</form>

<img src="<?php echo base_url(); ?>index.php/upload_blob/tampil_gambar/29">


7. Proses sudah selesai tinggal mengakses alamat localhost/nama_folder_ci/index.php/upload_blob/gambar
8. Pilih gambar dan upload, setelah itu back ke localhost/nama_folder_ci/index.php/upload_blob/gambar
9. O iya silahkan ubah <img src="<?php echo base_url(); ?>index.php/upload_blob/tampil_gambar/29"> yang angka 29 sesuai dengan id gambar pada database karena id diset auto increment jadi akan terus bertambah saat ada gambar yang diupload masuk pada database.

10. Saya masih belajar dalam hal penyampaian, jadi mohon dimaafkan tulisan yang corat-coret diatas tidak jelas. Semoga kedepannya bisa lebih baik.... :)






Konfigurasi awal pada codeigniter

Codeigniter adalah salah satu framework PHP yang sangat membantu dalam menejemen file saat membuat aplikasi yang menggunakan PHP. MVC merupakan konsep awal yang perlu dipahami terlebuih dahulu sebelum mendalaminya ketingkat lanjut. Saya masih menggunakan codeigniter karena mudah dalam mempelajarinya dan sudah mumpuni untuk kebutuhan aplikasi yang saya buat, walaupun kepingin juga mempelajari framework yang lain tapi untuk sementara ini belum dulu karena masih dalam tahap belajar.

Konfiguraasi awal yang perlu diperhatikan saat pertama kali menggunakan Codeigniter adalah masuk dalam folder Application dan kita bisa fokus pada file config.php, autoload.php, route.php, dan jika menggunakan database maka perlu settingan di database.php. Kemudahan menggunakan codeigniter yaitu sudah disediakan library-library yang siap jalan, kita tinggal menggunakannya saja lah mungkin begitu secara pemahaman saya.

pada file config.php settingan yang perlu diperhatikan

$config['base_url'] = 'http://localhost/sesuai_nama_folder_ci/';

$config['encryption_key'] = 'galih';
//terkadang jika menggunakan autoload sission settingan encryption_key perlu diisi

untuk settingan awal pada file config.php masih bisa diabaikan, jika ada tambahan selanjutnya bisa ditambahkan.

pada file autoload.php settingan agar dapat berjalan mulus maka perlu ditambahkan

$autoload['libraries'] = array('database', 'session', 'xmlrpc', 'upload');

$autoload['helper'] = array('url','file','form');

pada route.php bisa diisi untuk load pertma saat aplikasi ci/ folder ci diakses pada browser
seperti dibawah ini default_controller adalah welcome maka controller yang diload saat pertama adalah wellcome.

$route['default_controller'] = "welcome";
$route['404_override'] = '';

file database.php disetting jika menggunakan database, selain itu pada autoload.php jika tidak menggunakan database maka tidak perlu menambahkan autoload database.

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'adhijasa';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Sesuaikan dengan hostname, username, password, nama database dan driver menggunakan database apa,

Jika settingan awal sudah benar maka saat melakukan coding menggunakan codeigniter perlu diperhatikan penulisan, artinya harus teliti meskipun tidak teliti 100% tapi 75% saja cukup hehehe...

Tulisan diatas menjadi pengingat saya saat ingin membuat aplikasi baru menggunakan codeigniter agar tidak menyimpang jauh dari awal, jika ada yang kesasar ke blog saya dan bisa menambahkan masalah CI maka saya sangat senang menerima komentar teman-teman... :)

Sunday, March 9, 2014

Mengakses lebih dari satu database pada codeigniter

Codeigniter sudah memberikan library untuk mengkoneksikan aplikasi yang kita buat dengan database. Kita tinggal menyetting nama hostname, nama username, nama database dan password. Library untuk database pada codeigniter terdapat pada folder applications/database.php. Secara default sudah disediakan tempat untuk mengisikan hostname, username, password, dan nama database untuk mysql, jika menggunakan database selain mysql tinggal setting driver menyesuaikan software database yang digunakan. Setelah konfiguraasi pada file database.php jangan lupa konfigurasi pada file autoload.php yang terletak sama pada folder applications. setting autoload.php autoload library database.

Secara default akses pada file database hanya mengakses 1 database seperti dibawah :

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'amazon';
$db['default']['database'] = 'badger';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Jika ingin menambahkan database lain maka perlu ditambahkan :

$db['upload']['hostname'] = 'localhost';
$db['upload']['username'] = 'root';
$db['upload']['password'] = '';
$db['upload']['database'] = 'upload';
$db['upload']['dbdriver'] = 'mysql';
$db['upload']['dbprefix'] = '';
$db['upload']['pconnect'] = TRUE;
$db['upload']['db_debug'] = TRUE;
$db['upload']['cache_on'] = FALSE;
$db['upload']['cachedir'] = '';
$db['upload']['char_set'] = 'utf8';
$db['upload']['dbcollat'] = 'utf8_general_ci';
$db['upload']['swap_pre'] = '';
$db['upload']['autoinit'] = TRUE;
$db['upload']['stricton'] = FALSE;

Hostname diatas masih sama hanya databasenya yang berbeda. Hostname berbeda maka tinggal mengganti nama hostnamenya. Secara default database yang digunakan adalah badger. Database upload dapat digunakan jika pada model saat pemanggilan tabel pada database upload diload database upload seperti berikut :

$db2 = $this->load->database('upload',TRUE);
$query = $db2->query("QUERY SQL");

Secara lengkap pada model jika ingin menggunakan database yang kedua saya menggunakan seperti ini:

<?php
function tampil_upload(){
$db2 = $this->load->database('upload', TRUE);
$query = $db2->query("SELECT * FROM store");
return $query;
}
?>

Tulisan diatas hanya corat-coret saya saja untuk membuat saya mudah mengingat jika suatu saat saya lupa. Tentunya saya tidak bisa membuat secara mendetail dan jelas karena saya bukan orang yang mahir dalam hal tersebut. Jika ada teman-teman yang membacanya saya mohon maaf jika tulisan saya ini mengecewakan karena tidak bagus. Tetapi saya berusaha untuk bisa lebih baik lagi, jika ada teman teman ada yang ingin menambahkan silahkan diisikan pada komentar.

Thursday, March 6, 2014

HTML ke PDF menggunakan dompdf dengan codeigniter

Dua bulan sudah berlalu ditahun 2014. Sekarang memasuki bulan ke tiga. Usia semakin menua tetapi ilmu tidak cepat berkembang karena masih sibuk mempelajari beberapa hal yang sebenarnya sudah seharusnya dikuasai. Banyak hal yang belum diketahui dan harus di pelajari. Sehari hanya disediakan waktu 24 jam dan hampir setengahnya digunakan untuk tidur. Waktu tidak terasa berjalan begitu ceapat walaupun hanya berlalu detik demi detik menit demi menit jam demi jam dan seterusnya. Jadwal yang sudah dibuat untuk mengalahkan waktu terkadang tidak bisa dijalankan karena terlalu lamanya waktu dan kurangnya kekuatan untuk terus bertahan dengan kondisi badan yang tidak bisa selalu prima. Usaha dan upaya untuk tepap hidup dan bertahan harus tetap dilakukan. Salah satunya dengan terus menulis agar tau isi dalam otak ini.

Sebelum ngelantur lebih baik saya menulis tentang beberapa hal yang saya lakukan di codeigniter. Awal membuat sistem menggunakan codeigniter dan dapat selesai walaupun hanya sebuah sistem untuk menampilkan laporan dalam bentuk web saya sudah merasa senang. Masalah selanjutnya muncul saat laporan tersebut akan di print dan di download dalam bentuk pdf. Waktu itu sungguh merasa sangat bodoh dan tidak tau apa yang seharusnya dilakukan. setelah searching-searching banyak tutorial yang memberitahu bagaimana cara membuat laporan dari html ke pdf. Saya tambahkan lagi masalahnya bagaimana membuat laporan pdf dari html menggunakan framework codeigniter. Ternyata dari google saya mengetahui ada beberapa cara penyelesaian yaitu menggunakan dompdf.

 Diasumsikan sudah bisa codeigniter
1. Siapkan codeigniter 2.1.0 atau versi diatasnya juga tidak masalah.
2. download dompdf dari https://code.google.com/p/dompdf/downloads/list pilih yang terbaru
3. extrack dompdf
4. buat new folder di application dengan nama third-party
5. copy semua file dan folder dalam exctract dompdf kedalam folder third-party
6. buat file library di folder application/library dengan format/ nama  Pdf.php
codenya seperti berikut :
------------------------------------------------------------------------------------------------------------
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Pdf {



function pdf_create($html, $filename='', $stream=TRUE){
   require_once(APPPATH."third_party/dompdf_config.inc.php");//Require Loader Class n Config
   spl_autoload_register('DOMPDF_autoload');//Autoload Resource

   ini_set("memory_limit", "999M");
ini_set("max_execution_time", "999");

   $dompdf = new DOMPDF();//Instansiasi
   $dompdf->load_html($html);//Load HTML File untuk dirender
   $dompdf->set_paper(array(0,0, 8.5 * 72, 13.5 * 72),"landscape" ); //array(0,0, 8.5 * 72, 11 * 72)
   $dompdf->render();//Proses Rendering File
   $canvas = $dompdf->get_canvas();
$font = Font_Metrics::get_font("helvetica", "bold");
$canvas->page_text(830, 578, "Halaman: {PAGE_NUM} dari {PAGE_COUNT}", $font, 8, array(0,0,0));
    if ($stream==TRUE) {
$dompdf->stream($filename, array('Attachment'=>0));
    } else {
$CI =& get_instance();
$CI->load->helper('file');
write_file($filename, $dompdf->output());//file name adalah ABSOLUTE PATH dari tempat menyimpan file PDF
    }
}
}
-----------------------------------------------------------------------------------------------------------
7. contoh script membuat pdf dengan dompdf pada controller
-----------------------------------------------------------------------------------------------------------
$this->load->library('pdf);
$this->pdf->pdf_grafik($this->load->view('v_rapj_belanja/v_grafik_rapj_belanja_js',$data,TRUE), 'grafik_realisasi_anggaran_per_jenis_belanja');