Website Sekolah CodeIgntier IX: Menampilkan Posts di halaman depan (front page)

Heii bro n sista,

Emm.. mau ngucapin selamat menjalankan ibadah puasa ramadhan dulu ah.. bagi yng menjalankan. Smoga lancar dn semua ibadah kita di terima Allah. amiin :D

Okey.. kali ini aku akan lanjutin tutorial web sekolahnya tentang bagaimana menampilkan ‘Posts’ di halaman depan (front page).

Let’s Go !!

Sebelumnya kita telah mempunya controller ‘Pages’  utk bagian front yg tersimpan pada controllers/pages.php dan di dalamnya terdapat fungsi home(), nah kita akan memodifikasi fungsi ini agar bisa menampilkan ‘Posts’ di halaman depan. Okey, ubah controller ‘Pages’ (controller/pages.php) menjadi seperti berikut (di replace aja code seblumnya):

<?php


class Pages extends CI_Controller {

var $template = 'template';

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

function home() {
$data['posts'] = $this->Posts_model->findActive(5);
$data['page'] = 'pages/home';
$this->load->view($this->template, $data);
}

}

?>


Selanjutnya modifikasi juga view ‘home’ yang ada di views/pages/home.php menjadi seperti berikut:


<div><img src="<?php echo base_url(); ?>public/images/img06.jpg" alt="" width="510" height="250" /></div>
<?php if (!empty($posts)): ?>
<?php foreach ($posts as $post): ?>
<div>
<h1><a href="<?php echo site_url('posts/detail/' . $post['permalink']); ?>"><?php echo $post['title'] ?></a></h1>
<p><small><?php echo $post['created']; ?> by <a href="#"><?php echo $post['username']; ?></a></small></p>
<div>
<?php if (!empty($post['image'])): ?>
<img src="<?php echo base_url() . $post['image'] ?>" width="510" height="250"/>
<?php endif; ?>
<?php echo word_limiter($post['body'], 30); ?><br/>
<?php echo anchor('posts/detail/' . $post['permalink'], 'baca selengkapnya..'); ?>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>

Oh iya.. di view di atas dipanggil fungsi word_limiter yang ada pada helper “text” utk membatasi jumlah kata. Utk menggunakan itu kita harus mengaktifkan helpernya, bisa di panggil di autoload (config/autoload.php) dgn baris berikut:


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

Sampe di sini klo skrg kita akses localhost/sekolahku maka akan ditampilkan ‘Posts’ di halaman depan.

Selanjutnya adalah kita akan membuat tampilan detail dari artikel / posts tersebut kita di klik linknya. Maka pertama kita akan membuat controller Posts  dan simpen padacontrollers/posts.php kemudian ketikan kode berikut ini:


<?php

class Posts extends CI_Controller {

var $template = 'template';

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

function detail($permalink = null) {
if ($permalink == null) {
redirect('pages/home');
}
$data['post'] = $this->Posts_model->findByPermalink($permalink);

$data['page'] = 'posts/detail';
$this->load->view($this->template, $data);
}

}

?>


Kemudian terakhir kita buat view ‘detail’ dan simpan pada views/posts/detail.php dan ketikan kode program seperti berikut:

<?php if (!empty($post)): ?>

<div>
<h1><?php echo $post['title'] ?></h1>
<p><small><?php echo $post['created']; ?></small></p>
<div>
<?php if (!empty($post['image'])): ?>
<img src="<?php echo base_url() . $post['image'] ?>" width="510" height="250"/>
<?php endif; ?>
<?php echo $post['body'] ?><br/>

</div>
</div>

<?php endif; ?>

Selesaaiiii… selamat mencoba :D

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

Website Sekolah CodeIgniter VIII: Membuat Admin Modul Posts (with upload Image)

Hey mas bro.. and mbak sist

Aku lagi lumayan semangat nulis nih.. utk melanjutkan tutorial Membuat Website Sekolah dengan CodeIgniter.. haha. Postingan seblumya kita udah bahas tentang Modul Categories, utk kali ini aku akan menulis tentang membuat Admin Modul Posts. Modul ini terkait (berelasi) dengan modul Categories, karena setiap ‘Post’ akan masuk dalam ‘Category’ tertentu. Pada prinsipnya tetep sama menggunakan konsep CRUD, cuma ada tambahan untuk Upload Image / Foto yang nantinya akan ditampilkan dalam artikel tersebut.

Okey.. Let’s Go!!

Buat tabel ‘posts’ dengan SQL berikut (klo blum buat):


CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`image` varchar(255) NOT NULL,
`status` tinyint(4) NOT NULL,
`categories_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Buat Model  “Posts_model” dan simpan pada application/models/posts_model.php , kemudian ketikan kode berikut (note: jika sudah ad model post model, kodenya di replace semua aja) :


<?php

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

class Posts_model extends CI_Model {

var $table = 'posts';
 var $status = array(
 0 => 'draft',
 1 => 'published'
 );

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

function findAll($limit = null, $offset = null, $q = null) {
 $this->db->select('posts.*,categories.name, users.username');
 $this->db->join('categories', 'categories.id = posts.categories_id');
 $this->db->join('users', 'users.id = posts.users_id');
 if ($q != null) {
 $this->db->like('title', $q);
 }
 $this->db->limit($limit, $offset);
 $this->db->order_by('id', 'desc');
 $query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
 return $query->result_array();
 }
 }

function findActive($limit = null, $offset = null, $q = null) {
 $this->db->select('posts.*,categories.name, users.username');
 $this->db->join('categories', 'categories.id = posts.categories_id');
 $this->db->join('users', 'users.id = posts.users_id');
 if ($q != null) {
 $this->db->like('posts.title', $q);
 $this->db->or_like('posts.body', $q);
 }
 $this->db->limit($limit, $offset);
 $this->db->where('posts.status', 1);
 $this->db->order_by('id', 'desc');
 $query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
 return $query->result_array();
 }
 }

function findByCategoryId($categories_id, $limit = null, $offset = null) {
 $this->db->select('posts.*,categories.name, users.username');
 $this->db->join('categories', 'categories.id = posts.categories_id');
 $this->db->join('users', 'users.id = posts.users_id');
 $this->db->limit($limit, $offset);
 $this->db->where('posts.status', 1);
 $this->db->where('posts.categories_id', $categories_id);
 $this->db->order_by('id', 'desc');
 $query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
 return $query->result_array();
 }
 }

function findOthersInCategory($categories_id, $article_id, $limit = null, $offset = null) {
 $this->db->select('posts.*,categories.name, users.username');
 $this->db->join('categories', 'categories.id = posts.categories_id');
 $this->db->join('users', 'users.id = posts.users_id');
 $this->db->where('posts.categories_id', $categories_id);
 $this->db->where('posts.id !=', $article_id);
 $this->db->limit($limit, $offset);
 $this->db->where('posts.status', 1);
 $this->db->order_by('id', 'desc');
 $query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
 return $query->result_array();
 }
 }

function findById($id) {
 $this->db->select('posts.*');
 $this->db->where('id', $id);
 $query = $this->db->get($this->table, 1);

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

function findByPermalink($permalink) {
 $this->db->select('posts.*');
 $this->db->where('permalink', $permalink);
 $query = $this->db->get($this->table, 1);

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

function countAll() {
 $query = $this->db->get($this->table);
 return $query->num_rows();
 }

function create($params = array()) {
 if (empty($params)) {
 $data = array(
 'title' => $this->input->post('title'),
 'permalink' => url_title($this->input->post('title')),
 'body' => $this->input->post('body'),
 'categories_id' => $this->input->post('categories_id'),
 'status' => $this->input->post('status'),
 'users_id' => $this->session->userdata('id'),
 'created' => date("Y-m-d H:i:s")
 );
 $this->db->insert($this->table, $data);
 } else {
 $this->db->insert($this->table, $params);
 }
 }

function update($id, $params) {
 if (empty($params)) {
 $data = array(
 'title' => $this->input->post('title'),
 'permalink' => url_title($this->input->post('title')),
 'body' => $this->input->post('body'),
 'categories_id' => $this->input->post('categories_id'),
 'status' => $this->input->post('status'),
 'users_id' => $this->session->userdata('id'),
 'modified' => date("Y-m-d H:i:s")
 );

$this->db->where('id', $id);
 $this->db->update($this->table, $data);
 } else {
 $this->db->where('id', $id);
 $this->db->update($this->table, $params);
 }
 }

function destroy($id) {
 $this->db->where('id', $id);
 $this->db->delete($this->table);
 }

}

?>

Buat Controller “Posts” dan simpan pada application/controllers/posts.php :


<?php

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

class Posts extends CI_Controller {

var $template = 'admin/template';
var $imagePath = 'public/media/posts/';
var $status = array(
0 => 'draft',
1 => 'published'
);

function __construct() {
parent::__construct();
$this->general->checkAdmin();
$this->load->model('Posts_model');
$this->load->model('Categories_model');
}

function index($page = null) {

$this->load->library('pagination');
$config['uri_segment'] = 4;
$config['total_rows'] = $this->Posts_model->countAll();
$config['per_page'] = 10;
$config['base_url'] = base_url() . 'admin/posts/index/';

if ($this->input->get('q')):
$q = $this->input->get('q');
$data['posts'] = $this->Posts_model->findAll($config['per_page'], $this->uri->segment(4), $q);
if (empty($data['posts'])) {
$this->session->set_flashdata('error', 'Data tidak ditemukan');
redirect('admin/posts/index');
}
$config['total_rows'] = count($data['posts']);
else:
$data['posts'] = $this->Posts_model->findAll($config['per_page'], $this->uri->segment(4));
endif;
$this->pagination->initialize($config);
$data['status'] = $this->status;
$data['pagination'] = $this->pagination->create_links();
$data['content'] = 'admin/posts/index';
$this->load->view($this->template, $data);
}

function add() {

$this->form_validation->set_rules('title', 'title', 'required|xss_clean');
$this->form_validation->set_rules('body', 'body', 'required|xss_clean');
$this->form_validation->set_rules('categories_id', 'category', 'required|xss_clean');
$this->form_validation->set_rules('status', 'status', 'required|xss_clean');
$this->form_validation->set_error_delimiters('', '<br/>');
if ($this->form_validation->run() == TRUE) {

$params = array(
'title' => $this->input->post('title'),
'permalink' => url_title($this->input->post('title')),
'body' => $this->input->post('body'),
'categories_id' => $this->input->post('categories_id'),
'status' => $this->input->post('status'),
'users_id' => $this->session->userdata('id'),
'created' => date("Y-m-d H:i:s")
);
if ($_FILES['image']['error'] != 4) {
$config['upload_path'] = $this->imagePath;
$config['allowed_types'] = 'jpg|png|jpeg|gif';
$config['max_size'] = '200000';
$this->load->library('upload', $config);

if ($this->upload->do_upload("image")) {
$image = $this->upload->data();
$params['image'] = $this->imagePath . $image['file_name'];
}
}

$this->Posts_model->create($params);
$this->session->set_flashdata('success', 'Post created');
redirect('admin/posts');
}
$data['categories'] = $this->Categories_model->findList();
$data['status'] = $this->Posts_model->status;
$data['content'] = 'admin/posts/add';
$this->load->view($this->template, $data);
}

function edit($id = null) {

if ($id == null) {
$id = $this->input->post('id');
}
$this->form_validation->set_rules('title', 'title', 'required|xss_clean');
$this->form_validation->set_rules('body', 'body', 'required|xss_clean');
$this->form_validation->set_rules('categories_id', 'category', 'required|xss_clean');
$this->form_validation->set_rules('status', 'status', 'required|xss_clean');
$this->form_validation->set_error_delimiters('', '<br/>');
if ($this->form_validation->run() == TRUE) {

$params = array(
'title' => $this->input->post('title'),
'permalink' => url_title($this->input->post('title')),
'body' => $this->input->post('body'),
'categories_id' => $this->input->post('categories_id'),
'status' => $this->input->post('status'),
'users_id' => $this->session->userdata('id'),
'created' => date("Y-m-d H:i:s")
);
if ($_FILES['image']['error'] != 4) {
$config['upload_path'] = $this->imagePath;
$config['allowed_types'] = 'jpg|png|jpeg|gif';
$config['max_size'] = '200000';
$this->load->library('upload', $config);

if ($this->upload->do_upload("image")) {
$image = $this->upload->data();
$params['image'] = $this->imagePath . $image['file_name'];
}
}

$this->Posts_model->update($id, $params);
$this->session->set_flashdata('success', 'Post edited');
redirect('admin/posts');
}

$data['post'] = $this->Posts_model->findById($id);
$data['categories'] = $this->Categories_model->findList();
$data['status'] = $this->status;
$data['content'] = 'admin/posts/edit';
$this->load->view($this->template, $data);
}

function delete($id = null) {
if ($id == null) {
$this->session->set_flashdata('error', 'Invalid post');
redirect('admin/posts');
} else {
$post = $this->Posts_model->findById($id);
if (file_exists($post['image'])) {
unlink($post['image']);
}
$this->Posts_model->destroy($id);
$this->session->set_flashdata('success', 'Post deleted');
redirect('admin/posts');
}
}

}

?>

Pada controller di atas terdapat kode program untuk upload image/foto. Image ato foto tersebut akan disimpan pada folder sesuai yang didefinisikan -> var $imagePath = ‘public/media/posts/’; Sehingga kita perlu buat folder media  dalam folder public, kemudian buat folder posts di dalam folder media. Serta jangan lupa permissionnya di set 777 (chmod 777).

Next, buat view index.php dan simpan pada application/views/admin/posts/index.php :


<h3>List Posts</h3>
<?php echo anchor('admin/posts/add', 'Add'); ?><br/>
<?php if ($this->session->flashdata('success')): ?>
<i><?php echo $this->session->flashdata('success'); ?><i/>
<?php endif; ?>
<?php if ($this->session->flashdata('error')): ?>
<i><?php echo $this->session->flashdata('error'); ?><i/>
<?php endif; ?>
<table border="1">
<tr>
<td>No</td>
<td>Image</td>
<td>Title</td>
<td>Category</td>
<td>Status</td>
<td>User</td>
<td>Action</td>
</tr>
<?php if (!empty($posts)): ?>
<?php $no = 1; ?>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $no; ?></td>
<td><img src="<?php echo base_url().$post['image']; ?>" width="100" height="100"/></td>
<td><?php echo $post['title']; ?></td>
<td><?php echo $post['name']; ?></td>
<td><?php echo $status[$post['status']]; ?></td>
<td><?php echo $post['username']; ?></td>
<td>
<a href="<?php echo site_url('admin/posts/edit/' . $post['id']); ?>">Edit</a> |
<a href="<?php echo site_url('admin/posts/delete/' . $post['id']); ?>" onclick=" return confirm('Are you sure?')">Delete</a>
</td>
</tr>
<?php $no++; ?>
<?php endforeach; ?>
<?php endif; ?>

</table>

Next, buat view add.php dan simpan pada application/views/admin/posts/add.php :


<?php
echo initialize_tinymce();
?>
<h3>Add Post</h3><br/>
<?php echo validation_errors(); ?>
<?php echo form_open_multipart('admin/posts/add'); ?>
Title :<br/>
<?php echo form_input(array('name' => 'title', 'value' => set_value('title', isset($page['title']) ? $page['title'] : ''))); ?><br/>
Body :<br/>
<?php echo form_textarea(array('name' => 'body', 'value' => set_value('title', isset($page['body']) ? $page['body'] : ''))); ?><br/>
Category:<br/>
<?php echo form_dropdown('categories_id',$categories);?><br/>
Image : <br/>
<?php echo form_upload('image');?><br/>
Status:<br/>
<?php echo form_dropdown('status', $status, isset($page['status']) ? $page['status'] : ''); ?><br/>
<?php echo form_submit('submit', 'Save'); ?>

<?php echo form_close(); ?>

Next, buat view edit.php dan simpan pada application/views/admin/posts/edit.php:


<h3>Edit Page</h3><br/>
<?php echo initialize_tinymce(); ?>
<?php echo validation_errors(); ?>
<?php echo form_open_multipart('admin/posts/edit'); ?>

<?php echo form_hidden('id', $post['id']); ?>
Title :<br/>
<?php echo form_input(array('name' => 'title', 'value' => set_value('title', isset($post['title']) ? $post['title'] : ''))); ?><br/>
Body :<br/>
<?php echo form_textarea(array('name' => 'body', 'value' => set_value('title', isset($post['body']) ? $post['body'] : ''))); ?><br/>
Category:<br/>
<?php echo form_dropdown('categories_id', $categories,$post['categories_id']); ?><br/>
Current Image : <br/>
<img src="<?php echo base_url().$post['image'];?>" width="150" height="150"/><br/>
Image : <br/>
<?php echo form_upload('image'); ?><br/>
Status:<br/>
<?php echo form_dropdown('status', $status, isset($post['status']) ? $post['status'] : ''); ?><br/>
<?php echo form_submit('submit', 'Save'); ?>

<?php echo form_close(); ?>

Okey… saatnya uji coba.. dan taraaaaaaaaaaa hasilnya sperti gambar berikut:

Modul Posts

Modul Posts

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

Eh tapi sorry ya guys.. nulis tutorialnya maen next2 aja.. habis klo mo dijelasin detailnya pegel juga.haha , ntar klo butuh penjelasan kita interaktif aja via Komentar dibawah :D , okey. Semoga bermanfaat :)

Video Tutorial Membuat Aplikasi Google Map dengan CodeIgniter 2.0.2 episode 1-5

Hey semua…

Dari pada ni video basi di hardisk, aku iseng2 aja upload semua ke file hosting ..#mumpung speed uploadnya 300kb/second….hihihi.  Sapa tau aja bermanfaat bagi temen2 smua.  Yng minat langsung sedot aja deh link di bawah:

Peringatan !!!

Video ini tanpa sensor, tanpa editing, dan tanpa rekayasa.  Semua seperti kenyataan yang terjadi. Harap digunakan sebagaimana mestinya…#halah

 

Ziddu

Instalasi CodeIgniter 2.0.2

CRUD di CodeIgniter

Membuat Login Administrasi

Menggunakan Library Google Map di COdeIgniter

Integrasi Google Map dengan Database Buatan Sendiri

 

File Factory

Instalasi CodeIgniter 2.0.2

CRUD di CodeIgniter

Membuat Login Administrasi

Menggunakan Library Google Map di COdeIgniter

Integrasi Google Map dengan Database Buatan Sendiri

 

4shared

Instalasi CodeIgniter 2.0.2

CRUD di CodeIgniter

Membuat Login Administrasi

Menggunakan Library Google Map di COdeIgniter

Integrasi Google Map dengan Database Buatan Sendiri

 

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

Membuat Website Sekolah dengan CodeIgniter : Bagian I

Heii semua….

ini adalah postingan aku yang pertama kali di tahun 2011 (hmmm kesed bgt yo).. maklum akhir tahun kmrin sibuk bgt jew…ckckck

Nah,  kali ini aku mau nulis artikel tentang membuat website sekolah dengan CodeIgniter. Sekalian belajar, sekalian berbagi… Bagi yang pemula mungkin ini bisa dijadiin tambahan tutorial.,, emm.. bagi yang udah mahir CI.. klo ada salah tolong dikoreksi ya!!!….:D

Berikut ini adlah beberapa fitur sederhana yang akn dibuat:

Bagian Admin:

  • Manage User
  • Manage Pages
  • Manage Posts/ Articles
  • Manage Comments

Bagian Alumni:

  • Register sebagai Alumni
  • Edit Profile
  • Kirim Artikel

Bagian Siswa:

  • Register sebagai Siswa
  • Edit Profile
  • Kirim Artikel

Bagian Guru:

  • Register sebagai Guru
  • Edit Profil
  • Kirim Artikel

Rancangan Database

Untuk mengakomodasi beberapa fitur di atas maka dirancang sebuah database seperti berikut:

rancangan database

rancangan database

Baik lah kawan…. untuk bgian I dari tutorial Membuat Website Sekolah dengan CodeIgniter cukup sekian dulu.. Pada kesempatan berikutnya kita akan memulai implementasi rancangan ini dengan CodeIgniter… SEMANGAAT!!….:)

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...]

Mulai menggunakan Doctrine ORM (Object Relational Mapper) di Framework CodeIgniter

Heii….lama bgt gak nulis di blog ni…lg crowded bgt…:D .. (just openning statement..hehehe)

Sejak kenal framework CodeIgniter sampe skrg udah bebrapa project yang ku kerjain. Aku memang merasakan bekerja dengan Framework CI terasa lebih cepat dan menyenangkan dibanding dengan PHP scratch..(iih,,capek bgt mengenangnya).

Namun..yang kadang ak keluhkan adalah ketika dihadapkan dengan Query2 yang komplex…hmm..mulai gak nyaman deh… Kebayang jika bisa kyak di Framework Ruby on Rails yang OOP bgt…Kan jadi enak bgt tu ngurusi query yang komplex…

Beberapa hari kmarin lihat2 di forum n Wiki CodeIgniter…dan ternyata udah banyak bgt ORM tool di PHP yang support CI… , salah satu yang terkenal adalah Doctrine ORM,..wah jadi seneng bgt ni…

Segera saja aku menuju website resminya Doctrine…dan download sourcenya…hmm….bakal lebih nyaman lagi ni ngerjain projectnya…hehehe

Doctrine adalah salah satu plugin Object Relational Mapper untuk PHP. Sedikit bgt yang ku ketahui tentang apa itu ORM… Tapi menurutku dengan ORM tool kita bisa memetakan tabel2 dalam database ke dalam bentuk class-class / Object dalam aplikasi web yang kita buat., dan Object / Class itu merepresentasikan record2 tabel dalam database kita…

Jadi dengan menggunakan ORM akan membuat proses manipulasi (Create,Read,Upadte,Delete) database menjadi sangat mudah dan menyenangkan. Karena kita akan bisa berfikir lebih Object Oriented dan tidak perlu kontak langsung dengan yang namanya Query.  Dengan ORM maka permasalahan Query yang komplex akan terasa jadi lebih sederhana..dan kita tidak akan frustasi dibuatnya,,,,hehehe.

Ini adalah ilustrasi dari http://phpandstuff.com tentang penggunaan Doctrine ORM di codeigniter:

Okey… cukup untuk posting kali ini…berikutnya mungkin akan posting tentang studi kasusnya langsung,,,hehehe

See you all…

7 Top CMS Application Built on CodeIgniter Framework

Dear all..

Emm… ketika kita pengen membuat aplikasi web dengan cepat maka gunakanlah FRAMEWORK. Dan ketika kita pengen membuat aplikasi web dengan LEBIH cepat lagi maka gunakanlan CMS yang dibuat dengan FRAMEWORK…:D . Akhh,,,, ini cuma ungkapanku saja kok. Mungkin temen2 bisa mencari bukti kebenaranya…

Nah… beberapa bulan kemarin ketika aku searching CMS yang dibuat dengan CodeIgniter baru menemukan Open Blog sperti yang telah ku posting sebelumnya. Dan beberapa hari kemarin aku searching lagi. Wow….aku mendapatkan 6 lagi prend.  Aku sekarang sibuk compare dari 7 CMS (termasuk open blog) hasil searchingku ini. Yaa,,,sambil mikir mana yang lebih asyik  buat ngerjain orderan sich….hehehe

Dan bagi temen2 yang belum tau…. inilah 7 Top CMS Application Built on COdeigniter Framework….:D

Open Blog

Fitur : Friendly User Interface, Easy to Install, Multi language Support, Search Engine Friendly URL, Posts, Pages, Links, Feed Support, Admin Panel, WYSIWYG editor, Plugins, Check Update

open-blog.info

CodeFight

http://www.codefight.org

Expression Engine

Hmm… ini paling gila fiturnya.. , buka aja dech ke webnya. Males nulis… hehehe

http://expressionengine.com

PyroCMS

Fitur : Categories, Comments, Navigation, News,  Pages, Photos Product, Service, User Setting.

http://www.pyrocms.com/

Tarichi

Fitur : pages, banner, product, product category, gallery, file management, template, admin panel

Ini buatan anak Indonesia lho… tapi kyaknya banyak eror… hehehe

dotexe.unnes.ac.id/2009/03/20/tarichi-sebuah-cms-berbasis-ci/

Site Managr

Fitur : Events, News, Media, Links,  Pages, Photos, Email, Statistic, User Setting, dll

http://designelemental.net/sitemanagr

Ci-CMS

Fitur : Pages, News, Navigation,Search, User Permision Setting, Upload Images, language, dll

http://solaitra.tuxfamily.org/

Klo temuan temen2 belum kedaftar silahkan ditambahkan ya,,,, hehehe.

Semoga bermanfaat….

12 Langkah Installasi Open Blog dengan Vertrigo

Seperti kita ketahui Open Blog adalah contoh aplikasi blog yang dibuat dengan framework Codeigniter yang menurut saya cukup bagus untuk dioprek2…hehehe

Namun… beberapa temen mengalami kesulitan menginstallnya. Itu juga ku alami pertama kali install di WampServer.. Why…?? karena pada tahap configurasi Open Blog mengharuskan mengisi password database MySQL meski disettingan database server, password kita kosong. Pernah aku coba cari kode programnya agar password bisa dikosongi, tapi malah error… Ealah ribet.

Nah.. dari situlah aku berfikir untuk install di vertrigo server. Krn default install vertrigo server ada user n passwordnya, user = root , pass= vertrigo. Alhmdulillah semua berjalan dengan mulus…, dan setelah itu hasil installannya ku pindah ke wamp server. Kerjaanku banyak yang pake Wamp Server sichh. Ini adalah trik yang jitu… (red : agak licik ..hehehe).

Sekedar berbagi ma yg belum bisa.. ni aku ceritain 12 langkah Instalasi Open Blog dengan Vertrigo. O iya… aku pake Vertrigo versi 2.16. Langkahnya :

1. Ekstrak file .zip master Open Blog kamu ke folder www

2. Setelah ekstrak selesai maka akan tampil hasil ekstrak seperti berikut

3. Rename dengan nama yang lebih teratur misal : blog

4. Kita buat database terlebih dahulu lewat phpmyadmin,, misal nama database kita: blogdb

5. Panggil di browser dengan mengetikkan http://localhost/blog , maka akan tampil seperti berikut

6. Klik “Install Open Blog” ,.. maka akan tampil seperti berikut:

7. Klik tombol “Start installation“…akan ditampilkan sperti berikut:

8. Klik “Step 2” , Lengkapi konfigurasi sesuai dengan settingan server Anda (ingat user, password admin kamu),, kemudian tekan tombol “Install”..,

9. Jika berhasil maka akan tampil seperti berikut dan kamu diminta menghapus folder install. Hapus folder install.

10. Klik link “Blog Home Page”…,Dan…. Jreenggg….. Inilah Open Blog Kamu…

11. Klik link login pada sudut kanan bawah, Coba login dengan account admin kamu

12. Wowww….. keren bgt kan admin panelnya…

Emm… setelah install selesai kamu dapat oprek2 sesuka kamu dan segera hunting project2 buat studi kasus… (sekaligus isi ulang dompet …. hehehe)

Open Blog : Aplikasi Blog yang Dibuat dengan Framework CodeIgniter (CI)

Dear my friends…

Sore tadi menjelang kemas-kemas tuk pulang kerja, aku sempat buka Google dan ku ketikkan “blog built in codeigniter”. Tentunya harapanku adalah dapet blog open source yang dibikin dengan CodeIgniter, yang bisa ku modifikasi klo2 ada orderan website…

Dan…. yaa, aku temukan Open Blog 1.2.1 telah dirilis. Horeee…!!!, langsung aja aku cari link downloadnya, dan ku download dech. Sambil menunggu download selesai aku coba2 live demonya di http://www.open-blog.info/demo/. Ku coba login ke administratornya…..

Hmm….. Keren bgt. Manteb dah, lengkap bgt fiturnya. Ada templates manager, languages, post, categories,modul, pages, navigation, feeds, data back up, dll. Wah,,,,pokoknya berani bersaing dengan blog2 lain lah… Seneng bgtt… Bakal aku bongkar habis2an source codenya nie..hehehe

Nah.. mungkin aku telat juga sich tahu open blog ni.hiks2… Tapi mungkin bagi temen2 yang belum tahu.. saya kira dengan adanya Open Blog ini sangat bermanfaat bagi kita yang lagi belajar bikin aplikasi dengan CodeIgniter. Terutama untuk ngembangin aplikasi skala besar dan berbasis modular..,

Semoga bermanfaat n… ayo kita uprek bareng2 yuuk….!!!

Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins