Kategori
PHP

Tutorial Searching / Pencarian Data dengan PHP dan Mysql

Studi Kasus : Membuat script untuk pencarian data dalam database
Kebutuhan : Webserver Packages, already installed.

Searching, merupakan fasilitas yang hampir selalu ada dalam setiap aplikasi, baik aplikasi berbasis web ataupun desktop. Setiap halaman web/ blog juga akan ditemukan fasilitas ini. Tutorial berikut akan memberikan konsep dasar dari searching, dengan melakukan pencarian pada data terstruktu (database).

Ok, langsung praktik saja.

Step 1 : Persiapkan Database

  1. Buat database dengan nama db_tutorial
  2. Siapkan tabel dengan nama tb_student, dengan struktur tabel seperti gambar dibawah ini.
  3. Insert-kan beberapa sample data, misal seperti gambar dibawah,
  4. Done with the database!

Step 2 : Persiapkan Folder Kerja

  1. Buat folder dengan nama searching dalam document root anda
  2. Simpan semua file dalam praktikum ini dalam folder tersebut.

Step 3 : Membuat script koneksi ke DB

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    $host = "localhost";
    $user = "root";
    $pass = "";
    $dbName = "db_tutorial";
    mysql_connect($host, $user, $pass);
    mysql_select_db($dbName)
    or die ("Connect Failed !! : ".mysql_error());
    ?>
    [/sourcecode]
  2. simpan dengan nama connect.php
  3. Penjelasan : Script ini akan digunakan untuk menghubungan aplikasi kita dengan database db_tutorial. Sesuaikan username dan password dengan setting-an mysql anda.

Step 4 : Membuat form pencarian

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <html>
    <head>
    <title> Halaman Pencarian </title>
    </head>
    <body>
    <form name="formcari" method="post" action="search_exe.php">
    <table width="330" border="0" align="center" cellpadding="0">
    <tr bgcolor="orange">
    <td height="25" colspan="3">
    <strong> Student Searching ! </strong>
    </td>
    </tr>
    <tr> <td> Name </td>
    <td> <input type="text" name="name"> </td>
    </tr>
    <td></td>
    <td> <input type="SUBMIT" name="SUBMIT" id="SUBMIT" value="search" > </td>
    </table>
    </form>
    </body>
    </html>
    [/sourcecode]
  2. simpan dengan nama formsearching.php
  3. Penjelasan : script diatas adalah HTML script biasa yang akan menampilkan form. Perhatian bagian action="search_exe.php", bagian ini dimaksudkan bahwa form akan diproses oleh script search_exe.php

Step 5 : Membuat script pemrosesan dan menampilkan hasil searching

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    include "connect.php";
    $name= $_POST[‘name’]; //get the nama value from form
    $q = "SELECT * from tb_student where name like ‘%$name%’ "; //query to get the search result
    $result = mysql_query($q); //execute the query $q
    echo "<center>";
    echo "<h2> Hasil Searching </h2>";
    echo "<table border=’1′ cellpadding=’5′ cellspacing=’8′>";
    echo "
    <tr bgcolor=’orange’>
    <td>No</td>
    <td>Nama Mahasiswa</td>
    <td>Alamat</td>
    </tr>";
    while ($data = mysql_fetch_array($result)) { //fetch the result from query into an array
    echo "
    <tr>
    <td>".$data[‘no’]."</td>
    <td>".$data[‘name’]."</td>
    <td>".$data[‘address’]."</td>
    </tr>";
    }
    echo "</table>";
    ?>
    [/sourcecode]
  2. simpan dengan nama search_exe.php
  3. Penjelasan dapat dilihat di script comment

Step 6 : Testing Code

  1. Pergi ke http://localhost/searching/formsearching.php. Anda akan melihat form seperti dibawah,
  2. Masukkan nama pada field nama (misal nama yang telah diinsert ke DB, yaitu june)
  3. Klik tombol search dan anda akan melihat hasilnya

Selamat berkreasi dengan PHP πŸ˜€ Happy Coding..

Kategori
PHP

Tutorial Membuat AJAX-Tab Sederhana dengan AJAX dan PHP

Studi Kasus : Membuat contoh aplikasi AJAX sederhana (Tab Ajax) dengan PHP

Kebutuhan : Webserver Package, already installed.

Step 1 : Membuat struktur folder kerja

  1. Siapkan folder dengan nama simpleajax pada folder document root anda.
  2. Simpan file gif berikut ini pada folder simpleajax (simpan gambar dengan cara : klik pada gambar dan save as). Gambar ini akan digunakan sebagai loader animation, yaitu gambar yang akan ditampilkan ketika transaksi ajax sedang dilakukan.
  3. Simpan semua file pada praktikum hari ini pada folder ini.

Step 2 : Membuat file Index

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <html>
    <head>
    <title></title>
    <script type="text/javascript" src="ajax.js"></script>
    </head>
    <body>
    <center>
    <h3> Simple AJAX Tabs</h3>
    <div id="tabs">
    <a href="fallback1.php" id="tab1" class="tab" onclick="return handleOnClick(1);"> News 1</a>
    <a href="fallback2.php" id="tab2" class="tab" onclick="return handleOnClick(2);">News 2</a>
    </div>
    <br>
    <div id="content">Klik pada tab untuk mengaktifkannya.</div>
    </center>
    </body>
    </html>
    [/sourcecode]
  2. Simpan dengan nama index.php
  3. Penjelasan : Index.php adalah file utama dalam aplikasi ini. Bagian yang paling penting untuk implementasi Ajax adalah pada baris 9 – 14. Setiap link pada tab memiliki masing – masing sebuah atribut value href dan onclick event handler, seperti pada script dibawah,
    [sourcecode language=”php”]<a href="fallback1.php" id="tab1" class="tab" onclick="return handleOnClick(1);"> News 1</a>[/sourcecode]

    Pada kasus ini, AJAX diinisiasi ketika user mengaktifkan tab dengan meng-kliknya.

    Ketika transaksi AJAX berhasil dieksekusi = fungsi handleOnClick() mengembalikan nilai false sehingga akan membatalkan event klik. AJAX kemudian mengontrol proses update pada dokumen dan href tidak diikuti.
    Ketika transaksi AJAX gagal (XMLHttpRequest objek tidak dapat diinstansiasi, dengan kata lain browser tidak support AJAX) = Fungsi handleOnClick mengembalikan nilai true dan href diikuti, menavigasi dokumen pada halaman dokumen baru (yaitu halaman fallback).

    Kenapa aplikasi menyediakan masing-masing event handler onClick dan sebuah href URL untuk setiap tab?

    Hal ini untuk mengatasi apabila browser dari device yang digunakan tidak mensupport AJAX. Jadi apabila device mensupport AJAX, transaksi AJAX untuk menampilkan berita akan dilakukan. Namun apabila tidak support, berita tetap ditampilkan tetapi dengan mengarahkannya pada halaman web baru (halaman fallback) berisi berita yang sama dari halaman yang dihasilkan oleh transaksi AJAX.

Step 3 : Membuat file ajax.js

  1. Ketikkan script berikut,
    [sourcecode language=”javascript”]
    var req = null;
    // Function to obtain an instance of XMLHttpRequest used in an AJAX request
    function getXHR() {
    if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
    }
    else try {
    return new ActiveXObject(‘Msxml2.XMLHTTP’);
    } catch(e) {
    try {
    return new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
    return null;
    }
    }
    }
    // Use AJAX to update the page content.
    // Returns true if the AJAX request succeeded, or false otherwise.
    function updateContent(url, id) {
    req = getXHR();
    if (req != null) {
    // Create a HTTP get request
    req.open(‘GET’, url);
    // Anonymous callback function to handle state changes for the web request
    req.onreadystatechange = function() {
    // State "4" is response received.
    if (req.readyState == 4) {
    // Check for HTTP 200 – successful response from web server
    if (req.status == 200) {
    document.getElementById(id).innerHTML = req.responseText;
    } else {
    document.getElementById(id).innerHTML = ‘Could not retrieve data.’;
    }
    }
    // For all other states, show an animated gif indicating that content is loading
    else {
    document.getElementById(id).innerHTML = ‘<img id="loading" src="flickr-loader.gif"/>’; //result of download step 1
    }
    return false;
    }
    // Start the AJAX transaction
    req.send(”);
    } else {
    return false;
    }
    return true;
    }
    // This is the onClick event handler for the tab links
    // index – the zero-based index of the tab that was clicked
    function handleOnClick(index) {
    // Construct the ID of the clicked tab
    var tabId = "tab" + index;
    // Update the style of the active tab.
    document.getElementById(tabId).setAttribute(‘class’, ‘activeTab’);
    // Update the styles of the inactive tabs. This could also be achieved in a for loop.
    if (index != 1) {
    document.getElementById("tab" + 1).setAttribute(‘class’, ‘tab’);
    }
    if (index != 2) {
    document.getElementById("tab" + 2).setAttribute(‘class’, ‘tab’);
    }
    // Use AJAX to update the "content" div.
    // Construct the URL to use to retrieve the updated content
    var url = "http://localhost/helloMobile/getNews"+index+".php";
    // If the AJAX request succeeded, do not follow the original link
    if (updateContent(url, "content")) {
    return false;
    }
    // If we are here, then the AJAX transaction failed.
    // Follow the link and load the static page.
    return true;
    }
    [/sourcecode]
  2. Simpan dengan nama ajax.js
  3. Penjelasan : Kunci utama dari AJAX adalah objek XMLHttpRequest. Objek tersebut terletak pada browser sehingga masing – masing browser memiliki cara tersendiri untuk membuat objek tersebut. Function getXHR() pada script ajax2.js diatas adalah fungsi untuk menciptakan instance dari XMLHttpRequest (XHR) yang akan digunakan pada AJAX (Catatan : untuk IE, mensupport ajax via ActiveX objects, bukan XHR).Function updateContent() merupakan fungsi yang akan mengupdate content dari tab via AJAX, fungsi ini akan mengembalikan nilai true apabila transaksi AJAX berhasil, dan false jika gagal.
    Setelah itu fungsi akan menciptakan Http get request dan mengecek progress dari update dengan onreadystatechange event.
    onreadystatechange event menjalankan 3 hal,
    a. Jika asynchronous web request sedang dalam progress, maka animasi loading akan ditampilkan.
    b. Jika AJAX request completed, maka body dari web response akan digunakan sebagai content dari elemen.
    c. Jika AJAX request terminate dengan sebuah eror, maka eror akan ditampilkan pada user, yaitu β€œCould not retrieve data”Transaksi AJAX menggunakan document.getElementById dan element.innerHTML untuk mengupdate bagian dinamis dari dokumen (dalam kasus ini adalah berita sebagai bagian dinamis dari mobile web).

    Function handleOnClick() merupakan fungsi event handler ketika tab di klik. Fungsi ini menggunakan parameter index, sesuai dengan index dari tab yang diklik oleh user. Fungsi ini akan mengupdate style dari tab (untuk membedakan tab yang aktif dan yang tidak aktif) dan mengupdate isi dari div content. Isi dari div content merupakan file berita sesuai dengan tab yang diklik user. Content ini didapat dari URL var url = “http://localhost/simpleajax/getNews”+index+”.php”;
    Jadi script tersebut akan me-retrieve halaman dari getNews(index) dengan menggunakan AJAX, sesuai dengan index dari tab yang diklik oleh user.

Step 4 : Membuat file get News

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    sleep(2);
    echo "News 1";
    echo "Ini adalah isi berita 1";
    ?>
    [/sourcecode]
  2. Simpan dengan nama getNews1.php
  3. Kemudian ketiikan script berikut,
    [sourcecode language=”php”]
    <?php
    sleep(2);
    echo "News 2";
    echo "Ini adalah isi berita 2";
    ?>
    [/sourcecode]
  4. Simpan dengan nama getNews2.php
  5. Penjelasan : Dua file ini merupakan original link (yang dijalankan via AJAX) dari tab pertama dan kedua (tab berindex 1 dan 2). Jadi getNews1.php dan getNews2.php akan dijalankan apabila user meng-klik tab index 1 dan 2, serta browser yang digunakan mensupport AJAX.

Step 5 : Membuat file fallback

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <html>
    <head>
    <title></title>
    <script type="text/javascript" src="ajax.js"></script>
    </head>
    <body>
    <center>
    <h3> Simple AJAX Tabs</h3>
    <div id="tabs">
    <a href="fallback1.php" id="tab1" class="tab" onclick="return handleOnClick(1);"> News 1</a>
    <a href="fallback2.php" id="tab2" class="tab" onclick="return handleOnClick(2);">News 2</a>
    </div>
    <div id="content">
    <?php echo "News 1";
    echo "Ini adalah isi berita 1";
    ?>
    </div>
    </center>
    </body>
    </html>
    [/sourcecode]
  2. Simpan dengan nama fallback1.php
  3. Kemudian ketiikan script berikut,
    [sourcecode language=”php”]
    <html>
    <head>
    <title></title>
    <script type="text/javascript" src="ajax2.js"></script>
    </head>
    <body>
    <center>
    <h3> Simple AJAX Tabs</h3>
    <div id="tabs">
    <a href="fallback1.php" id="tab1" class="tab" onclick="return handleOnClick(1);"> News 1</a>
    <a href="fallback2.php" id="tab2" class="tab" onclick="return handleOnClick(2);">News 2</a>
    </div>
    <div id="content">
    <?php echo "News 2";
    echo "Ini adalah isi berita 2";
    ?>
    </div>
    </center>
    </body>
    </html>
    [/sourcecode]
  4. Simpan dengan nama fallback2.php
  5. Penjelasan : File fallback1.php dan fallback2.php merupakan file webpage statis yang akan dijalankan apabila user meng-klik tab index 1 dan 2, serta browser yang digunakan TIDAK mensupport AJAX. Jadi berita tetap ditampilkan namun dengan cara yang berbeda (tidak menggunakan AJAX).

Step 6 : Testing Code

  1. Pergi ke http://localhost/simpleajax/
  2. Maka file index.php akan ditampilkan, seperti gambar dibawah ini,
  3. Klik pada salah satu tab, maka jika browser anda support ajax, animasi loading akan ditampilkan. Lihat gambar dibawah.
  4. Setelah loading selesai, maka isi dari tab tersebut akan ditampilkan (dari getNews.php)
  5. Coba matikan ajax pada browser anda (dengan me-nonaktifkan javascript browser – untuk browser Firefox, caranya adalah dengan klik tools – options – content – hilangkan tanda centang pada activated javascript ). Lihat gambar dibawah.
  6. Coba lagi dengan mengklik salah satu tab.
  7. Maka berita akan ditampilkan tanpa animasi loading (without AJAX) dari file fallback.php

Okay, silahkan berkreasi dengan AJAX πŸ™‚ Happy AJAX-ing πŸ™‚

Kategori
PHP

Export dari Database ke File Excel dalam CodeIgniter

Studi Kasus : Melakukan Export data dari Database (Mysql) ke file Excel dalam CodeIgniter

Requirements : Webserver Package, already installed. CodeIgniter.

Export data sangat dibutuhkan apabila kita mendevelop aplikasi, terutama untuk aplikasi perkantoran. Sebagian besar perkantoran masih menggunakan excel untuk memanage data mereka, karena excel memang salah satu aplikasi paling awal yang digunakan untuk memanajemen data perkantoran.

Step 1 : Konfigurasi CI

  1. Buka file config.php yang berada dalam folder system-application-config-config.php
  2. Ubah base url, sesuaikan dengan lokasi dimana folder CI-mu berada (tempat ekstrak-an tadi). Contoh : Folder CI anda berada dalam folder www/ci
    maka ubah baris $config['base_url']="http://example.com/";
    dengan
    $config['base_url'] = "http://localhost/ci/";
  3. Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostname, username, password, dan nama database. Sesuaikan dengan pengaturan mysql anda. Contoh :
    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "db_tutorial";

Step 2 : Siapkan Database

  1. Buat database dengan nama db_tutorial (via phpmyadmin)
  2. Siapkan tabel dengan nama tb_book (untuk strukturnya, lihat gambar dibawah ini)
  3. Insertkan beberapa sample data, sebagai contoh insertkan data seperti tabel dibawah ini.
  4. Ok, we’re done with database !

Step 3 : Membuat Controller

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    class Buku_con extends Controller {
    public function Buku_con() {
    parent::__construct();
    $this->load->model(‘buku_model’);//load the model
    $this->load->library(‘pagination’);
    }
    //function to get the data from tb_book
    function getBuku() {
    $data[‘title’] = ‘menampilkan isi buku’;
    $data[‘detail’] = $this->buku_model->getBuku();//call the model and save the result in $detail
    $this->load->view(‘buku_view’, $data);
    }
    //function to export to excel
    function toExcelAll() {
    $query[‘data1’] = $this->buku_model->ToExcelAll();
    $this->load->view(‘excel_view’,$query);
    }
    }
    ?>[/sourcecode]
  2. Simpan dengan nama buku_con dalam folder system-application-controllers
  3. Penjelasan :Lihat di komen script.

Step 4 : Membuat Model

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    class Buku_model extends Model {
    function Buku_model() {
    parent::Model();
    }
    function getBuku() {
    $this->db->select(‘*’);
    $this->db->from(‘tb_book’);
    $this->db->order_by(‘id’,’DESC’);
    $getData = $this->db->get();
    if($getData->num_rows() > 0)
    return $getData->result_array();
    else
    return null;
    }
    //query for get all data
    function toExcelAll() {
    $this->db->select(‘*’);
    $this->db->from(‘tb_book’);
    $this->db->order_by(‘id’,’desc’);
    $getData = $this->db->get();
    if($getData->num_rows() > 0)
    return $getData->result_array();
    else
    return null;
    }
    }
    ?>
    [/sourcecode]
  2. Simpan dalam folder system-application-models, dengan nama buku_model.php

Step 5 : Membuat View (yang menampilkan link untuk export)

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <h4>Book Data</h4>
    <?php if(count($detail) > 0) { ?>
    <table border="1">
    <tr>
    <th>ID</th>
    <th>Title</th>
    <th>Author</th>
    </tr>
    <?php
    foreach($detail as $rows) {
    echo "<tr>";
    echo "
    <td>". $rows[‘id’]."</td>
    <td>". $rows[‘title’] ."</td>
    <td>". $rows[‘author’] ."</td>
    "; } ?>
    </table>
    <?php } ?>
    <br> <br>
    <a href=’toExcelAll’><span style=’color:green;’>Export All Data</span></a>
    [/sourcecode]
  2. Simpan dalam folder system-application-views, dengan nama buku_view.php
  3. Penjelasan : $detail didapatkan dari controller, variabel ini berisi data dari tb_book (hasil dari model). Kemudian data ditampilkan dalam bentuk arrays.

Step 6 : Membuat View (view untuk menconvert ke excel)

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=exceldata.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    ?>
    <table border=’1′ width="70%">
    <tr>
    <td>ID</td>
    <td>TITLE</td>
    <td>AUTHOR</td>
    </tr>
    <?
    foreach($data1 as $item) {
    ?>
    <tr>
    <td><?=$item[‘id’]?></td>
    <td><?=$item[‘title’]?></td>
    <td><?=$item[‘author’]?></td>
    </tr>
    <? } ?>
    </table>
    [/sourcecode]
  2. Simpan dalam folder system-application-views, dengan nama excel_view.php

Step 7 : Testing Code

  1. Buka browser, pergi ke http://localhost/namaFolderCIKamu/buku_con/getBuku
  2. Anda akan melihat tampilan seperti berikut,
  3. Klik pada link Export to excell, maka browser akan otomatis mendownload file excel,
  4. Buka file excel yang telah di download, maka data dari tb_book akan ditampilkan πŸ™‚

Silahkan mencoba πŸ™‚ Happy Coding πŸ™‚

Kategori
PHP

Sistem Login simple MD5 (+Logout) dengan CodeIgniter

Studi Kasus : Membuat sistem login (+logout) dengan codeigniter

Kebutuhan : Webserver Package, already installed. CodeIgniter bundle.

Login (dan juga Logout) hampir selalu ada dalam semua sistem / aplikasi yang didevelop dengan bahasa pemrograman tertentu, dalam kasus kali ini adalah PHP dengan framework CodeIgniter. Konsep dasar dari Login adalah mencocokkan username dan password yang dimasukkan oleh user dengan daftar username+password yang tersimpan dalam database. Dengan alasan keamanan, biasanya password disimpan dalam database dengan menggunakan fungsi MD5. MD5 adalah salah satu fungsi hash (satu arah) yang cukup terkenal dalam kriptografi, biasa digunakan untuk autentifikasi user.

Sedangkan Logout memiliki konsep dasar yang cukup sederhana, yaitu dengan men-destroy session dari user yang login tersebut.

Anyway… just let trying it πŸ™‚

Step 1 : Konfigurasi CI (selalu dimulai dengan ini)

  1. Buka file config.php yang berada dalam folder system-application-config-config.php
  2. Ubah base url, sesuaikan dengan lokasi dimana folder CI-mu berada (tempat ekstrak-an tadi). Contoh : Folder CI anda berada dalam folder www/cimaka ubah baris $config['base_url']="http://example.com/";dengan
    $config['base_url'] = "http://localhost/ci/";
  3. Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostname, username, password, dan nama database. Sesuaikan dengan pengaturan mysql anda. Contoh :
    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "db_tutorial";

Step 2 : Siapkan Database

  1. Buat database dengan nama db_tutorial (via phpmyadmin)
  2. Siapkan tabel dengan nama tb_user (untuk strukturnya, lihat gambar dibawah ini)
  3. Insertkan beberapa sample data untuk user yang akan login, sebagai contoh insertkan data seperti tabel dibawah ini. INGAT : ketika memasukkan password, pilih fungsi MD5 (lihat gambar dilingkari merah)
  4. Maka hasil dari insert sample data (dengan password dikenai fungsi MD5) adalah seperti gambar dibawah,
  5. Done with database !

Step 3 : Membuat Form Login (view)

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Login with CI</title>
    <center>
    <h2> <b> Login with CI </b> <h2>
    <form action="<?=base_url();?>login/proseslogin" method="post">
    <table border="0" align="center">
    <tr>
    <td> Username</td>
    <td> <input name="username" type="text"> </td>
    </tr>
    <tr>
    <td> Password</td>
    <td> <input name="password" type="password"> </td>
    </tr>
    <tr>
    <td> &nbsp; </td>
    <td> <input name="submit" type="submit" value="login"> </td>
    </tr>
    </table>
    </form>
    <?php if(isset($error)) echo "<b><span style=’color:red;’>$error</span></b>";
    if(isset($logout)) echo "<b><span style=’color:red;’>$logout</span></b>"; ?>
    </center>
    </body></html>[/sourcecode]
  2. Simpan dengan nama login_view.php, dalam folder system-application-views

Step 4 : Membuat Controller Pemrosesan Login + Logout

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <?php
    class Login extends Controller {
    //constructor
    function login() {
    parent::Controller();
    $this->load->helper(‘url’);
    $this->load->helper(‘form’);
    $this->load->library(‘form_validation’);
    $this->load->library(‘session’);
    }
    //index for showing the login form
    function index() {
    $this->load->view(‘login_view’);
    }
    //this function will do the login process
    function proseslogin() {
    $username = $this->input->post(‘username’); //read the username that filled by the user
    $password = $this->input->post(‘password’); //read the password that filled by the user
    $passwordx = md5($password); //this is for change $password into MD5 form
    //the query is to matching the username+password user with username+password from database
    $q = $this->db->query("SELECT * FROM tb_user WHERE username=’$username’ AND userpass=’$passwordx’");
    if ($q->num_rows() == 1) {
    // if the query is TRUE, then save the username into session and load the welcome view
    $nama = $q->row()->username;
    $this->session->set_userdata(‘username’,$nama);
    $data[‘welcome’] = "Welcome $nama";
    $this->load->view(‘welcome_view’, $data);
    }
    else {
    // query error
    $data[‘error’]=’!! Wrong Username or Password !!’;
    $this->load->view(‘login_view’, $data);
    }
    }
    //to do logout process
    function logout() {
    $this->session->sess_destroy();
    $data[‘logout’] = ‘You have been logged out.’;
    $this->load->view(‘login_view’, $data);
    }
    }
    ?>
    [/sourcecode]
  2. Simpan dengan nama login.php dalam folder system-application-controllers
  3. Untuk keterangan dari script diatas, bisa dilihat dari script comment.

Step 5 : Membuat tampilan sukses login (view)

  1. Ketikkan script berikut,
    [sourcecode language=”php”]
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Login with CI</title>
    <center>
    <?php if(isset($welcome)) echo "<h2><span style=’color:red;’>$welcome</span></h2>";
    echo "<br/>";
    echo anchor("login/logout", ‘Logout’) ?>
    </center>
    </body></html>
    [/sourcecode]
  2. Simpan dengan nama welcome_view.php dalam folder system-application-views

Step 6 : Testing Code

  1. Buka browser, pergi ke http://localhost/namaFolderCIkamu/login
  2. Akan muncul tampilan seperti dibawah,
  3. Masukkan username+password yang benar, yaitu yang ada didatabase (username : june, password : june)
  4. Maka anda akan diarahkan menuju halaman sukses login,yaitu halaman welcome seperti dibawah,
  5. Klik logout untuk keluar dari halaman welcome.
  6. Sekarang masukkan username+password salah (misal username : admin, password : admin)
  7. Maka akan ditampilkan warning seperti gambar dibawah.

Okay, Happy Coding πŸ™‚

Kategori
PHP

Membuat Pagination dalam CodeIgniter

Studi Kasus : Membuat Pagination dalam CodeIgniter
Kebutuhan : Webserver Package, already installed. CodeIgniter Bundle.
Jika anda tidak familiar dengan istilah “pagination”, pagination merujuk pada link yang berguna untuk navigasi dari page ke page, seperti gambar dibawah ini,

Pagination dalam CI sangat mudah digunakan, tutorial ini akan memberikan contoh membuat pagination dalam aplikasi CI.
Okay then, prepare for a cup of tea πŸ™‚


Step 1 : Konfigurasi CI

  1. Buka file config.php yang berada dalam folder system-application-config-config.php
  2. Ubah base url, sesuaikan dengan lokasi dimana folder CI-mu berada (tempat ekstrak-an tadi). Contoh : Folder CI anda berada dalam folder www/ci
    maka ubah baris $config['base_url']="http://example.com/";
    dengan
    $config['base_url'] = "http://localhost/ci/";
  3. Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostname, username, password, dan nama database. Sesuaikan dengan pengaturan mysql anda. Contoh :
    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "db_tutorial";

Step 2 : Siapkan Database

  1. Buat database dengan nama db_tutorial (via phpmyadmin)
  2. Siapkan tabel dengan nama tb_book (untuk strukturnya, lihat gambar dibawah ini)
  3. Insertkan beberapa sample data, sebagai contoh insertkan data seperti tabel dibawah ini.
  4. Ok, we’re done with database !

Step 3 : Membuat Controller

  1. Ketikkan script berikut,
    <?php
    class Buku_con extends Controller {
    public function Buku_con()
    {
    parent::__construct();
    $this->load->model('buku_model');
    $this->load->library('pagination'); //call pagination library
    }
    function getBuku() {
    //count the total rows of tb_book
    $this->db->select('*');
    $this->db->from('tb_book');
    $getData = $this->db->get('');
    $a = $getData->num_rows();
    $config['base_url'] = base_url().'index.php/Buku_con/getBuku/'; //set the base url for pagination
    $config['total_rows'] = $a; //total rows
    $config['per_page'] = '2'; //the number of per page for pagination
    $config['uri_segment'] = 3; //see from base_url. 3 for this case
    $config['full_tag_open'] = '<p>';
    $config['full_tag_close'] = '</p>';
    $this->pagination->initialize($config); //initialize pagination
    $data['title'] = 'menampilkan isi buku';
    $data['detail'] = $this->buku_model->getBuku($config['per_page'],$this->uri->segment(3));
    $this->load->view('buku_view', $data);
    }
    }
    ?>
  2. Simpan dengan nama buku_con dalam folder system-application-controllers
  3. Penjelasan : function getBuku() akan mengambil isi dari tb_book via model. Dalam controller ini, pagination diinisialisasi dan diatur settingannya seperti pada script diatas (lihat komentar pada script untuk keterangannya).

Step 4 : Membuat Model

  1. Ketikkan script berikut,
    <?php
    class Buku_model extends Model {
    function Buku_model()
    {
    parent::Model();
    }
    function getBuku($perPage,$uri) { //to get all data in tb_book
    $this->db->select('*');
    $this->db->from('tb_book');
    $this->db->order_by('id','DESC');
    $getData = $this->db->get('', $perPage, $uri);
    if($getData->num_rows() > 0)
    return $getData->result_array();
    else
    return null;
    }
    }
    ?>
  2. Simpan dalam folder system-application-models, dengan nama buku_model.php

Step 5 : Membuat View

  1. Ketikkan script berikut,

    <h4>Book Data</h4>
    <?php if(count($detail) > 0) { ?>
    <table border="1">
    <tr>
    <th>ID</th>
    <th>Title</th>
    <th>Author</th>
    </tr>
    <?php
    foreach($detail as $rows) {
    echo "<tr>";
    echo "
    <td>". $rows['id']."</td>
    <td>". $rows['title'] ."</td>
    <td>". $rows['author'] ."</td>
    "; } ?>
    </table>
    <?php } ?>
    <div> <?php echo $this->pagination->create_links(); ?> </div>
  2. Simpan dalam folder system-application-views, dengan nama buku_view.php
  3. Penjelasan : $detail didapatkan dari controller, variabel ini berisi data dari tb_book (hasil dari model). Kemudian data ditampilkan dalam bentuk arrays.

Step 6 : Testing Code

  1. Buka browser, pergi ke http://localhost/namaFolderCIKamu/buku_con/getBuku
  2. Anda akan melihat tampilan seperti berikut,
  3. Klik pada link pagination ke halaman 2, maka anda akan melihat tampilan seperti dibawah


So easy right?
πŸ˜€ Silahkan mencoba, and… happy coding πŸ™‚

Kategori
PHP

Pemrograman Mobile Sederhana dengan PHP dan DeviceAtlas

Studi Kasus : Membuat website mobile sederhana dengan PHP dan Device Atlas Device Database

Kebutuhan : Webserver Package, already installed. DeviceAtlas Database, download here. Mungkin anda harus register dulu untuk bisa mendownload deviceatlas. Tenang saja, free kok.

Brief Overview

Dalam tutorial kali ini, kita akan berfokus pada mendeteksi device mobile apa yang sedang digunakan oleh user untuk mengakses situs mobile kita. Mungkin anda akan sering melihat ketika anda mengakses suatu situs dengan browser hape anda “Download game untuk Nokia 6610 mu” atau “Free theme for your K610i

Bagaimana handphone yang kita gunakan bisa terdeteksi? Hal ini disebut dengan Device Recognition.

Kita bisa melakukan Device Recognition dengan menggunakan API yang disediakan oleh Device Atlas.

Okay Then, Mari kita coba.

Step 1 : Instalasi DeviceAtlas dan Persiapan Folder Kerja

  1. Buat folder bernama helloMobile dalam document root.
  2. Unzip file hasil download DeviceAtlas ke dalam folder document root, sehingga struktur file adalah seperti gambar dibawah,

    DA Extract
  3. Copy folder json dari dalam folder sample, paste di folder helloMobile
  4. Struktur akhir dari folder kerja adalah seperti gambar dibawah,

    Folder Structure

Step 2 : Bekerja dengan PHP

  1. Ketikkan script berikut,
    <?php
    //file name : index.php
    //author : littleflow3r
    //Include API
    require_once 'Mobi/Mtld/DA/Api.php';
    $tree = Mobi_Mtld_DA_Api::getTreeFromFile('json/Sample.json');
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $logo = 'logo.png';
    header ("Cache-Control: max-age=200 ");
    header ("Content-Type: application/xhtml+xml ");
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"
    "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <title>My First Mobile</title>
    <link rel="stylesheet" href="style.css" type="text/css"/>
    </head>
    <body>
    <img id="logo" src="<?php echo $logo;?>" alt="logo"/>
    <?php
    try {
    $isbro = Mobi_Mtld_DA_Api::getPropertyAsBoolean($tree, $ua, 'isBrowser');
    } catch (Mobi_Mtld_Da_Exception_InvalidPropertyException $e) {
    $isbro = "Not a Desktop Browser";
    }
    try{
    $vendor = Mobi_Mtld_DA_Api::getProperty($tree, $ua, 'vendor');
    } catch (Mobi_Mtld_Da_Exception_InvalidPropertyException $e) {
    $vendor = "Unknown Vendor";
    }
    try{
    $model = Mobi_Mtld_DA_Api::getProperty($tree, $ua, 'model');
    } catch (Mobi_Mtld_Da_Exception_InvalidPropertyException $e) {
    $model = "Unknown Model";
    }
    ?>
    <h1><?php if ($isbro=='1') echo 'You"re Using Desktop';
    else { echo 'You"re Using '.$vendor.' '.$model;} ?></h1>
    </body>
    </html>
  2. Simpan dengan nama index.php dalam folder helloMobile
  3. Penjelasan :
    require_once 'Mobi/Mtld/DA/Api.php';
    $tree = Mobi_Mtld_DA_Api::getTreeFromFile('json/DeviceAtlas.json');
    $ua = $_SERVER[β€˜HTTP_USER_AGENT’];

    Code diatas adalah code untuk initialize DA Api, dengan cara meng-include-kan Class API dan menyediakan path dari JSON Database.Sedangkan code berikut adalah penggunaan device atlas untuk device recognition,
  4. $model = Mobi_Mtld_DA_Api::getProperty($tree, $ua, 'model');
    karena tidak didefinisikan type yang diambil (atau dengan kata lain untyped) maka $model akan menghasil karakteristik device dengan tipe String. Model menunjukkan model dari device yang digunakan (contoh : 6600, iPhone, N96).

    $isbro = Mobi_Mtld_DA_Api::getPropertyAsBoolean($tree, $ua, 'isBrowser');
    mendefinisikan tipe sebagai boolean, maka akan menghasilkan nilai boolean (0 atau 1). Sebagai contoh diatas adalah karakteristik dengan nama isBrowser, untuk mengidentifikasi device apakah sebuah desktop browser (1 jika True, 0 jika False)

    $vendor = Mobi_Mtld_DA_Api::getProperty($tree, $ua, 'vendor');
    $vendor akan mengembalikan nilai string dari vendor (brand) device yang digunakan.

    <?php if ($isbro=='1') echo 'You"re Using Desktop';
    else { echo 'You"re Using '.$vendor.' '.$model;} ?>

    Code diatas akan menampilkan konfirmasi β€œYou’re using Desktop” apabila nilai isBrowser adalah 1, dan selain daripada itu maka sistem akan menampilkan informasi sesuai dengan vendor dan model/tipe dari device yang digunakan.

Step 3 : Testing Code

  1. Pergi ke http://localhost/helloMobile
  2. Anda akan melihat tampilan seperti berikut,

    Result in Desktop
  3. Jika anda mengakses situs ini via handphone, misal IPhone, anda akan melihat gambar seperti dibawah,

    Result in Iphone
  4. Atau mengaksesnya via Nokia,

    Result in Nokia 7250
  5. Atau Blackberry πŸ˜€ ,

    Result in BlackBerry
  6. P.S. Untuk mobile devices diatas, saya menggunakan add-ons firefox user agent switcher, yaitu add ons firefox yang, secara gampangnya akan membuat browser firefox kita dianggap sebagai suatu devices tertentu. Add-ons ini akan sangat berguna jika anda ingin bereksperimen dengan mobileprogramming. Atau jika tidak, anda dapat menggunakan mobile emulator.

Okay, selamat mencoba. Happy Coding πŸ™‚ If there’s any question, feel free to comment πŸ™‚

Kategori
PHP

Mendapatkan Feed Situs lain Via RSS Reader SimplePie

Studi Kasus : Mendapatkan Feed situs lain dengan RSS Reader SimplePie, menampilkannya, dan menyimpannya ke dalam database.
Kebutuhan : SimplePie library, download here. Webserver Packages, already installed.

RSS (Really Simple Syndication) adalah format berbasis XML yang digunakan untuk sharing dan delivering konten dari web yang pada umumnya diupdate secara regular. Sedangkan istilah ‘feed‘ mengacu pada output dari RSS yang dapat dibaca dengan RSS Feed Reader (pembaca rss feed). SimplePie merupakan RSS Feed Reader/Parser yang cukup terkenal (dan paling saya sukai tentunya), cara kerja dari RSS Feed Parser semacam ini adalah dengan membaca format XML yang terdapat dalam RSS Feed yang kita tentukan sendiri.

Ok, langsung praktik saja.

Step 1 : Persiapkan Database

  1. Buat database dengan nama db_tutorial
  2. Siapkan tabel dengan nama tb_rss, dengan struktur tabel seperti gambar dibawah ini.
    Table Structure
  3. Done with the database!

Step 2 : Persiapkan Folder Kerja

  1. Buat folder baru di document root anda dengan nama folder rss
  2. Buat sebuah folder didalam folder rss dengan nama cache (…/rss/cache)
  3. Copy file SimplePie.inc (hasil download – yang berada dalam file ZIP simplePie) ke dalam folder rss.

Step 3 : Membuat Koneksi ke database

  1. Buat script untuk melakukan koneksi ke database, yaitu dengan ketikkan script dibawah ini,
    <?php
    //file name : connect.php
    //author : littleflow3r
    $host = "localhost";
    $user = "root"; //sesuaikan dengan setting mysql
    $pass = ""; //
    sesuaikan dengan setting mysql
    $dbName = "db_tutorial";
    mysql_connect($host, $user, $pass);
    mysql_select_db($dbName)
    or die ("Connect Failed !! : ".mysql_error());
    ?>
  2. Simpan dalam folder rss dengan nama connect.php

Step 4 : Inisialisasi SimplePie

  1. Ketikkan script dibawah ini,
    <?php
    //file name : initRSS.php
    //author : littleflow3r
    require_once 'simplepie.inc';
    //initialize simplePie
    $feed = new SimplePie('http://localhost/websmsmasking/feed/rss');
    $feed->set_cache_location('../rss/cache/');
    $feed->set_feed_url('http://localhost/websmsmasking/feed/rss');
    $feed->init();
    $feed->handle_content_type();
    ?>
  2. Simpan dalam folder rss dengan nama initRSS.php
  3. Keterangan : Cara kerja dari SimplePie RSS Parser adalah dengan membaca format XML yang terdapat dalam RSS Feed. Code diatas digunakan untuk menginisialisasi SimplePie, dengan memasukkan alamat dari rss kita [baris 06 dan baris 08]. Sebagai contoh, saya memakai sample alamat rss adalah localhost/websmsmasking/feed/rss –> feed dari aplikasi lokal saya. Anda bisa mengganti alamat ini dengan alamat rssfeed yang anda inginkan, namun untuk mendapatkan feed dari situs online, anda juga harus menjalankan program secara online (terhubung ke internet, karena simplepie akan mengakses alamat dari feed tersebut secara langsung.)

Step 5 : Menampilkan Feed

  1. Ketikkan script berikut,
    <?php
    //file name : rss.php
    //author : littleflow3r
    include 'initRSS.php';
    include 'connect.php';
    //get the feed and show it
    echo "<h1> RSS News Update </h1>";
    foreach ($feed->get_items(0,4) as $item):
    $permalink = $item->get_permalink();
    $title = $item->get_title();
    $desc = $item->get_description();
    echo '<a href="'.$permalink.' ">'; echo $title; echo '</a>';
    echo "<br>";
    echo $desc;
    echo "<br>"; echo "<br>";
    //insert to database
    $q = "INSERT into tb_rss (link, title, description) VALUES('$permalink','$title','$desc')";
    $result = mysql_query($q);
    endforeach;
    ?>
  2. Simpan dalam folder rss dengan nama rss.php
  3. Keterangan : Baris 08 menunjukkan looping dengan foreach sejumlah feed yang didapat dari alamat RSS yang telah ditentukan, dengan menggunakan fungsi get_items(0,4), maksudnya adalah mengambil 4 Feed items dimulai dari record ke 0.
    Baris 09 adalah menyimpan permalink dari setiap items yang didapat dalam variabel $permalink
    Baris 10 adalah mendapatkan judul feed dengan fungsi get_title kemudian disimpan dalam $title.
    Baris 11 adalah mendapatkan deskripsi dari feed dengan fungsi get_desc kemudian disimpan dalam $desc.

Step 6 : Testing Code

  1. Buka browser, jalankan http://localhost/rss/rss.php
  2. Anda akan melihat feed dari alamat rss yang anda masukkan tadi telah tertampil seperti gambar dibawah,
    Result
  3. Cek database anda, lihat bahwa tb_rss telah terisi dengan content rss dari alamat feed anda.
    Tb_RSS

Okay, Done. Happy Trying! Happy Coding πŸ™‚

Kategori
PHP

Penggunaan Fungsi Date / Time pada PHP

Studi Kasus : Menggunakan fungsi Date/Time pada PHP
Kebutuhan : Webserver Package (XAMPP, EasyPHP, APPServ), already installed.

Dalam mendevelop aplikasi PHP, fungsi date akan sering sekali digunakan. Contoh sederhananya, kita akan menggunakan fungsi date untuk menghitung usia.

Berikut ini adalah beberapa contoh penggunaan fungsi date/time yang sering digunakan dalam develop aplikasi dengan php.

1. Menampilkan Hari Ini ( Current Date ) dengan berbagai format

Asumsi : hari ini adalah Kamis, 25 November 2010

  • Format : 2010-11-25
    Codenya adalah : date("Y-m-d");
  • Format : November 25, 2010, 8:17 PM
    Code : date("F j, Y, g:i a");

Untuk lebih lengkapnya tentang output format dari date, lihat pada tabel berikut (klik pada tabel untuk melihat tabel dengan lebih jelas) :

Output Date Format

2. Penghitungan Rentang/Selisih Tanggal

Script:

<?php
function datediff($tgl1, $tgl2){
$tgl1 = strtotime($tgl1);
$tgl2 = strtotime($tgl2);
$diff_secs = abs($tgl1 - $tgl2);
$base_year = min(date("Y", $tgl1), date("Y", $tgl2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
return array( "years" => date("Y", $diff) - $base_year, "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1, "months" => date("n", $diff) - 1, "days_total" => floor($diff_secs / (3600 * 24)), "days" => date("j", $diff) - 1, "hours_total" => floor($diff_secs / 3600), "hours" => date("G", $diff), "minutes_total" => floor($diff_secs / 60), "minutes" => (int) date("i", $diff), "seconds_total" => $diff_secs, "seconds" => (int) date("s", $diff) );
}
$tgl1 = '1989-06-06';
$tgl2 = date("Y/m/d/ h:m:s");
$a = datediff($tgl1, $tgl2);
echo 'tanggal 1 = '.$tgl1; echo '<br>';
echo 'tanggal 2 = '.$tgl2; echo '<br>';
echo 'Selisih = '.$a[years].' tahun '.$a[months].' bulan '.$a[days].' hari '.$a[hours].' jam '.$a[minutes].' menit '.$a[seconds].' detik';
?>

Script diatas akan menghasilkan contoh output seperti gambar dibawah ini :

Difference Between 2 Date
3. Penambahan Tanggal

Pda script dibawah kita akan mencoba menambahkan hari, bulan, dan tahun pada current date ( tanggal sekarang ) sehingga menghasilkan output berupa tanggal tertentu hasil penambahan.

Code :

<?php
$todayDate = date("Y-m-d");// current date
echo "Today: ".$todayDate."<br>";
$now = strtotime(date("Y-m-d"));
//Add one day to today
$date = date('Y-m-j', strtotime('+1 day', $now));
echo "After adding 1 day = ".$date."<br>";
$addMonth = 5;
//Add variabel addMonth to today
$date2 = date('Y-m-j', strtotime('+'.$addMonth.' month', $now));
echo "After adding $addMonth month = ".$date2."<br>";
//Add 6 year to today
$date3 = date('Y-m-j', strtotime('+6 year', $now));
echo "After adding 6 year = ".$date3."<br>";
?>

Output dari script diatas adalah seperti tertampil pada gambar dibawah :

Date Adding

4. Mengetahui Apakah hari ini adalah Hari Terakhir Bulan ini

Script :

<?php
// If today is the last day of the month, do echo
if(date('j') == date('t')) {
echo 'Today is the Last Day of this month';
}
else echo 'Today is NOT the Last Day of this month';
?>

Output :

Last Date ?

5. Menghitung sisa hari dalam Tahun ini

Script :

<?php
$today = getdate();
$yday = ($today['yday']);
$leap = date('L');
$tdl = $leap + 365;
$dliy = $tdl - $yday;
echo "Dari hari ini ".date('Y-m-d ').", Kita masih memiliki sisa " . $dliy . " hari dalam tahun ini.";
?>

Output :

Day Remain in Year

Semoga contoh – contoh penggunaan fungsi date di atas akan berguna bagi teman – teman. Saya sendiri sering menggunakannya, tentu saja.

Okay, Happy Coding πŸ™‚

Kategori
PHP

Validasi Form dalam CodeIgniter

Studi Kasus : Membuat form beserta validasinya dengan CodeIgniter.

Kebutuhan Sistem : CodeIgniter PHP Framework, bisa didownload di sini. Dan Webserver Package.

Kebutuhan User : Kemampuan PHP, kemampuan Mysql, Kemampuan HTML, dan (sedikit saja cukuplah) kemampuan CodeIgniter.

Dalam men-develop sebuah aplikasi berbasis web, mau tidak mau pasti kita akan sering menggunakan form. Form sangat berguna untuk membuat antarmuka penginputan data ke dalam database. Untuk mem-prevent agar data input yang masuk ke database benar, atau sesuai dengan yang diinginkan, maka diperlukan suatu validasi. Pada bahasa pemrograman PHP, pada umumnya validasi dibuat dengan menggunakan fungsi ereg, dengan memanfaatkan regular expression (regex). Dan percayalah, kalau regex ini sangat rumit. Hahahah

Dengan menggunakan CodeIgniter, validasi jauh lebih mudah dibuat apabila dibandingkan dengan php biasa.

Ohya, ini adalah sebuah validasi server-side. Jelasnya, validasi dilakukan dari sisi server sehingga secara otomatis sistem validasi ini akan lebih aman dibandingkan dengan client-side validation (biasanya dibuat dengan javascript)

Okay, langsung praktikum…

Step 1 : Konfigurasi CI

  1. Buka file config.php yang berada dalam folder system-application-config-config.php
  2. Ubah base url, sesuaikan dengan lokasi dimana folder CI-mu berada (tempat ekstrak-an tadi). Contoh : Folder CI anda berada dalam folder www/ci

    maka ubah baris $config['base_url']="http://example.com/";
    dengan
    $config['base_url'] = "http://localhost/ci/";

  3. Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostname, username, password, dan nama database. Sesuaikan dengan pengaturan mysql anda. Contoh :

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

Step 2 : Siapkan database

  1. Buat database dengan nama db_code (via phpmyadmin)
  2. Siapkan tabel dengan nama tb_student (untuk strukturnya, lihat gambar dibawah ini)
    tb_student's structure
  3. Ok, we’re done with database !

Step 3 : Membuat Controller

  1. Ketikkan script dibawah ini dengan teks editor kesukaan anda,

    <?php
    class Student extends Controller {function Student(){
    parent::Controller();
    $this->load->library(array('table','validation'));
    $this->load->helper('url');
    }
    function index() {
    $this->_set_fields();
    $data['title'] = 'Add New Student';
    $data['message'] = '';
    $data['action'] = site_url('student/addStudent');
    $this->load->view('addStudent_view', $data);
    }
    function addStudent(){
    $data1['title'] = 'Add New Student';
    $data1['action'] = site_url('student/addStudent');
    $this->_set_fields();
    $this->_set_rules();
    // menjalankan validasi
    if ($this->validation->run() == FALSE){
    $data['message'] = '';
    }else{
    // menyimpan data
    $data= array('id' => $this->input->post('id'),
    'nama' => $this->input->post('nama'),
    'email' => $this->input->post('email')
    );
    $this->db->insert('tb_student', $data);
    $data1['message'] = 'Sukses';
    }
    // load view
    $this->load->view('addStudent_view', $data1);
    }
    function _set_fields(){
    $fields['id'] = 'id';
    $fields['nama'] = 'nama';
    $fields['email'] = 'email';
    $this->validation->set_fields($fields);
    }
    // berikut adalah rule-rule untuk validasi
    function _set_rules(){
    $rules['id'] = 'trim|required|numeric';
    $rules['nama'] = 'trim|required';
    $rules['email'] = 'trim|required|valid_email';
    $this->validation->set_rules($rules);
    $this->validation->set_message('required', '* harus diisi');
    $this->validation->set_message('numeric', '* hanya boleh diisi dengan angka');
    $this->validation->set_message('valid_email', '* email tidak valid');
    $this->validation->set_error_delimiters('<p>', '</p>');
    }
    }
    ?>

  2. Simpan dalam folder system-application-controllers, dengan nama student.php

Step 4 : Membuat View

  1. Ketikkan script dibawah ini,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Form Validation CI</title>
    </head>
    <body>
    <h1><?php echo $title; ?></h1>
    <?php if (isset($message)) echo $message; ?>
    <form method="post" action="<?php echo $action; ?>">
    <table>
    <tr>
    <td valign="top">ID*</td>
    <td><input type="text" name="id" value="<?php echo $this->validation->id; ?>"/>
    <span style="color:red;"> <?php echo $this->validation->id_error; ?></span></td>
    </tr>
    <tr>
    <td valign="top">Nama<span style="color:red;">*</span></td>
    <td><input type="text" name="nama" value="<?php echo $this->validation->nama; ?>"/>
    <span style="color:red;"> <?php echo $this->validation->nama_error; ?></span></td>
    </tr>
    <tr>
    <td valign="top">Email<span style="color:red;">*</span></td>
    <td><input type="text" name="email" value="<?php echo $this->validation->email; ?>"/>
    <span style="color:red;"> <?php echo $this->validation->email_error; ?></span></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type="submit" value="Save"/></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

  2. Simpan dalam folder system-application-views, dengan nama addStudent_view.php

Step 5 : Testing Code

  1. Buka browser, pergi ke http://localhost/namaFolderCIKamu/student
  2. Anda akan melihat tampilan seperti berikut,
    Input Form
  3. Coba isi form dengan input salah (contoh, ID : AAA; Nama : (kosongi saja); Email : AAA)
    Wrong Input (example)
  4. Pilih Save. Maka anda akan melihat eror ditampilkan seperti gambar dibawah,
    Validation Confirmation
  5. Sekarang coba dengan isian benar, seperti pada gambar dibawah, lalu Save. Anda akan melihat konfirmasi sukses πŸ˜€ Cek juga database anda, seharusnya anda akan melihat data yang baru saja anda masukkan di dalam tb_student πŸ˜€
    Correct Input (example)
    Success Confirmation

p.s. Mungkin akan ada yang tanya, ini coding CI yang katanya MVC kok gak pakai model?

Jawabannya adalah : dalam CI, kita tidak selalu diharuskan memakai model. Menggunakan code seperti $this->db->insert('tb_student', $data); adalah sudah cukup, sesuai dengan tingkat kerumitan code anda.

Okay, (always) Happy Coding πŸ˜€

Kategori
PHP

Login Multi-User dengan PHP dan Mysql

Studi Kasus : Membuat Sistem Login Multi-User dengan PHP dan Mysql.
Kebutuhan : Paket Webserver (AppServ, XAMPP, EasyPHP, dll)

Step 1 : Menyiapkan Database

  1. Siapkan database dengan nama db_multiuser.
  2. Buat tabel dengan nama tb_user, buat dengan field – field seperti gambar berikut,

    Struktur Tabel
  3. Insertkan beberapa sample data untuk tb_user.
    INSERT INTO `db_multiuser`.`tb_user` (`id`, `username`, `password`, `tipe`) VALUES (NULL, 'ani', 'ani','admin'), (NULL, 'budi', 'budi', 'operator');

Step 2 :Membuat file konfigurasi

  1. Ketikkan script berikut,
    <?php
    $host = "localhost";
    $user = "root"; //sesuaikan dengan user mysql anda
    $pass = ""; //sesuaikan dengan password mysql anda
    $dbName = "db_multiuser";
    mysql_connect($host, $user, $pass);
    mysql_select_db($dbName)
    or die ("Koneksi Gagal : ".mysql_error());
    ?>
  2. Simpan dengan nama connect.php
  3. Penjelasan : connect.php merupakan file konfigurasi yang akan menghubungkan sistem login yang kita buat dengan mysql database.

Step 3 :Membuat form login

  1. Ketikkan script berikut,
    [sourcecode]&lt;center&gt;
    &lt;h2&gt; &lt;b&gt; Login Page &lt;/b&gt; &lt;h2&gt;&lt;form method="post" action="proses.php"&gt;&lt;table border="0" align="center" cellpadding="5" cellspacing="8"&gt;&lt;tr bgcolor="orange"&gt;
    &lt;td&gt; UserName Anda ! &lt;/td&gt;
    &lt;td&gt; &lt;input name="username" type="text"&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr bgcolor="orange"&gt;
    &lt;td&gt; Password ! &lt;/td&gt;
    &lt;td&gt; &lt;input name="password" type="password"&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
    &lt;td&gt; &amp;nbsp; &lt;/td&gt;
    &lt;td&gt; &lt;input name="submit" type="submit" value="login"&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/table&gt;
    &lt;/form&gt;
    &lt;/center&gt; [/sourcecode]
  2. Simpan dengan nama formlogin.php
  3. Script ini akan menampilkan form login untuk isian username dan password. Perhatikan bagian action="proses.php". Ini menunjukkan bahwa isian dari username dan password akan diproses (diberi action) oleh file proses.php. File ini akan kita buat pada step berikutnya.

Step 4 :Membuat pemrosesan login

  1. Ketikkan script berikut,
    <?php
    session_start(); //memulai session
    include "connect.php";//mengambil isian username dan password dari form
    $username = $_POST['username'];
    $password = $_POST['password'];
    //query untuk mengambil data user dari database sesuai dengan username inputan form
    $q = "SELECT * FROM tb_user WHERE username = '$username' ";
    $result = mysql_query($q);
    $data = mysql_fetch_array($result);
    //cek kesesuaian password masukan dengan database
    if ($password == $data['password']) {
    //menyimpan tipe user dan username dalam session
    $_SESSION['tipe'] = $data['tipe'];
    $_SESSION['username'] = $data['username'];
    include "menu.php";
    }
    //jika password tidak sesuai
    else {
    $warning = "Username / Password Salah";
    echo $warning;
    }
    ?>
  2. Simpan dengan nama proses.php

Step 5 : Membuat tampilan khusus user

  1. Ketikkan script berikut,
    <?php
    session_start();
    include "connect.php";
    echo "<center>";
    echo "<h3> Menu </h3>";
    if ($_SESSION['tipe'] == "admin") {
    echo " Anda Login sebagai Admin";
    }
    else if ($_SESSION['tipe'] == "user") {
    echo " Anda Login sebagai User";
    }
    ?>
  2. Simpan dengan nama menu.php
  3. Penjelasan : Script ini akan menampilkan informasi sesuai dengan siapa user yang login.

Step 6 : Menjalankan Sistem Login

  1. Pergi ke http://localhost/
  2. Pilih file formlogin.php untuk mulai menjalankan aplikasi. Anda akan melihat tampilan seperti berikut,

    Login Page
  3. Masukkan username = ani; password = ani
  4. Maka sistem akan menampilkan keterangan seperti berikut,

    Admin Login
  5. Jika anda login sebagai operator (username : budi; password : budi), maka akan muncul informasi seperti gambar dibawah,

    Operator Login

NB. Simpan semua file php dari step 2 – step 5 ke dalam SATU folder yang SAMA.

Okay, happy coding (: