Tutorial Rails : Installasi Ruby 1.9.2 dan Rails 3.0.3 di Linux Ubuntu 10.04

Hei reader…:D

Mulai saat ini aku akan membiasakan diri menjadi pengguna linux (ubuntu)..hehehe. Seblumnya aku belajar rails pake Windows dan memang pada kasus2 tertentu saat develop aplikasi dg Ruby on Rails di windows perlu perlakuan khusus (red:sulit). Padahal, di linux bisa dilakukan hanya dengan command yng sangat pendek. Beberapa senior aku yng jago rails jg merekomendasikan pake linux untuk  belajar framework Ruby on Rails, so… aku putuskan mulai saat ini untuk membiasakan dgn linux (UBUNTU 10.04)… #kadang2 balik pake windows gpp kan???…hihi..

Baik.. pada kesempatan kali ini aku tulis langkah-langkah Installasi Ruby 1.9.2 dan Rails 3.0.3 di Linux Ubuntu 10.04. Ini adalah lingkungan baru buat aku, dan aku berharap aku akan menikmatinya…ckckck..

Sebelum melakukan instalasi Ruby on Rails, kita lakukan update package library terlebih dahulu dengan command:

 $ sudo apt-get update

Installasi Ruby 1.9.2

1.  Install beberapa library yang dibutuhkan pada saat installasi Ruby on Rails nanti

 $ sudo apt-get install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev

2. Install ruby dari source (http://www.ruby-lang.org) dgn command2 berikut:

$ mkdir ~/src && cd ~/src

 

$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.gz

 

$ tar -zxvf ruby-1.9.2-p136.tar.gz 

 

$ cd ruby-1.9.2-p136/

 

$ ./configure && make && sudo make install

3. Cek versi Ruby yng telah terinstall dengan:

 $ ruby --version

Jika instalasi berhasil maka akan muncul :

ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]

Update RubyGems

Ruby menggunakan sebuah paket manajemen sistem yng dikenal dengan nama RubyGems yng digunakan untuk mengatur instalasi dan maintenance program Ruby dan Library2nya. Lakukan update RubyGems dengan perintah berikut:

$ sudo gem update --system

Install Rails 3.0.3

Untuk installasi rails 3.0.3 kita cukup mengetikan satu baris perintah seperti berikut:

$ sudo gem install rails -v=3.0.3 

Setelah selesai, cek versi Rails dengan perintah :

 rails --version

Jika instalasi sukses maka akan muncul sperti berikut:

Rails 3.0.3

Sampai disini proses installasi Ruby 1.9.2 dan Rails 3.0.3 di Ubuntu 10.04 telah selesai. Untuk memastikan apakah Ruby on Rails sudah berjalan di Ubuntu kita, maka kita akan coba membuat sebuah project Rails, ketikan perintah berikut:

$rails new hello

Masuk ke direktori ‘hello’, kmudian jalankan server dengan:

$rails server

Jika berhasil maka akan tampil sperti berikut:

Tampilan Awal Rails

Tampilan Awal Rails

Website Sekolah CodeIgniter Bagian II: Membuat Login Authentikasi User (Admin, Guru, Siswa, Alumni)

Update :  Kode Programnya udah di migrasi ke CI 2.0.2, biar lebih fresh… :-), selengkapnya di => Website Sekolah dengan CodeIgniter : Migrasi ke CodeIgniter 2.0.2

Heii semua….

Alhmdulillah.. kali ini ak  masih diberi kesempatan utk melanjutkan tulisan ku tentang membuat website sekolah dengan CodeIgniter. Pada bagian II ini aku akan Login Authentikasi User untuk Admin, Guru, Siswa, dan Alumni. Tentu dng algorithm yg sederhana.. Krn aku baru bisa yang sederhana2 gt…:)

Download Full Source Code  | Demo Online

Baiklah kita mulai saja… dan langkahnya adalh sebagai berikut:

1.  Download master CodeIgniter versi terbaru di CodeIgniter.com

2.  Install CodeIgniter di webserver. Pada kesempatan kali aku pake WampServer. Temen2 bisa baca di CodeIgniter 1 # Instalasi dan Konfigurasi untuk langkah instalasinya.

3. Ektrak master CodeIgniter di wamp\www\ ,  rename menjadi sekolahku ,

4.  Ubah base_url pada file config.php dalam folder application/config menjadi seperti ini:


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

5. Ubah konfigurasi database.php menjadi seperti berikut (sesuikan dengan konfigurasi database server temen2):


$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "sekolahkudb";

6.  Buat database dengan nama dbsekolah sesuai dengan rancangan database pada bagian pertama dari tutorial ini. Atau temen2 bisa copy dan run SQL berikut ini:

-- --------------------------------------------------------

--
-- Table structure for table `alumni`
--

CREATE TABLE `alumni` (
`nama_lengkap` varchar(100) default NULL,
`tahun_lulus` int(11) default NULL,
`alamat` varchar(45) default NULL,
`pekerjaan` varchar(100) default NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_alumni_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `categories`
--

CREATE TABLE `categories` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `comments`
--

CREATE TABLE `comments` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) default NULL,
`email` varchar(100) default NULL,
`address` varchar(100) default NULL,
`message` varchar(255) default NULL,
`status` tinyint(4) default NULL,
`posts_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_comments_posts1` (`posts_id`),
KEY `fk_comments_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `pages`
--

CREATE TABLE `pages` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`status` tinyint(4) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_pages_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `posts`
--

CREATE TABLE `posts` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`status` tinyint(4) NOT NULL,
`categories_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_posts_categories1` (`categories_id`),
KEY `fk_posts_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `students`
--

CREATE TABLE `students` (
`nis` varchar(45) NOT NULL,
`nama_lengkap` varchar(100) NOT NULL,
`kelas` varchar(45) NOT NULL,
`alamat` varchar(255) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_students_users` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `teachers`
--

CREATE TABLE `teachers` (
`nip` varchar(45) NOT NULL,
`nama_lengkap` varchar(100) NOT NULL,
`golongan` varchar(10) NOT NULL,
`alamat` varchar(255) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_teachers_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(100) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
`type` varchar(45) NOT NULL,
`status` tinyint(4) NOT NULL,
`registered` datetime default NULL,
`last_login` datetime default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

7.  Masukan beberapa sampel data pada tabel user. Masing2 satu data untuk admin, teachers,students, dan alumni. Temen2 bisa run SQL berikut ini:

INSERT INTO `users` (`id`, `username`, `password`, `email`, `type`, `status`, `registered`, `last_login`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'admin@gie-art.com', 'admin', 1, '2011-01-19 03:18:21', '2011-01-19 03:18:26'),
(2, 'students', '75d37c6cbf460947005c97e3f12906a9', 'students@gie-art.com', 'students', 1, '2011-01-19 03:18:03', '2011-01-19 03:18:08'),
(3, 'teachers', 'ad7d0e29419cc0843e35c6fe93b14d09', 'teachers@gie-art.com', 'teachers', 1, '2011-01-19 03:16:41', '2011-01-19 03:16:44'),
(4, 'alumni', '9855f5cdff0306ae33a49f89e087ccbc', 'alumni@gie-art.com', 'alumni', 1, '2011-01-19 03:19:10', '2011-01-19 03:19:12');

Naaah…. sekarang adalah saatnya coding di CodeIgniter. Aku terbiasa mulai dari pembuatan model terlebih dahulu, baru kemudian membuat Controller dan View.

Login user yang akan dibuat kali ini adalah untuk memfasilitasi 4 tipe user, yaitu admin,teachers, students, dan alumni. Jadi hasil akhir pada bagian ini adalah bahwa setiap user bisa login dengan akun yang telah ditentukan dan user tersebut akan di arahkan ke halamannya masing2. Ketika seorang admin login dan berhasil maka dia akan dibawa  ke halaman administrator, begitu pula untuk students,teachers, dan alumni.

Sebelum pembuatan model, ada beberapa library dan helper yang perlu di set autoload terlebih dahulu pada file autoload.php dalam folder application/config :


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

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

8. Membuat model users_model. Masuklah pada folder application/model kemudian buat file php dengan nama users_model.php. Kemudian ketik program seperti berikut:


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class Users_model extends CI_Model {

    var $tabel_name = 'users';

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

    function cek_user_login($username, $password) {
        $this->db->select('*');
        $this->db->where('username', $username);
        $this->db->where('password', md5($password));

        $query = $this->db->get($this->tabel_name, 1);

        if ($query->num_rows() == 1) {
            return $query->row_array();
        }
    }

}
?>

9.  Masuklah pada folder controllers kemudian buat file users.php dan ketikkan kode program berikut ini:


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class Users extends CI_Controller {

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

    function login() {

        $this->form_validation->set_rules('username', 'username', 'required|xss_clean');
        $this->form_validation->set_rules('password', 'password', 'required|xss_clean');

        $this->form_validation->set_error_delimiters('', '<br/>');

        if ($this->form_validation->run() == TRUE) {
            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $login_data = $this->Users_model->cek_user_login($username, $password);
			if($login_data){
            $session_data = array(
                'user_id' => $login_data['id'],
                'username' => $login_data['username'],
                'type' => $login_data['type'],
                'is_login' => TRUE
            );

            $this->session->set_userdata($session_data);

            redirect('users/dashboard');

			}else{
				$this->session->set_flashdata('message','Login Gagal, Kombinasi username dan password salah.');
				redirect('users/login');
			}
        }
        $this->load->view('users/login');
    }

    function dashboard() {
        $this->check_logged_in();
        $this->load->view('users/dashboard');
    }

    function logout() {

        $data = array
            (
            'user_id' => 0,
            'username' => 0,
            'type' => 0,
            'is_login' => FALSE
        );

        $this->session->sess_destroy();
        $this->session->unset_userdata($data);

        redirect('users/login');
    }

    public function check_logged_in() {
        if ($this->session->userdata('is_login') != TRUE) {
            redirect('users/login', 'refresh');
            exit();
        }
    }

    public function is_logged_in() {
        if ($this->session->userdata('logged_in') == TRUE) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

10. Masukklah pada folder views kemudian buat folder users dan di dalamnya buat dua file yaitu : login.php dan dashboard.php dengan kode program masing2 sperti berikut:

login.php


<h2>Login User</h2>
<hr/>
<?php if($this->session->flashdata('message')):?>
<?php echo $this->session->flashdata('message');?>
<?php endif;?>
<?php echo validation_errors();?>
<?php echo form_open('users/login') ?>
<br/>
Username : <?php echo form_input('username') ?><br/>
Password : <?php echo form_password('password'); ?><br/>
<?php echo form_submit('submit', 'Login') ?>
<?php echo form_close(); ?>

dashboard.php

<h2>Dashboard User</h2><br/>
Anda adalah :
<?php
if ($this->session->userdata('type') == 'admin'):
    echo 'Admin';
elseif ($this->session->userdata('type') == 'teachers'):
    echo 'Teachers';
elseif ($this->session->userdata('type') == 'students'):
    echo 'Students';
elseif ($this->session->userdata('type') == 'alumni'):
    echo 'Alumni';
endif;
?>
<br/>
<h3><strong><?php echo anchor('users/logout', 'Logout') ?></strong></h3>

Baiklaaah.. sampai disini kita sudah mengerjakan 1 buah modul untuk login user. Dan kita bisa melihat hasilnya dengan mengetikkan http://localhost/sekolahku/index.php/users/login . Apabila tidak ada kesalahan maka tampilanya akan seperti berikut ini:

Login User Website Sekolah

Login User Website Sekolah

Download Full Source Code  | Demo Online

Sekian… selamat mencoba dan kita jumpa lagi di episode berikutnya….:-)

CodeIgniter 1 # Instalasi dan Konfigurasi

Konversi Mata Uang di CodeIgniter dengan kurs yang Up to Date

Emm… mungkin temen2 suatu saat butuh fitur konversi mata uang ini ketika develop Aplikasi dengan CodeIgniter. Misalnya saja ketika kita mau bikin  toko online yang mana harga product nya dapat ditampilkan dengan beberapa mata uang sebagai contoh IDR  (rupiah) dan USD (dolar).

Untuk fitur konversi mata uang ini aku mengunakan library yang  dibuat oleh Simon Jarvis yang bisa didapatkan source nya di http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php . Kurs mata uangnya up to date , dan tidak ribet implementasinya.  Oleh penulisnya emang dibuat untuk PHP secara umum…, tetapi kita juga bisa memakainya untuk aplikasi yang kita buat dengan framework CodeIgniter. Aku akan coba tuliskan bebrapa langkah untuk memakai library ini. Untuk yang belum pernah install framework CodeIgniter bisa baca artikel aku sebelumnya tentang Instalasi Framwork CodeIgniter.

Pertama kita buat file CurrencyConverter.php di dalam folder application/libraries.  Kemudian kita kopikan kode program yang dibuat oleh Simon Jarvis sperti dibawah.
[Read more...]

Searching Array Multidimensi di PHP

Emm….. kmarin aku nemui kasus di project yang sedang ku kerjain. Yaitu tentang shopping cart / keranjang belanja. Sekedar info ini shopping cart miliknya CodeIgniter 1.7.2. hehehe.  Bentuk fisik dari shopping cart ku ini berupa array dengan susunan seperti berikut:


$shopping_cart = Array
(

 'c81e728d9d4c2f636f067f89cc14862c' => Array

 (
 'rowid' => 'c81e728d9d4c2f636f067f89cc14862c',

 'id' => 2,
 'qty' => 4,

 'price' => 400000,
 'name' => 'Tas Kondangan',

 'size' => '15 x 15 x 15',
 'color' => 'hitam',

 'subtotal' => 1600000
 ),

 'a87ff679a2f3e71d9181a67b7542122c' => Array
 (

 'rowid' => 'a87ff679a2f3e71d9181a67b7542122c',
 'id' => 4,

 'qty' => 1,
 'price' => 550000,

 'name' => 'Tas Gendong',
 'size' => '30 x 30 x 30',

 'color' => 'Merah',
 'subtotal' => 550000,

 )

);

Nah dari data array itu kan terlihat ada 2 item barang yang dibedakan dengan rowid. Permasalahan yang ingin ku pecahkan adalah “bagaimana mendapatkan informasi quantitas (qty) suatu barang dengan kunci (rowid) tertentu???”. Harapannya aku mempunyai sebuah fungsi pencarian array yang mampu melaksanakan itu. Jadi misal  ak memberikan kepada fungsi tersebut sebuah parameter rowid = a87ff679a2f3e71d9181a67b7542122c , maka aku pengen fungsi itu memberikan informasi / nilai qty = 4. Hmm…. ak trus terang gak iso nek gawe dewe. hehe.  Seperti yang ku katakan pada postingan sebelumnya bahwa aku adalah web programmer dengan problem solving yang rendah...:(. Jadi ya tanya pak dhe Google aja “array multidemension search in php“. Dan berikut ini adalah fungsi dan contoh pemanggilan fungsi yang ku dapatkan:


function search($array, $key, $value)
{
 $results = array();

 if (is_array($array))
 {
 if ($array[$key] == $value)
 $results[] = $array;

 foreach ($array as $subarray)
 $results = array_merge($results, search($subarray, $key, $value));
 }

 return $results;
}

// pemanggilan fungsi
$data = search($shopping_cart, 'rowid', 'a87ff679a2f3e71d9181a67b7542122c');

print_r($data[0]['id']);

Dengan fungsi itu alhmdulillah ak bisa mendapatkan apa yang ku inginkan di depan, dan aku bisa melanjutkan pekerjaan selanjutnya… Semoga bermanfaat….:)

Source : http://stackoverflow.com/questions/1019076/how-to-search-by-keyvalue-in-a-multidimensional-array-in-php