Tips Php : Mendeteksi Browser Mobile dengan PHP

Posted by love your self first On Sabtu, 08 Desember 2012 5 komentar
Kali ini saya akan share bagaimana cara supaya aplikasi web kita dapat mendeteksi secara otomatis apakah browser yang digunakan berbasis mobile atau bukan. Pada dasarnya aplikasi web dibuat untuk browser pada PC, namun ternyata seiring perkembangan teknologi semakin ke sini semua aplikasi telah dibuat mobile, yaitu berada di atas platform yang dapat dibawa ke mana-mana baik aplikasi desktop/mobile maupun aplikasi berbasis web. Oleh karena itu, jika kita membuat sebuah aplikasi web kita harus memperhatikan target user, apakah user menggunakan perangkat mobile atau bukan, PC atau bukan. Dengan mengetahui target, kita dapat membuat layout dan kebutuhan fitur yang sesuai dengan perangkat tersebut. Misalnya saja Facebook, Facebook versi desktop dibuat full fitur, sedangkan Facebook versi mobile dibuat minim akan fitur. Atau contoh lain adalah detik.com, kompas.com, dan situs berita lainnya yang menggunakan versi mobile akan dibuat berbeda dengan versi aslinya (desktop). Faktanya, banyak web yang dibuat lebih simpel pada mobile dibandingkan desktop. Untuk itu, maka kita harus menambahkan kode untuk mengecek apakah browser yang user pakai itu perangkat mobile atau bukan.
Ok kita langsung saja ke tutorial. ;)
Function yang akan kita gunakan untuk deteksi metadata/information dari browser yang dipakai adalah function get_browser(), lengkapnya adalah:
mixed get_browser ([ string $user_agent [, bool $return_array = false ]] )
Nilai yang dikembalikan adalah sebuah objek yang berisi properti2 berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
stdClass Object
{
    [browser_name_regex] => ^mozilla/5\.0 (x11; .*; .*linux.*; .*; rv:1\.9\..*) gecko/.* firefox/3\.5.*$
    [browser_name_pattern] => Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.*) Gecko/* Firefox/3.5*
    [parent] => Firefox 3.5
    [platform] => Linux
    [browser] => Firefox
    [version] => 3.5
    [majorver] => 3
    [minorver] => 5
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [javaapplets] => 1
    [javascript] => 1
    [cssversion] => 3
    [supportscss] => 1
    [alpha] =>
    [beta] =>
    [win16] =>
    [win32] =>
    [win64] =>
    [backgroundsounds] =>
    [cdf] =>
    [vbscript] =>
    [activexcontrols] =>
    [isbanned] =>
    [ismobiledevice] =>
    [issyndicationreader] =>
    [crawler] =>
    [aol] =>
    [aolversion] => 0
}
Namun, function tersebut dapat mengembalikan tipe array jika kita mengisi true pada parameter kedua ($return_array).
Untuk cara pakainya yaitu:
1
2
3
4
<?php
$browser = get_browser(null, true);
print_r($browser);
?>
Jika kita memakai Firefox sebagai browser, maka browser akan menampilkan array sebagai berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Array
{
    [browser_name_regex] => ^mozilla/5\.0 (x11; .*; .*linux.*; .*; rv:1\.9\..*) gecko/.* firefox/3\.5.*$
    [browser_name_pattern] => Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.*) Gecko/* Firefox/3.5*
    [parent] => Firefox 3.5
    [platform] => Linux
    [browser] => Firefox
    [version] => 3.5
    [majorver] => 3
    [minorver] => 5
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [javaapplets] => 1
    [javascript] => 1
    [cssversion] => 3
    [supportscss] => 1
    [alpha] =>
    [beta] =>
    [win16] =>
    [win32] =>
    [win64] =>
    [backgroundsounds] =>
    [cdf] =>
    [vbscript] =>
    [activexcontrols] =>
    [isbanned] =>
    [ismobiledevice] =>
    [issyndicationreader] =>
    [crawler] =>
    [aol] =>
    [aolversion] => 0
}
Sekarang, untuk mendeteksi apakah browser yang digunakan adalah perangkat mobile atau bukan maka kita harus membuat suatu kondisi dengan if, kodenya sebagai berikut:
1
2
3
4
5
6
7
8
9
10
<?php
 
$browser = get_browser(null, true);
if ($browser['ismobiledevice'])
{
    //isi kode di sini jika mobile
} else
{
    //isi kode di sini jika desktop
}
Sebagai contoh, kita menginginkan aplikasi mengucapkan ucapan selamat datang pada website kita, lihat kode berikut:
1
2
3
4
5
6
<?php $browser = get_browser(null, true); ?>
<?php if ($browser['ismobiledevice']): ?>
    <h2>Selamat Datang di Jagocoding Versi Mobile</h2>
<?php else: ?>
    <h2>Selamat Datang di Jagocoding Versi Desktop</h2>
<?php endif; ?>
Contoh lain, kita sering melihat ketika kita membuka pada browser handphone maka URL biasanya dialihkan ke subdomain m.namasitus.com atau www.namasitus.com/m. Untuk membuat seperti itu, caranya simpel, kita gunakan redirect dengan menggunakan function header() bawaan dari PHP.
1
2
3
4
5
<?php
 
$browser = get_browser(null, true);
if ($browser['ismobiledevice'])
    header('Location: http://m.namasitus.com/'); //atau header('Location: http://www.namasitus.com/m'); terserah :D
Tutorial selesai, singkat ya? hehe..
READ MORE

Tips Php : Php yang Baik dan Benar

Posted by love your self first On Minggu, 02 Desember 2012 2 komentar

Penulisan kode yang baik akan sangat berguna jika program buatan kita akan diteruskan oleh programmer lain. Dengan kode yang baik dan rapi, kode dapat lebih enak dilihat dan orang lain (yang mau meneruskan pengetikan isi program) akan lebih mengerti dan memahami isi program. Jika kode dibuat acak-acakan alias ‘seenaknya saja’, maka orang yang melihat pun akan cenderung malas untuk melihat isi program dan bahkan tidak memahami struktur program yang dibuat.
OK, berikut ini adalah beberapa aturan bagaimana cara pengetikan kode program pada PHP yang mana peraturan ini sudah terstandarisasi, jadi semua orang akan sepakat untuk menuruti aturan ini. Catatan: setiap aturan pada setiap framework mungkin berbeda

Penamaan Class

SALAH:
class superclass
BENAR:
class Super_class
class SuperClass
CONTOH:
class Super_class {
 
 function __construct()
 {
 
 }
}
class SuperClass {
 
 function __construct()
 {
 
 }
}

Penamaan Function

SALAH:
function fileproperties()  // tidak deskriptif, membutuhkan underscore
function fileProperties()  // tidak deskriptif dan menggunakan CamelCase
function getfileproperties()  // Lebih baik!  Tetapi masih menggunakan underscore
function getFileProperties()  // menggunakan CamelCase
function get_the_file_properties_from_the_file() // Terlalu banyak kata (njelimet)  
:P
BENAR:
function get_file_properties() // Deskriptif, ada pemisahan dengan underscore, dan huruf kecil semua

Penamaan Variable

SALAH:
$j = 'foo';  // satu huruf lebih baik digunakan untuk variable yang digunakan pada pengulangan
$Str   // ada huruf yang kapital, ini bukan objek!
$bufferedText  // menggunakan CamelCasing, dan dapat dipendekkan tanpa menghilangkan maksud semantik
$groupid  // dua kata tapi tidak memakai underscore, tidak deskriptif
$name_of_last_city_used // terlalu njelimet lagi  ???
BENAR:
for ($j = 0; $j < 10; $j++)
$str
$buffer
$group_id
$last_city

Constants

SALAH:
myConstant // tidak ada underscore dan tidak full kapital
N  // Jangan ada constant yang menggunakan satu karakter
S_C_VER  // tidak deskriptif
BENAR:
MY_CONSTANT
NEWLINE
SUPER_CLASS_VERSION

TRUE, FALSE, dan NULL

Harus menggunakan full karakter kapital (uppercase)
SALAH:
if ($foo == true)
$bar = false;
function foo($bar = null)
BENAR:
if ($foo == TRUE)
$bar = FALSE;
function foo($bar = NULL)

Operator Logika

SALAH:
if ($foo || $bar)
if ($foo AND $bar)  // OK tapi tidak direkomendasikan untuk IDE yang mengandung syntax highlighting
if (!$foo)
if (! is_array($foo))
BENAR:
if ($foo OR $bar)
if ($foo && $bar) // recommended
if ( ! $foo)
if ( ! is_array($foo))

Whitespace

Jangan ada ‘spasi’ sebelum tag
SALAH:
 
  
<?php
 // ...ada whitespace sebelum php dibuat
?>
BENAR:
<?php
 // ...Tidak ada whitespace sebelum php dibuat
?>

Code Indenting

Tabulasi pada penulisan kode program
KURANG BAIK:
function foo($bar) {
 // ...
}
 
foreach ($arr as $key => $val) {
 // ...
}
 
if ($foo == $bar) {
 // ...
} else {
 // ...
}
 
for ($i = 0; $i < 10; $i++)
 {
 for ($j = 0; $j < 10; $j++)
  {
  // ...
  }
 }
BAIK:
function foo($bar)
{
 // ...
}
 
foreach ($arr as $key => $val)
{
 // ...
}
 
if ($foo == $bar)
{
 // ...
}
else
{
 // ...
}
 
for ($i = 0; $i < 10; $i++)
{
 for ($j = 0; $j < 10; $j++)
 {
  // ...
 }
}

Bracket dan Parenthetic Spacing

SALAH:
$arr< $foo > = 'foo'; //ada spasi di dalam bracket
BENAR:
$arr<$foo> = 'foo'; // tidak ada spasi di dalam bracket
SALAH:
function foo ( $bar )
{
 
}
BENAR:
function foo($bar) // tidak ada spasi di dalam parameter
{
 
}
SALAH:
foreach( $query->result() as $row )
BENAR:
foreach ($query->result() as $row)

Private dan Public Method

convert_text()  // public method
_convert_text()  // private method

Short Open Tags

SALAH:
<? echo $foo; ?>
 
<?=$foo?>
BENAR:
<?php echo $foo; ?>

Satu Statemen pada Satu Baris

SALAH:
$foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);
BENAR:
$foo = 'this';
$bar = 'that';
$bat = str_replace($foo, $bar, $bag);

Strings

SALAH:
"My String"     // tidak ada variable yang diparsing, lebih baik satu tanda kutip
"My string $foo"    // membutuhkan kurung kurawal
'SELECT foo FROM bar WHERE baz = \'bag\'' // jelek
CORRECT:
'My String'
"My string {$foo}"
"SELECT foo FROM bar WHERE baz = 'bag'"

Query SQL

SALAH:
$query = mysql_query("select foo, bar, baz, foofoo, foobar as raboof, foobaz from exp_pre_email_addresses where foo != 'oof' and baz != 'zab' order by foobaz limit 5, 100"); //susah dibaca
BENAR:
$query = mysql_query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz
    FROM exp_pre_email_addresses
    WHERE foo != 'oof'
    AND baz != 'zab'
    ORDER BY foobaz
    LIMIT 5, 100"); //lebih mudah dibaca
READ MORE

Tips php : Script Php membuat Report Format Excel

Posted by love your self first On Jumat, 09 November 2012 0 komentar
Satu lagi tutorial persembahan dari blog.rosihanari.net yang mudah-mudahan berguna bagi para web programmer. Tutorial ini adalah bagaimana membuat script PHP untuk menghasilkan file report dalam format MS. Excel.
Apa menariknya report dalam format MS. Excel? dengan report berformat MS. Excel memungkinkan untuk dilakukan pengolahan lagi pada data report tersebut. Sebagai contoh, report tentang data nilai mahasiswa dan status kelulusannya pada matakuliah tertentu. Apabila report yang dihasilkan berupa MS. Excel, maka memungkinkan untuk pengolahan lebih lanjut terhadap report tersebut menggunakan perintah-perintah dalam MS. Excel, seperti menghitung jumlah mahasiswa yang lulus maupun tidak lulus, bahkan dalam bentuk prosentasenya.

Nah… kita akan coba membuat script PHP untuk menghasilkan report dalam format MS. Excel ini, dengan mengambil studi kasus lagi-lagi tentang nilai matakuliah mahasiswa. Report yang akan dihasilkan berupa daftar mahasiswa (NIM dan Nama) yang mengambil matakuliah, nilai yang diperoleh, serta status kelulusannya (LULUS/TIDAK LULUS). Untuk menentukan kelulusan, misalnya diambil policy jika nilainya 60 ke atas maka LULUS, jika kurang dari 60 maka TIDAK LULUS. Untuk data mentah dari report ini diambil dari database MySQL.
OK… terlebih dahulu kita siapkan tabel dan recordnya.



CREATE TABLE nilaimhs(
  nim varchar(
  namaMhs varchar(30),
  nilai int(11),
  PRIMARY KEY(nim)
)

INSERT INTO nilaimhs VALUES
('M0197001', 'Faza Fauzan Kh.', 80),
('M0197002', 'Dwi Amalia Fitriani', 75),
('M0197003', 'Rosihan Ari Yuana', 45),
('M0197004', 'Nada Hasanah', 83),
('M0197005', 'Muh. Ahsani Taqwim', 90);

<?php

// nama file

$namaFile = "report.xls";

// Function penanda awal file (Begin Of File) Excel

function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

// Function penanda akhir file (End Of File) Excel

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

// Function untuk menulis data (angka) ke cell excel

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

// Function untuk menulis data (text) ke cell excel

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

// header file excel

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,
        pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

// header untuk nama file
header("Content-Disposition: attachment;
        filename=".$namaFile."");

header("Content-Transfer-Encoding: binary ");

// memanggil function penanda awal file excel
xlsBOF();

// ------ membuat kolom pada excel --- //

// mengisi pada cell A1 (baris ke-0, kolom ke-0)
xlsWriteLabel(0,0,"NO");               

// mengisi pada cell A2 (baris ke-0, kolom ke-1)
xlsWriteLabel(0,1,"NIM");              

// mengisi pada cell A3 (baris ke-0, kolom ke-2)
xlsWriteLabel(0,2,"NAMA MAHASISWA");

// mengisi pada cell A4 (baris ke-0, kolom ke-3)
xlsWriteLabel(0,3,"NILAI");   

// mengisi pada cell A5 (baris ke-0, kolom ke-4)
xlsWriteLabel(0,4,"STATUS KELULUSAN"); 

// -------- menampilkan data --------- //

// koneksi ke mysql

mysql_connect("localhost", "root", "root");
mysql_select_db("data");

// query menampilkan semua data

$query = "SELECT * FROM nilaimhs";
$hasil = mysql_query($query);

// nilai awal untuk baris cell
$noBarisCell = 1;

// nilai awal untuk nomor urut data
$noData = 1;

while ($data = mysql_fetch_array($hasil))
{
   // menampilkan no. urut data
   xlsWriteNumber($noBarisCell,0,$noData);

   // menampilkan data nim
   xlsWriteLabel($noBarisCell,1,$data['nim']);

   // menampilkan data nama mahasiswa
   xlsWriteLabel($noBarisCell,2,$data['namaMhs']);

   // menampilkan data nilai
   xlsWriteNumber($noBarisCell,3,$data['nilai']);

   // menentukan status kelulusan
   if ($data['nilai'] >= 60) $status = "LULUS";
   else $status = "TIDAK LULUS";

   // menampilkan status kelulusan
   xlsWriteLabel($noBarisCell,4,$status);

   // increment untuk no. baris cell dan no. urut data
   $noBarisCell++;
   $noData++;
}

// memanggil function penanda akhir file excel
xlsEOF();
exit();

?>
Apabila script di atas dijalankan pada browser, maka browser akan menampilkan kotak dialog untuk mendownload file MS. Excel sebagai outputnya. Gambar berikut ini adalah screen shot isi file excel yang telah didownload.

READ MORE

Tips belajar Php : bermain-dengan-code-igniter-full-instalasi-hingga-akses-databas

Posted by love your self first On Minggu, 21 Oktober 2012 0 komentar

CodeIgniter
Studi Kasus : Instalasi sampai Akses Database dengan Code Igniter
Kebutuhan : Paket Webserver (AppServXAMPPEasyPHP, dll) & Code Igniter
Codeigniter (CI) merupakan sebuah PHP framework, katakanlah, untuk orang yang ingin membangun website dengan menggunakan PHP. Dengan menggunakan arsitektur model-view-controller yang memisahkan antara bagian logic dan tampilan dari program, CI cukup “menyenangkan” untuk digunakan. Tidak sulit. Cukup siapkan 2 gelas kopi panas untuk mulai mempelajarinya :)
Step 1 : Instalasi
  1. Ekstrak bundle CodeIgniter yang telah anda download dalam direktori root web server anda.
  2. Anda akan melihat banyak folder…. oke, jangan cemas. Masuk ke dalam folder system-application.
  3. Nah.. bagian dalam folder application inilah yang akan sering anda “bongkar” entar :)
Step 2 : Konfigurasi
  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/";
    Mengapa localhost? Karena dalam tutorial ini kita akan membangun CI dalam server lokal kita :)
  3. Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostnameusernamepassword, dan nama database (database akan kita buat entar, untuk sementara siapkan namanya dulu saja) sesuaikan dengan pengaturan mysql anda. Contoh :
    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "db_ci";
Selesai dengan instalasi dan konfigurasi, next step siapkan database yang akan kita gunakan dalam praktikum kali ini (praktikum ha ha, please dont imagine like we’re done something biology okay J )
Step 3 : Siapkan database
  1. Buat database dengan nama db_ci melalui phpmyadmin anda (saya asumsikan anda sudah terbiasa menggunakan tool hebat ini).
  2. Siapkan tabel dengan nama tb_buku (field : id_buku, judul_buku, stok_buku).
    CREATE TABLE IF NOT EXISTS `tb_buku` (
    `id_buku` varchar(10) NOT NULL,
    `judul_buku` varchar(50) DEFAULT NULL,
    `stok_buku` year(4) DEFAULT NULL,
    PRIMARY KEY (`id_buku`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  3. Insert-kan beberapa sample data ke dalam tb_buku.
    INSERT INTO `tb_buku` (`id_buku`, `judul_buku`, `stok_buku`) VALUES
    ('1', 'Mencari Tombol Tab', 2003),
    ('2', 'Guna Guna dari Raja', 2033);
  4. Ok, we’re done with database !
Step 4 : Bekerja dengan CI
  1. Membuat model. Ketikkan script berikut ini
    <?php
    class Buku_model extends Model {
    function Buku_model()
    {
    parent::Model();
    }
    db->select('*');
    $this->db->from('tb_buku');
    $this->db->order_by('id_buku','DESC');
    $data = $this->db->get('');
    return $data;
    }
    }
    ?>
  2. Simpan dengan nama buku_model.php. Simpan dalam folder system-application-models
  3. Membuat Controller. Ketikkan script berikut ini,
    <?php
    class Buku_con extends Controller {


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

    public function getBuku () {
    $data['title'] = 'menampilkan isi buku';
    $data['detail'] = $this->buku_model->getBuku();
    $this->load->view('buku_view', $data);
    }
    }
    ?>
  4. Simpan dengan nama buku_con.php. Simpan dalam folder system-application-controller
  5. Membuat View. Ketikkan script,
    <h4>Data Buku</h4>
    <?php foreach($detail->result() as $rows) :
    echo $rows->id_buku; echo "<br>";
    echo $rows->judul_buku; echo "<br>";
    echo $rows->stok_buku; echo "<br>";
    endforeach
    ?>
  6. Simpan dengan nama buku_view.php. Simpan dalam folder system-application-view
  7. Nah. Kita sudah membuat sebuah fungsi untuk menampilkan data dari database dengan controller, model, dan view. Sekarang masuk ke browser anda.
  8. Ketikkan http://localhost/ci/buku_con/getBuku/. Dan… TADAAAA
READ MORE