08 July, 2010
Membuat Module di Framework Codeigniter
Bagi temen-temen yang udah pernah pake pasti udah tau apa itu Model, View , Controller (bagi yang belum tau cari referensi sendiri ya :D ). Dalam default core Codeigniter, penempatan Controller telah disediakan dalam folder system\application\controllers, Model di dalam folder system\application\models dan View ada di dalam folder system\application\views. Kalo misal website kita ada 100 halaman (asumsikan 1 halaman 1 controller) maka didalam folder controller akan ada 100 file controller, memang kalo dilihat dari segi efisinesi hal itu sangat efisiensi kita nggak perlu buka folder sana-sini untuk mengedit file controllernya. Tapi bagaimana jadinya kalau kita sedang mengedit file controler News, kita juga pengen edit file Model News dan views News, bolak-balik lagi deh buka folder. Nah pernahkah temen-temen berpikir untuk membuat modul-modul agar file-file yang berupa Controller, Model dan View tersebut berada dalam satu folder sehingga file-file tersebut tidak terkesan semrawut?
06 May, 2010
Teknologi HipHop for PHP
Review sedikit tentang HipHop for PHP, HipHop for PHP adalah lebih dari sekedar compiler‘ dan bisa menghemat CPU usage pada webserver hingga rata-rata 50%. Lumayan lah..
Kenapa kok dimulai dengan PHP? Menurut Zhao, PHP nih kan bahasa pemrograman yang simple, mudah dipelajari, mudah diketik, mudah dibaca, dan mudah didebug. Karena itulah Facebook bisa dengan mudah mengundang engineer-engineer baru untuk bergabung dengan munggunakan bahasa ini. Sehingga Facebook bisa berinovasi dengan lebih cepat.
Secara teknis, HipHop bukan sekedar compiler. Oleh HipHop, mula-mula codingan PHP kita dirubah menjadi bahasa C++ yang highly optimized. Kemudian, highly optimized C++ source code ini dicompile dengan menggunakan g++.
25 December, 2009
Simple User Interface Web dengan Library Mootols
Siang...siang....!!! Posting lagee neeh. Mumpung ada internet gratis wkwkwkwkww [numpang dikost temend]. Okelah kalo begitu...Kali ini aku mau sedikit share tentang salah satu penggunaan library Javascript yang dirangkai dalam sebuah framework dengan nama Mootools. Nha library javascript ini (mootools maksudnya) adalah salah satu komponen yang banyak digunakan untuk membuat halaman web menjadi lw\ebih interaktif, dengan animasi-animasi keren. Mirip Flash dech. Nha konon situs jejaring sosial facebook juga memakai library mootols agar situsnya interaktif. Gak usah dijelasin kaya apa interaktifnya dah pasti pada tau dumz..hehehe
20 December, 2009
Hacker Facebook dengan Fake Login
Hmmm..ditengah-tengah kesibukan ane kerja tak sempet-sempetin buat posting artikel [nyuri-nyuri waktu padahal lagi buanyak task] wkwkwkwkwkw...
Lha kalo gak nyuri-nyuri waktu gak ada waktu jhe buat posting..hehee
Wis gak usah banyak ngomong, skarang langsung aja ke tutor...cekidooott....
08 July, 2009
Resize image JPEG dengan PHP
Artikel ini bertujuan untuk membuat sebuah gambar JPEG yang di-upload menjadi 3 bentuk(kecil, sedang, dan ukuran sebenarnya). Diharapkan dapat mengurangi beban load halaman website yang mempunyai list konten bergambar seperti e-commerce.
Catatan * : Hanya untuk format gambar (JPG,JPEG)
Menu upload gambar yang disediakan oleh website-website yang ada pada saat ini kebanyakan gambar yang di-upload di-copy secara langsung ke server. Jadi gambar yang dihasilkan hanya satu buah saja yaitu gambar yang di-upload. Padahal, pada kenyataannya website seperti e-commerce pada umumnya melakukan preview gambar sampai sebanyak tiga kali, yaitu:
- Preview gambar untuk list semua konten dengan keterangan singkat
- Preview gambar untuk keterangan detail
- Preview gambar untuk ukuran sebenarnya(versi large)
Apabila gambar yang dimiliki hanya satu buah saja, jadi setiap preview tersebut memakai gambar yang sama, hanya saja di-resize oleh perintah html. Hal ini tentu saja membebani pengunjung website ketika membuka list konten yang seharusnya menggunakan gambar kecil, tetapi disuguhkan gambar dalam ukuran sebenarnya. Oleh sebab itu penulis mencoba menawarkan sebuah solusi untuk hal di atas. Ilustrasinya seperti berikut:
- Pengelola web mengupload sebuah gambar JPEG (versi large)
- Sistem mengupload gambar tersebut menjadi 3 versi : versi small(untuk preview semua list konten), versi medium(untuk preview keterangan detail), versi large(ukuran sebenarnya)
Jadi, setelah gambar diupload dan dibuat menjadi 3 bagian maka website akan menampilkan gambar dalam ukuran sebenarnya(bukan di-rezise oleh perintah html).
Langkah-langkah implementasi :
1. Pastikan pustaka GD sudah diaktifkan agar PHP dapat mendukung pembuatan grafis secara on the fly.
Caranya:
- buka file configurasi php(php.ini) dengan text editor.
- Cari ;extension=php_gd.dll
- Hilangkan tanda ; sehingga menjadi extension=php_gd.dll
2. Buat folder “img” pada direktori htdocs(untuk web server Apache) atau wwwroot(untuk web server IIS)
3. Buat file php seperti di bawah ini dan simpan dengan nama “upload_image.php” di direktori yg sama dengan folder “img”:
function UploadImage($img_name){header("Content-type: image/jpeg");
//direktori gambar$vdir_upload = "img/";$vfile_upload = $vdir_upload . $img_name;
//Simpan gambar dalam ukuran sebenarnyamove_uploaded_file($_FILES["img"]["tmp_name"], $vfile_upload);
//identitas file asli$im_src = imagecreatefromjpeg($vfile_upload);$src_width = imageSX($im_src);$src_height = imageSY($im_src);
//Simpan dalam versi small 110 pixel//set ukuran gambar hasil perubahan$dst_width = 110;$dst_height = ($dst_width/$src_width)*$src_height;
//proses perubahan ukuran$im = imagecreatetruecolor($dst_width,$dst_height);imagecopyresampled($im, $im_src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
//Simpan gambarimagejpeg($im,$vdir_upload . "small_" . $img_name);
//Simpan dalam versi medium 320 pixel//set ukuran gambar hasil perubahan$dst_width = 320;$dst_height = ($dst_width/$src_width)*$src_height;
//proses perubahan ukuran$im = imagecreatetruecolor($dst_width,$dst_height);imagecopyresampled($im, $im_src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
//Simpan gambarimagejpeg($im,$vdir_upload . "medium_" . $img_name);
imagedestroy($im_src);imagedestroy($im);}//Upload GambarUploadImage($_FILES["img"]["name"]);?>
4. Buat file html seperti di bawah ini dan simpan dengan nama “upload.html” di direktori yg sama dengan folder “img”:
Image (JPG/JPEG) <input name="img" type="file">
<input name="submit" value="Upload" type="submit">
</form>
5. Coba upload sebuah gambar berformat JPEG dengan perintah tersebut.
Lihat pada direktori “img”, jika berhasil maka akan terbentuk 3 buah file upload.
11 June, 2009
Membuat Commet Menggunakan Ajax
Hampir dari kita semua pasti telah memiliki
account facebook. Pada situs jejaring sosial ini, apapun bisa kita
komentari. Setiap kali ada teman ganti status kita bisa langsung beri
komentar. Kalau ada teman yang baru ganti foto, kita bisa langsung beri
komentar. Justru karena komentar-komentar inilah yang menjadikan kita
kembali mengunjungi situs ini.
Menurut perkiraan saya, hampir 80% dari proses apalikasi yang ada
pada facebook menggunakan pendekatan ajax. Begitu pula dengan aplikasi
komentarnya. Ketika kita menekan tombol submit setelah menuliskan
komentar, tanpa ada proses refresh halaman, komentar kita akan secara
otomatis muncul dan berbarengan dengan itu di simpan juga ke dalam
database. Bagaimana kah proses ini bisa terjadi? Saya akan
menjelaskannya berikut ini.
Proses menambahkan komentar
Untuk bisa menampilkan komentar yang baru saja kita tulis tanpa
perlu refresh halaman, kita perlu mendapatkan komentar-komentar yang
sudah diposting sebelumnya. Untuk mendapatkannya kita menggunakan:
Nama_id di sini adalah div yang berada di antara semua komentar yang sudah ada. Contohnya adalah sebagai berikut:
<!– list start –>
<div class=”Comment” id=”1″>
<div class=”SenderName”>Kandar</div>
<div class=”CommentDate”>23, April 2009</div>
<div class=”CommentContent”>Ini komentar dari kandar</div>
</div>
<div class=”Comment” id=”2″>
<div class=”SenderName”>Foo</div>
<div class=”CommentDate”>24, April 2009</div>
<div class=”CommentContent”>hellow world</div>
</div>
<div class=”Comment” id=”3″>
<div class=”SenderName”>Kandar</div>
<div class=”CommentDate”>23, April 2009</div>
<div class=”CommentContent”>Ini komentar dari kandar</div>
</div>
<!–list end–>
</div>
Untuk mendapatkan seluruh isi dimulai dari komentar list start hingga list end kita gunakan method
Untuk mendapatkan komentar yang telah ada kita buat satu variable dengan nama currentContent.
Berikutnya kita membuthkan sebuah variabel yang berfungsi untuk
menginisialisasi nilai dari form komentar. Variabel ini bertugas
mendapatkan nilai dari input nama dan isi komentar. Variabel ini kita
beri nama commentValue.
document.getElementById(’name’).value ) + ‘&YourComment=’ +
encodeURI( document.getElementById(’YourComment’).value );
Agar variabel ini bisa berfungsi, kita harus membuat sebuh form html. Berikut adalah kodenya:
<p><label for=”name”>Name:</label> <input type=”text” name=”name” id=”name” />
<p><label for=”YourComment”>Comment:</label>
<textarea name=”YourComment” id=”YourComment”
/></textarea></p>
<p><input name=”Submit” type=”submit” value=”Submit” /></p>
</form>
Langkah berikutnya adalah membuat suatu fungsi javascript yang
bernama postContents yang salah satu isinya adalah variabel
commentValue. Kodenya adalah sebagai berikut:
/* Query yang nilainya akan dikirim ke php.*/
var commentValue = ‘name=’ + encodeURI(
document.getElementById(’name’).value ) + ‘&YourComment=’ +
encodeURI( document.getElementById(’YourComment’).value );
/* File php yang bertugas melalukan proses penyumpanan. */
var send_to = ‘manage-comment.php’;
/*Div id untuk menampilan gambar preloader dan error.*/
var respons = ‘alert’;
postAjax(send_to, commentValue, respons, handleResponComment);
}
Selain variabel commentValue, di dalam fungsi postContent kita
mendapatkan sebuah fungsi bernama postAjax. Ini adalah fungsi yang
mengirimkan nila variabel commentValue dengan metode Ajax. Untuk itu
kita membuthkan suatu fungsi yang bertugas yang menginisialisasi
XmlHttpRequest. Berikut adalah fungsingya:
var obj = ”;
function createXmlHttpRequest() {
var xmlHttp = false;
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
} else {
xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) {
alert(”Ops sorry We found some error!!”);
}
return xmlHttp;
}
Selanjutnya kita membuthkan sebuah fungsi yang bertugas untuk
menerima respon setelah terjadi proses XmlHttpRequest. Fungsi ini kita
beri nama handleResponComment berikut adalah kodenya:
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
/* Untuk menerima respon balik dari php, kita menggunakan JSON. */
var JSONRespons = eval(’(’ + xmlHttp.responseText + ‘)’);
if(JSONRespons.status == 1){
/*
* Jika penyimpanan data ke dalam database telah berhasil, proses selanjutnya adalah memanggil fungsi commentResponse.
*/
commentResponse(JSONRespons);
}
else{
/*Jika komentar baru sudah muncul, form kita aktifkan kembali dengan
memanggil fungsi enableForm() dengan menggunakan event onload pada
image.*/
document.getElementById(obj).innerHTML = JSONRespons.message +
‘<img src=”ajax-loading.gif” width=”0″ height=”0″
onload=”enableForm();”>’;
}
} else {
/* Tampilkan error jika ada.*/
document.getElementById(obj).innerHTML = ‘Error: ‘ + xmlHttp.statusText;
}
}
else{
/*
* Nonaktifkan form sesaat setelah user menekan tombol submit.
* Munculkan juga image preloader.
*/
document.getElementById(obj).innerHTML = ‘<img src=”ajax-loading.gif”>’;
document.getElementById(’name’).disabled=true;
document.getElementById(’YourComment’).disabled=true;
document.getElementById(’submit’).disabled=true;
}
}
untuk mencegah user menekan tombol submit kembali, selama proses
berlangsung, form kita nonaktifkan dahulu. Jika semua proses telah
selesai kita membuthkan sebuah fungsi yang bertugas untuk kembali
mengaktifkan form. Berikut adalah fungsinya:
/* Mengaktifkan kembali form jika semua proses telah selesai. */
document.getElementById(’name’).disabled=false;
document.getElementById(’YourComment’).disabled=false;
document.getElementById(’submit’).disabled=false;
}
Jika semua proses penyumpanan komentar baru telah berhasil, sekarang
waktunya untuk menampilkan komentar yang baru saja di tambahkan oleh
user. Berikut adalah fungsingya:
/*Melist komentar yang telah ada.*/
var current_contents = document.getElementById(’CommentList’).innerHTML;
/* List komentar yang telah ada ditambah komentar baru. */
var newComment = current_contents + ‘<div class=”Comment” id=”‘ +
JSONRespons.message_id + ‘”><div class=”Remove”><a
href=”javascript:deleteContent(’ + JSONRespons.message_id +
‘);”>Remove</a></div><div
class=”SenderName”><img src=”ajax-loading.gif” width=”0″
height=”0″ onload=”enableForm();”>’ + JSONRespons.name +
‘</div><div class=”CommentDate”>’ + JSONRespons.date +
‘</div><div class=”CommentContent”>’ + JSONRespons.comment
+ ‘</div></div>’;
/* Mendapatkan total komentar saat ini*/
var currTotalComm = document.getElementById(’numComment’).innerHTML;
/* Total komentar saat ini ditambah satu.*/
document.getElementById(’numComment’).innerHTML = parseInt(currTotalComm) + parseInt(1);
/*Munculkan semua komentar, termasuk yang baru saja ditambahkan.*/
document.getElementById(’CommentList’).innerHTML = newComment;
/* reset form.*/
document.getElementById(’CommentForm’).reset();
/* Hilangkan image preloader.*/
document.getElementById(’alert’).innerHTML = ”;
}
Proses menghapus komentar
Berikut ini adalah tiga buah fungsi yang bertugas untuk menangani proses penghapusan komentar.
var postValue = ‘id=’ + messageID;
var send_to = ‘manage-comment.php’;
var respons = ‘alert’;
input_box = window.confirm(’Are you sure want to delete this comment?’);
if (input_box==true){
postAjax(send_to, postValue, respons, handleDeletedComment);
}
}
function handleDeletedComment(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
var JSONRespons = eval(’(’ + xmlHttp.responseText + ‘)’);
if(JSONRespons.status == 1){
deleteNow(JSONRespons.id);
}
else{
document.getElementById(obj).innerHTML = JSONRespons.message;
}
} else {
document.getElementById(obj).innerHTML = ‘Error: ‘ + xmlHttp.statusText;
}
}
}
function deleteNow(id){
var delete_comment = document.getElementById(id);
var currTotalComm = document.getElementById(’numComment’).innerHTML;
document.getElementById(’numComment’).innerHTML = parseInt(currTotalComm) - parseInt(1);
delete_comment.parentNode.removeChild(delete_comment);
enableForm();
document.getElementById(’alert’).innerHTML = ”;
}
Untuk proses yang ditangani php, semuanya ada pada file manage-comment.php.
Demikian panduan Comment Ajax ini dibuat, semoga bisa membantu para teman-teman developer.
Sumber dari situs Ilmu Website dalam kategori ajax dengan judul Membuat Comment Ajax
12 May, 2009
Export MySQL data ke Excel dengan PHP
Kadang-kadang data yang berada di database akan dicetak atau disimpan dalam format Excel atau spreedsheet. Beberapa aplikasi client database menyediakan fasilitas Export Data, baik ke dalam tabel html, DBF file, maupun Excel File.
Sekarang Kita akan melakukan export data MySQL ke file excel dengam menggunakan aplikasi yang dibuat dengan PHP. Berikut angkah-langkahnya,
Kita buat tabel contoh (id int(5), Nik varchar(8), nama varchar(25)) di dalam database test. lalu kita isi tabel tersebut dengan beberapa data dan kita export data tersebut ke dalam format file Excel.
Langkah pertama adalah melakukan konfigurasi koneksi ke server MySQL:
$user="whoami";
$pass="screet";
$db="test";
$conn=mysql_connect($host,$user,$pass) or die(mysql_error()."Koneksi Gagal");
?>
Setelah melakukan koneksi database dan koneksi berhasil, lalu kita buat tabel di atas, jangan lupa gunakan @ pada fungsi mysql_query, tanda @ digunakan untuk menghilangkan komentar error ketika ada kesalahan pembuatan tabel, hal ini dimaksudkan apabila tabel sudah ada, maka program tetap jalan tanpa ada pesan error.
Setelah Tabel selesai dibuat kita isi data tabel tersebut, berikut contoh script untuk membuat tabel dan mengisi datanya:
mysql_select_db($db);
$create="CREATE TABLE contoh (id INT( 5 ) NOT NULL AUTO_INCREMENT ,nik VARCHAR( 8 ) NOT NULL ,nama VARCHAR( 25 ) NOT NULL ,PRIMARY KEY ( id ) ,UNIQUE (nik)) TYPE = innodb";
$kueri_create=@mysql_query($create);
/* selesai create */
/* Insert data */
$insert="INSERT INTO `contoh` ( `id` , `nik` , `nama` )VALUES ('1', '00100001', 'Didik'), ('2', '00100002', 'Kurniawan')";
$kueri_insert=@mysql_query($insert);
?>
Setelah tabel siap dan data sudah ada, sekarang kita akan melakukan proses export data tersebut, berikut scriptnya:
//die($select);
$export = mysql_query($select);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . "\t";
}
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=contoh.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
?>
Selamat mencoba!
Sebagian source diambil dari berbagai sumber
08 May, 2009
Membuat Paging dengan PHP
Sistem Paging ini saya jelaskan lebih dikhususkan untuk penggunaan pada Website.
Sekarang saya akan menjelaskan dulu logika dasar dari sistem Paging. Perhatikan table di bawah ini :
Sebagai contoh, kita memiliki 22 record daftar telepon, kemudian ingin kita tampilkan dengan dibagi menjadi beberapa halaman dengan maksimum 5 record per halaman.
Nah, pertama kita cari dulu jumlah halaman yang akan terbentuk :
Jumlah Halaman = Total Record / Maksimum Record tiap halaman
Jumlah Halaman = 22 / 5 = 4.4 Halaman
Ibarat kan saja halaman itu halaman pada buku novel ukuran kertas A4,dimana ada sisa sedikit cerita yang tidak muat lagi untuk ditampilkan di halaman terakhir, mau tak mau kertas musti ditambah satu lagi guna menempatkan sisa cerita yang ada (walaupun hanya menggunakan separo dari ukuran kertas saja. Maka dari itu setiap perhitungan Jumlah Halaman kita akan bulatkan ke atas.
Jumlah Halaman = 22 / 5 = 4.4 = 5 Halaman
Kemudian setelah jumlah halaman didapat, kita lakukan pencetakan nomor halaman (berupa link). Masing-masing halaman/link diberi value kelipatan 5 (jumlah maksimum record per halaman) dimulai dari 0 (karena perhitungan record dari database dimulai dari 0). Jadi pada halaman 1 akan memiliki value 0, halaman 2 memiliki value 5,dst . Dapat dilihat pada table di atas. Value ini akan dipakai sebagai penanda awal record yang akan ditampilkan. Halaman 1 akan dimulai dari record ke-0, halaman 2 dimulai dari record yang ke-5,dst.
Nah,ini logika sistem paging yang saya pikiran. Sekarang saya akan menjelaskan menggunkan coding PHP.
function paging($curRec,$totalRec,$maxRec){
$totalPage=ceil($totalRec/$maxRec);
$curPage=ceil(($curRec+1)/$maxRec);
$str="";
/*--------------------------prev button-----------------------*/
if($curPage>1){
$rec=($curPage-2)*$maxRec;
$str.=’ prev’;
}
/*-------------------------generate page number----------------*/
for($i=1;$i<=$totalPage;$i++){ if($i==$curPage){ $bold=true; }else{ $bold=false; } $rec=($i-1)*$maxRec; $angka=($bold)?””.$i.””:$i;
$str.=’ ’.$angka.’’;
}
/*--------------------------next button-----------------------*/
if($curPage<$totalPage){ $rec=($curPage*$maxRec); $str.=’ next’;
}
return $str;
}
Saya akan jelaskan perbagian.
function paging($curRec,$totalRec,$maxRec){
Disini, Paging saya buat dalam bentuk function , jadi bisa dipakai dengan mudah setiap saat. Paramater yang diterima oleh function paging ini ada 3 yaitu :
1. $curRec = digunakan untuk memberitaukan function record pertama dari halaman yang sedang aktif.
2. $totalRec =berisi total record yang berada di dalam database.
3. $maxRec= berisi informasi maksimum record yang boleh ditampilkan tiap halaman.
$totalPage=ceil($totalRec/$maxRec);
Nah ini untuk mencari total halaman yang akan dibentuk (seperti yang sudah dijelaskan logikanya di atas).
$curPage=ceil(($curRec+1)/$maxRec);
$str="";
Di atas tadi dijelaskan bahwa masing-masing halaman diberi value, nah value itu akan dipakai disini untuk mengetahui halaman yang sedang aktif dengan menggunakan rumus diatas.Untuk rumusnya, jangan tanya kenapa, itu juga saya ketemu sendiri dengan mencari kecocok2an, kalo penasaran coba tes saja. Kemudian sediakan satu variable kosong untuk menyimpan string paging.
/*--------------------------prev button-----------------------*/
if($curPage>1){
$rec=($curPage-2)*$maxRec;
$str.=’ prev’;
}
/*-------------------------generate page number----------------*/
for($i=1;$i<=$totalPage;$i++){ if($i==$curPage){ $bold=true; }else{ $bold=false; } $rec=($i-1)*$maxRec; $angka=($bold)?””.$i.””:$i;
$str.=’ ’.$angka.’’;
}
/*--------------------------next button-----------------------*/
if($curPage<$totalPage){ $rec=($curPage*$maxRec); $str.=’ next’;
}
Nah setelah perhitungan tadi, maka kita sudah bisa mencetak /membuat paging dengan code di atas. Supaya gak bingung dengan code diatas, coba baca code-nya sambil melihat table yang sudah saya kasi diatas. Ini saya sertakan file php-nya supaya lebih jelas. Kalo masih bingung jg, bs hubungi saya ke email, kalo sempat saya balas .
contoh paging (tanpa database)
contoh paging (dengan database)
06 May, 2009
Membangun SMS Gateway denga Gammu dan MySQL
Saya sangat bersyukur sekali, karena sudah 1 tahun saya mencoba membangun SMS Gateway menggunakan gnokii, kannel,etc, tapi saya selalu menemukan masalah, dan sekarang alhamdullilah telah berhasil membangun SMS Gateway menggunakan Gammu yang saya rasa cukup stabil. Handphone yang telah berhasil saya coba adalah Nokia 3310 dan Siemens C35i. Distro linux yang saya gunakan untuk membangun SMS Gateway ini adalah Trustix 3.0. Sebelum installasi kita lakukan silahkan anda baca-baca info tentang Gammu di http://www.mwiacek.com/gsm/soft/gammu.html
Gimana!! udah selesai bacanya?? Oke..lansung saja dan tidak banyak basa-basi, mari kita mulai saja mengumpulkan kebutuhan untuk membangun SMS Gateway menggunakan Gammu ini.
1. Gammu.tar.gz
Dapat anda download di : http://www.mwiacek.com/zips/gsm/gammu/gammu.tar.gz
atau # wget http://www.mwiacek.com/zips/gsm/gammu/gammu.tar.gz
2. Web Server (Jika anda sudah punya webserver, abaikan saja no 2 ini, kalau belum terpaksa anda harus install dulu apache,myslq,php)
3. Handphone Nokia 3310 atau Siemens C35i, untuk support handphone lainnya silahkan baca lagi http://www.mwiacek.com/gsm/soft/gammu.html
Gammu support dengan berbagai merek handphone kok lihat ini :
Gammu currently supports:
majority of Nokia phones from DCT3 generation with Nokia operating system - for example Nokia 3210, 3310, 3315, 3410, 5110, 5130, 6110, 6130, 6150, 6210, 7110, 8210
majority of Nokia phones from DCT4 generation with Nokia operating system - for example Nokia 3100, 3510, 3510i, 6220, 6230, 6310, 6310i, 6510, 6610, 7210, 8310
many AT devices - for example many Siemens, Sony Ericsson, Nokia, Alcatel models
Alcatel from BE5/BF5/BH4 generation - for example 501, 511, 512
some functions with OBEX and Symbian devices
4. Kabel Serial untuk handphone
Jika anda sudah berhasil mendonwload gammu.tar.gz, silahkan di extract
#tar xvfz gammu.tar.gz
Setelah anda extract secara otomatis anda akan mendapati folder gammu-1.05.00, sekarang masuklah ke folder tersebut
#cd gammu-1.05.00
Sebelum anda menginstall biasakan membaca README, INSTALL, etc.
#./configure
#make
Disini perlu anda perhatikan apakah ada yang error atau tidak jika ada error!, berarti library mysql anda masih kurang lengkap, biasanya error yang ditemui adalah "lssl" sering tidak ditemukan ketika melakukan "make" atau database mysql tidak support dengan gammu-nya.
(Solusi-nya coba install ulang mysql-nya atau lengkapi library yang dibutuhkan)
#make shared
#make install
#make installshared
Selanjutnya anda perlu meng-upgrade "library"
# vi /etc/ld.so.conf
Tambahkan link library dengan mengetik /usr/local/lib pada file ld.so.conf, selanjutnya lakukan upgrade library dengan mengetik
#/sbin/ldconfig
Note : Jika anda tidak menemukan error apa2 sampai tahap ini berarti anda sudah berhasil mengintall Gammu SMS Gateway
Sekarang coba masuk lagi ke folder dimana anda meng-extract gammu.tar.gz dan copy-lah file yang ada pada folder /docs/example/config/ disitu anda akan menemukan 3 buah file dengan nama gammurc, mysql.sql, smsdrc lalu file gammurc dan smsdrc anda copy-kan ke folder /etc
#cp gammurc smsdrc /etc/
Selanjutnya cari editlah file tersebut seperti ini :
[gammu]
port = /dev/ttyS0 #Jika anda memakai COM2 ganti dengan ttyS1
#model = 6110 #model handphone-nya anda abaikan saja, karena kalau diaktifin sering timbul masalah
connection = fbus #Kalau anda pakai hp Nokia connection-nya "fbus" jika anda memakai hp Siemens ganti "fbus" menjadi "at19200"
#synchronizetime = yes
#logfile = gammulog
#logformat = textall
#use_locking = yes
#gammuloc = locfile
#startinfo = yes
#gammucoding = utf8
#rsslevel = teststable #usephonedb = yes
Jika anda masih bingung, didalam file gammurc tersebut sudah ada petunjuk pemakaian lihat bagian bawah-nya.
Jika anda malas untuk mengedit file-nya, anda juga bisa mendapatkan file-nya di http://www.posmetropadang.com/gammu/gammurc
Sekarang pastikan kabel data dan handphone anda sudah tersambung ke port COM1 pada komputer anda, selanjutnya anda tinggal ketik
#gammu --identify
Saya harap anda dapat melihat keluaran seperti dibawah ini :
Manufacturer : Nokia
Model : 3310 (NHM-5)
Firmware : 06.33 F (28-11-03)
Hardware : 1012
IMEI : 350835608671298
Original IMEI : 350835608671298
Manufactured : 0802
Product code : 0505201
Simlock 1 : MCC+MNC 00101, opened, user , counter 0
Simlock 2 : GID1 0000, opened, factory, counter 0
Simlock 3 : GID2 0000, opened, factory, counter 0
Simlock 4 : MSIN 0000000001, opened, factory, counter 0
MSID : 830d50880846870ebedd126096
MCU checksum : 9C79
DSP ROM : 6
Jika sudah ada koneksi seperti diatas berarti gammu sudah bisa mengenali handphone anda dan kita sudah bisa melanjutkan ke step yang lainnya.
Nah sekarang kita tinggal membuat, bagaimana semua sms yang masuk lansung tersimpan ke database mysql dan dapat ditampilkan ke website dengan memakai php scripts.
Oke lanjut bro... kerjaan kita sudah hampir selesai, mungkin ada kopi atau rokok yang bisa disruputt dulu hehe...??
Sekarang coba anda buka file smsdrc yang telah anda copy-kan ke folder /etc tadi
#vi /etc/smsdrc
bagian dibawah ini biarkan saja apa adanya
[smsd]
PIN = 1234
logfile = smsdlog
commtimeout = 1
sendtimeout = 10
carilah dan edit bagian dibawah ini sesuai dengan keadaan mysql anda
# ------------------------- SETTINGS FOR --smsd MYSQL ---------------------------
user = root
password = password_mysql_anda
pc = localhost
database = nama_database
Note : Selain bagian yang saya sebutkan diatas mohon anda kasih tanda "#" karena yang kita butuhkan disini hanya bagian seperti yang saya sebutkan diatas saja, guna untuk koneksi ke database mysql-nya.
Sekarang anda masuk ke directory /docs/example/config/ terdapat file ‘mysql.sql’ , yang adalah structure table yang digunakan, anda tinggal memasukkannya di MySQL database anda.
Buat database sms
#mysqladmin –u root –p create sms
Buat table gammu dari file ‘mysql.sql’
#mysql –u root –p < mysql.sql
Atau dengan cara yang lebih mudah, anda dapat membuat database dan membuat table gammu melalui phpmyadmin http://localhost/phpmyadmin
Setelah selesai anda sudah bisa menjalankan daemon smsd-nya
#gammu --smsd MYSQL /etc/smsdrc
Log filename is "smsdlog"
Press Ctrl+C to stop the program ...
Jika keluar seperti yang diatas berarti SMS Gateway anda sudah berjalan dengan baik dan anda bisa menggunakan sesuai kebutuhan anda, dan semua sms yang ada di handphone anda akan lansung masuk kedalam database mysql.
Untuk tahap selanjutnya anda tinggal menampilkan sms anda ke web menggunakan php scripts, php scripts-nya bisa anda download di
http://posmetropadang.com/gammu/sms.zip
Anda perlu sedikit mengedit sms.php-nya sesuai dengan keadaan server database anda.
Sekarang anda bisa membuka sms lewat browser kesayangan anda dengan mengetik http://localhost/sms.php
Nah sekarang apa yang harus anda lakukan?? yang perlu anda lakukan adalah menjalan service daemon smsd secara otomatis ketika komputer di restart.
Buatlah file dengan nama gammu.sh dan simpanlah dalam direktori /usr/local/bin/
#cd /usr/local/bin/
#vi gammu.sh
Isinya sebagai berikut :
#!/bin/sh
export LANG=da_DK
/usr/local/bin/gammu --smsd MYSQL /etc/smsdrc
Setelah itu editlah file /etc/inittab anda
#vi /etc/inittab
Tambahkan baris dibawah ini pada inittab anda
GA:345:respawn:/usr/local/bin/gammu.sh
Wah... cukup panjang juga, hmmm mudah-mudahan tidak ada masalah ya... sekarang habiskan kopi anda, sampai disini anda sudah selesai membangun SMS Gateway menggunakan Gammu. Jika ada kritikan dan pertanyaan jangan sungkan kontak saya.
e-mail : yonaldi@gmail.com
Wrote : Yonaldi
Jika anda bingung dengan langkah2-nya karna saya lihat disini text-nya ketengah semua jadi untuk solusi silahkan anda buka http://lintau.com
29 April, 2009
Sekilas Tentang Cake Php
Masih tentang CakePHP ! Cake PHP atau orang lebih mengenalnya dengan nama CakePHP, adalah sebuah framework atau kerangka kerja untuk membuat aplikasi CRUD (Create, Read, Update, Delete) berbasis bahasa pemrograman PHP. CakePHP juga menjadi salah satu framework pilihan yang memungkinkan seorang developer web untuk membuat sebuah aplikasi dengan karakter pengembangan RAD (Rapid Application Development), yang memungkinkan untuk digunakan dan dikembangkan menjadi aplikasi lain yang lebih kompleks. CakePHP masih satu trah dan mempunyai hubungan darah yang cukup erat dengan Ruby on Rails, sebuah framework pemrograman Ruby. Artikel kali ini akan menjelaskan sedikit mengenai CakePHP. Harapannya, sebagai developer web kita tidak hanya terpaku pada satu metode konvensional saja, akan tetapi cobalah untuk meningkatkan kemampuan kita dalam mengembangkan aplikasi, seiring dengan semakin mudah dan berkembangnya bahasa pemrograman PHP itu sendiri.
Cake PHP dan Framework Lainnya
PHP merupakan sebuah bahasa pemrograman yang memungkinkan seorang developer membuat sebuah aplikasi berbasis web yang powerful. Seiring dengan semakin berkembangnya kebutuhan akan aplikasi berbasis PHP, dan semakin kompleksnya pengembangan aplikasi, dibutuhkan sebuah kerangka kerja (framework), yang terdiri dari file-file pustaka berupa class-class PHP yang bisa diincludekan dalam aplikasi yang sedang kita kembangkan.
Selama ini, pemahaman yang kita peroleh tentang aplikasi web berbasis PHP adalah sebuah aplikasi yang terdiri dari file-file PHP yang berisi kode-kode dan tag html yang dicampur dengan tag PHP, atau lebih dikenal dengan nama spaghetti code (iya lah, coba aja liat makanan spaghetti yang lebih mirip dengan bakmi campur). Pengembangan aplikasi berbasis konvensional seperti ini tidaklah keliru, namun akan menjadi masalah besar apabila aplikasi ini membutuhkan banyak fitur dan pengembangan di kemudian hari. Seiring dengan berkembangnya aplikasi berbasis OOP (Object Oriented Programming), akhirnya beberapa developer PHP bekerja sama untuk membuat sebuah framework yang memudahkan pekerjaan mereka dalam “mencetak” aplikasi baru. Banyak sekali framework yang beredar di internet, bahkan beberapa diantaranya membutuhkan instalasi PHP 5 (seperti Prado dan Zend). Dari beberapa framework yang ada, CakePHP adalah pilihan yang menarik dengan kemampuannya yang beragam dan adaptasinya pada instalasi PHP 4.1.x dan PHP 5.
CakePHP menjadi pilihan, karena beberapa kelebihannya, antara lain :
1. Open Source, ini adalah salah satu syarat untuk berkembangnya sebuah framework yang baik.
2. Riset yang terus-menerus dan terorganisir dengan baik. Sebuah framework bukanlah pekerjaan yang selesai dalam waktu 1 – 2 hari. Semakin terorganisirnya sebuah framework berbanding lurus dengan kualitas framework yang dihasilkan.
3. Dokumentasi yang lengkap. Framework yang baik harus mempunyai dokumentasi yang lengkap, karena sekumpulan class tanpa dokumentasi tak lebih dari sebongkah file yang asing dan menambah masalah developer. Untuk referensi lebih lengkap (gunakan manual dan API CakePHP), silahkan buka http://www.cakephp.org
4. OOP dan yang lebih penting lagi adalah MVC. MVC singkatan dari Model, View, Controller. Waduh, apalagi tuh ? Baca subbab selanjutnya !
5. CakePHP memungkinkan pengaturan user dan hak aksesnya dalam aplikasi yang kita kembangkan, dengan sarana yang lebih mudah dipahami. Fitur ini dikenal dengan nama Access Control List (ACL).
6. Scaffolding. Ya, barangkali inilah fitur yang jarang didapat pada framework lain. Hanya dengan menambahkan pada file controller Anda code :
var $scaffold ;
maka Cake akan secara otomatis mengenerate semua yang dibutuhkan untuk membuat aplikasi CRUD (Create, Read,Update, Delete) secara lengkap. Nggak percaya ? Tunggu aja edisi tutorial kelanjutan artikel ini.
Apa saja yang harus dipelajari untuk pemula ?
Untuk mempelajari CakePHP, setidaknya ada beberapa pemahaman yang seyogyanya dikuasai :
1. Pemrograman Berbasis Objek (OOP). PHP sudah mendukung OOP, dan untuk lebih memahami cara kerja framework, tidak ada salahnya anda mempelajari pola kerja OOP pada pemrograman PHP.
2. Model basis data relasional. Nggak wajib sih, tapi sangat membantu untuk memudahkan kita dalam menyusun basis data yang valid dan mudah dimengerti oleh framework. Apalagi untuk aplikasi rumit yang membutuhkan banyak tabel dan normalisasi.
3. Terminologi MVC. MVC singkatan dari Model, View, dan Controller.
Model : representasi aktif dari struktur database Anda. Framework berbasis MVC menekankan pentingnya disain database yang valid, termasuk hubungan antar tabel dalam database tersebut. Model memungkinkan developer untuk melakukan query antar database (bila memang diperintahkan oleh controller). Sebuah aplikasi MVC yang baik memisahkan antar tampilan dan logika kerja (logic). Model adalah sesuatu yang mewakili basis data yang diolah sedemikian rupa oleh controller (logic), untuk ditampilkan (view) hasil olahannya.
View : tampilan luar dari aplikasi Anda. User akan berhadapan langsung dengan tampilan ini. View tidak boleh mengandung bussiness logic, alias logika kerja aplikasi. Bisa dikatakan, view adalah template dari tampilan aplikasi Anda yang memudahkan Anda untuk menggantinya di kemudian hari.
Controller : inilah bagian yang paling signifikan dari sebuah aplikasi berbasis MVC. Benar dan tidaknya hasil olahan data akan sangat tergantung dari logika kerja aplikasi yang tersusun pada bagian controller ini. Controller akan mengolah data dari model, menyimpannya dalam variabel-variabel, dan menampilkannya pada view.
4. Last but not least adalah, segala sesuatu yang ada hubungannya dengan CakePHP, mulai dari manual, tutorial, API, artikel yang terkait dengannya, sampai kemudian contoh-contoh aplikasi yang ada. Pada bagian akhir artikel ini akan disediakan link downloadan tentang segala sesuatu yang mungkin dibutuhkan untuk pemula yang ingin mempelajari CakePHP dengan lebih sistematis.
Struktur kerja CakePHP
Dari gambar di atas, cara kerja CakePHP sebagian besar sudah bisa dijelaskan. Pertama kali, user melakukan request, yang akan ditangani oleh controller. Controller memiliki banyak methode yang akan menangani request. Controller akan mengambil data pada database melalui model. Model memberikan data yang relevan kepada controller. Controller akan mengolah data dan memberikannya pada view (tampilan) yang dipilih. Tampilan inilah yang akan dilihat oleh user pada browsernya.
Adapun susunan dari instalasi Cake adalah sebagai berikut :
o app/
config/
controllers/
models/
plugins/
tmp/
vendors/
views/
webroot/
o cake/
config/
docs/
libs/
o vendors/
Keterangan lebih jauh tentang fungsi masing-masing file yang tersimpan pada folder-folder di atas bisa diakses pada http://manual.cakephp.org
Ingin tahu lebih banyak ?
Oke, ini dia saatnya bagi-bagi ilmu. Untuk lebih jelasnya, Anda semua bisa menikmati segala sesuatu yang berhubungan dengan CakePHP dengan membongkar dan mendownload yang ada pada situs :
1. Kumpulan artikel dan tutorial praktis, sudah saya rangkum dalam satu file rar, anda tinggal mendownloadnya di sini .
2. Bakery Cake, sudah saya downloadkan versi offlinenya. Tinggal klik aja di sini.
3. Wiki CakePHP. Segudang tutorial dan jurus-jurus maut CakePHP. Tinggal download aja versi offlinenya di sini dan silahkan di baca di rumah.
4. Situs resmi CakePHP, wajib dikunjungi, jika Anda memang ingin maju. Silahkan arahkan browser Anda ke http://www.cakephp.org
5. Manual CakePHP, wajib dimiliki ! Download di http://manual.cakephp.org
6. http://rossoft.wordpress.com/, blog milik salah seorang pengguna CakePHP
7. http://h3rald.com, situs bagus, kaya akan penjelasan, berikut tutorial tentang CakePHP. Di sini bisa juga ditemukan referensi website yang lebih lengkap tentang CakePHP.
8. http://cakeforge.org/, pusat download CakePHP dan segala macam project yang menggunakan CakePHP sebagai based framework-nya. Cocok buat referensi gaya coding kamu !
9. http://thinkingphp.org, sebuah blog yang mengupas habis teknik coding php yang benar dan berbasis MVC. Dibahas pula beberapa apikasi yang dibuat berdasar CakePHP.
10. http://groups.google.com/group/cake-php, kumpulan user Cake yang bergabung dalam Google user group.
11. http://cakebaker.wordpress.com, buka aja. Bagus buat renungan juga.
12. http://grahambird.co.uk/cake/ , ini wajib dibuka buat newbie. Isinya bagus banget dan mudah dipahami. Langsung mak nyus …
13. http://www.zzine.org/articles/cakephp , cukup menarik untuk lebih memahamkan kita tentang filosofi dan sejarah CakePHP.
14. http://snook.ca/jonathan/, blog pribadi. Bagus juga koq buat referensi.
15. http://snook.ca/archives/cakephp/twentyone_things/, 21 Things I learned about CakePHP. Cukup menarik untuk menambah “keimanan” kita tentang framework yang saat ini sedang kita kupas ini.
16. http://www.cakephpforum.com, unofficial forum of CakePHP.
17. http://rd11.com, project manager dari CakePHP project.
Artikel menarik :
2. Application Development with CakePHP
4. Artikel dari Developer Zone
Khatimah
Ilmu ibarat air garam di lautan, semakin sering kita minum, justru semakin hauslah kita. Dan ilmu akan bertambah manakala sang pemilik ilmu tidak sungkan-sungkan untuk berbagi dengan yang lain. Balaslah budi baik saya (wiss…) dengan mengajarkan apa yang sudah saya paparkan di atas, kepada teman Anda selanjutnya. Dan ingatlah, kita semua berangkat dari ketidaktahuan, tanpa orang lain kita bukanlah siapa-siapa.
16 February, 2009
Membuat fungsi Tanggal Hijriah-Masehi-Jawa dengan PHP
Maksudnya script tanggal otomatis ketemu dengan baris script yang lumayan simple dan singkat, ketemu juga sebuah script untuk mengetahui tanggal berdasarkan 3 bentuk, yaitu Masehi seperti yang kita ketahui sekarang, Tanggalan Hijriah yang notabene sudah banyak ditemui dengan bahasa pemrograman JavaScript dan Tanggalan Jawa yang bisa mengetahui hari dari tanggal yang dimaksud dalam Kalender jawa.
Sebetulnya Script ini sudah beredar sejak tahun 2006, tapi ga ada salahnya untuk disampaikan lagi kepada semua guna menambah koleksi scriptnya. Ga usah basa basi langsung aja, Berikut script dan contoh pengunaannya.
Dalam Scrpit ini terdapat 2 Fungsi utama yang mengatur kerjanya, yaitu Fungsi intPart dan Fungsi hdate,
Fungsi intPart
——————
function intPart($floatNum) {
return($floatNum<-0.0000001? ceil($floatNum-0.0000001) : floor($floatNum+0.0000001));
}
Fungsi hdate
——————
hdate merupakan format tanggal/waktu hijriah, silakan cek di manual PHP, dan berikut script Function hdate, tapi berhubung scriptnya begitu puuuaaaaanjaaaang bangeeeeet jadi di cariin aja yang udah di modifikasi biar simple (simple copy pastenya), hehehe.
function hdate($day,$month,$year) {
$julian = GregorianToJD($month, $day, $year);
if($julian>=1937808 && $julian<=536838867) {
$date = cal_from_jd($julian, CAL_GREGORIAN);
$d = $date[day]; $m = $date[month] - 1; $y = $date[year];
$mPart = ($m-13)/12;
$jd = intPart((1461*($y+4800+intPart($mPart)))/4)+
intPart((367*($m-1-12*(intPart($mPart))))/12)-
intPart((3*(intPart(($y+4900+intPart($mPart))/100)))/4)+$d-32075;
$l = $jd-1948440+10632;
$n = intPart(($l-1)/10631);
$l = $l-10631*$n+354;
$j = (intPart((10985-$l)/5316))*(intPart((50*$l)/17719))+(intPart($l/5670))*(intPart((43*$l)/15238));
$l = $l-(intPart((30-$j)/15))*(intPart((17719*$j)/50))-(intPart($j/16))*(intPart((15238*$j)/43))+29;
$m = intPart((24*$l)/709);
$d = $l-intPart((709*$m)/24);
$y = 30*$n+$j-30;
$yj = $y+512;
$h = ($julian+3)%5;
if($julian<=1948439) $y–;
return array(
‘day’=>$date[day], ‘month’=>$date[month], ‘year’=>$date[year], ‘dow’=>$date[dow],
‘hijriday’=>$d, ‘hijrimonth’=>$m, ‘hijriyear’=>$y, ‘javayear’=>$yj, ‘javadow’=>$h
);
}
else return false;
}
Simple kan…..heheheh
dah selesai…
Belum masih ada 1 script lagi, cz kalo cuma pake script ini, seperti contoh pemakaiannya berikut :
function intPart($floatNum) {…..}
function hdate($day,$month,$year) {…..}
print_r(hdate(17,8,1945));
?>
Maka hasilnya :
Array
(
[day] => 17
[month] => 8
[year] => 1945
[dow] => 5
[hijriday] => 8
[hijrimonth] => 9
[hijriyear] => 1364
[javayear] => 1876
[javadow] => 3
)
Nah untuk itu kita buatkan nilai-nilai dari array tersebut seperti :
1. untuk nilai array [dow] => 0=Sunday/Minggu, 1=Monday/Senin, …dst…
2. nilai array [javadow] => 0=Pon, 1=Wage, 2=Kliwon, 3=Legi, 4=Pahing
3. nilai array [month] => 1=Januari, 2=Februari, …dst…
4. nilai array [hijrimonth] => 1=Muharram/Suro, 2=Safar/Sapar, …dst…
berikut script array :
$imonth = Array( ‘Januari’,'Februari’,'Maret’,'April’,'Mei’,'Juni’,'Juli’,'Agustus’,'September’,'Oktober’,'November’,'Desember’);
$amonth = Array( ‘Muharram’,'Safar’,'Rabi\’ul Awal’,'Rabi\’ul Akhir’,'Jumadil Awal’,'Jumadil Akhir’,'Rajab’,'Sya\’ban’,'Ramadhan’,'Syawal’,'Dzul Qa\’dah’,'Dzul Hijjah’);
$jmonth = Array( ‘Suro’,'Sapar’,'Mulud’,'Ba\’da Mulud’,'Jumadil Awal’,'Jumadil Akhir’,'Rejeb’,'Ruwah’,'Poso’,'Syawal’,'Dulkaidah’,'Besar’);
$aday = Array(’Al-Ahad’,'Al-Itsnayna’,'Ats-Tsalatsa\”,’Al-Arba\’a\”,’Al-Hamis’,'Al-Jum\’a',’As-Sabt’);
$iday = Array(’Minggu’,'Senin’,'Selasa’,'Rabu’,'Kamis’,'Jumat’,'Sabtu’);
$jday = Array(’Pon’,'Wage’,'Kliwon’,'Legi’,'Pahing’);
array ditandai dengan inisial depannya, seperti i,a dan j untuk Indonesia, Arab dan Jawa.
berikut penggunaannya :
function intPart($floatNum) {…..}
function hdate($day,$month,$year) {…..}
$imonth = Array( ‘Januari’,'Februari’,'Maret’,'April’,'Mei’,'Juni’,'Juli’,'Agustus’,'September’,'Oktober’,'November’,'Desember’);
$amonth = Array( ‘Muharram’,'Safar’,'Rabi\’ul Awal’,'Rabi\’ul Akhir’,'Jumadil Awal’,'Jumadil Akhir’,'Rajab’,'Sya\’ban’,'Ramadhan’,'Syawal’,'Dzul Qa\’dah’,'Dzul Hijjah’);
$jmonth = Array( ‘Suro’,'Sapar’,'Mulud’,'Ba\’da Mulud’,'Jumadil Awal’,'Jumadil Akhir’,'Rejeb’,'Ruwah’,'Poso’,'Syawal’,'Dulkaidah’,'Besar’);
$aday = Array(’Al-Ahad’,'Al-Itsnayna’,'Ats-Tsalatsa\”,’Al-Arba\’a\”,’Al-Hamis’,'Al-Jum\’a',’As-Sabt’);
$iday = Array(’Minggu’,'Senin’,'Selasa’,'Rabu’,'Kamis’,'Jumat’,'Sabtu’);
$jday = Array(’Pon’,'Wage’,'Kliwon’,'Legi’,'Pahing’);
$date = hdate(17,8,1945);
echo ‘Tanggal 17/08/1945
’;
echo ‘Tanggal umum = ‘.$iday[ $date[dow] ].’ ‘.$jday[ $date[javadow] ].’, ‘.$date[day].’ ‘.$imonth[ $date[month]-1 ].’ ‘.$date[year].’
’;
echo ‘Tanggal jawa = ‘.$iday[ $date[dow] ].’ ‘.$jday[ $date[javadow] ].’, ‘.$date[hijriday].’ ‘.$jmonth[ $date[hijrimonth]-1 ].’ ‘.$date[javayear].’
’;
echo ‘Tanggal hijriah = ‘.$aday[ $date[dow] ].’, ‘.$date[hijriday].’ ‘.$amonth[ $date[hijrimonth]-1 ].’ ‘.$date[hijriyear].’
’;
?>
hasilnya :
Tanggal 17/08/1945
Tanggal umum = Jumat Legi, 17 Agustus 1945
Tanggal jawa = Jumat Legi, 8 Poso 1876
Tanggal hijriah = Al-Jum’a, 8 Ramadhan 1364
nah ketahuankan kalo hari proklamasi itu jatuh pas 8 Ramadhan atau tepatnya pas bulan puasa…
atau bisa juga buat cari tahu kapan hari lahir kita dalam tanggalan arab atau jawa, cuma tinggal ganti sedikit atau tambahkan inputan buat masukin tanggal jadi dech……
Oya script ini ditemukan waktu browsing 3 minggu lalu tepatnya sebelum lebaran, kalo mo lebih jelasnya bisa cek di sini
http://www.tadulakohosting.com/php-script-tanggal-masehi-hijriah-jawa-1202.html?sid=60c817d5ac50e3b702408722af6d694a
kalo pun ga mau repot bisa download contoh scriptnya di Box sebelah kanan, yang berwarna hitam itu…namanya tgl_arab.rar / tgl_arab.zip
ditunggu Komennya….n kalo mo nyumbang silakan titip pesan aja di YM…
Karna dengan berbagi ilmu tak akan habis….
Terima kasih…
03 February, 2009
Membuat URL dengan Alamat PHP Menjadi HTML
http://php.about.com/od/learnphp/p/learn_php_free.htm
http://php.about.com/od/phpbasics/p/database_links.htm
Tapi sejak 3 tahun yang lalu (huyuh.. telat banget) saya baru nyadar kalo 'halaman-halaman HTML' itu aslinya halaman dinamis (ASP atau PHP) yang di mod rewrite. ^^
Bentuk mudahnya mungkin seperti ini:
http://www.domain.com/article.php?title=hello-world
menjadi
http://www.domain.com/hello-world.html
atau dari
http://www.domain.com/article.php?title=hello-world&category=uncategorized
menjadi
http://www.domain.com/uncategorized/hello-world.html
Intinya, dengan mod rewrite, kita bebas menentukan format bagaimana bentuk url itu jadinya.
Kebanyakan blog dan situs-situs besar biasanya memasang judul artikel (atau judul produk jika jenis websitenya e-commerce) sebagai URLnya.
Ada banyak tutorial di internet yang membahas tentang mod rewrite. Disini saya coba uraikan cara membuat mod rewrite yang menurut saya paling mudah dan paling sering saya pakai.
Sebagai study case, mari kita membuat mod rewrite untuk halaman detail sebuah portal berita yang (misalnya) anda punya.
First of all, anggaplah kita sudah mempunyai database yang menampung berita-berita yang akan ditampilkan. Asumsikan bahwa kita akan menampilkan berita-berita tersebut melalui sebuah halaman PHP yang bernama berita.php.
Jika biasanya berita ditampilkan dalam bentuk URL berikut:
http://www.situsberita.com/berita.php?judul=jakarta-heboh-kebanjiran-lagi&kategori=bencana-alam
maka kali ini kita ingin supaya format berita tampil dengan url berikut:
http://www.situsberita.com/bencana-alam/jakarta-heboh-banjir-lagi.html
Langkah-langkahnya yaitu:
- mula-mula, buka hostingan situs berita tsb dengan ftp atau file manager.
- download file .htaccess dari folder public_html (atau www)
- Edit file tersebut dengan text editor favorit. Saya biasanya pakai notepad++ :)
- Tambahkan script berikut kedalamnya.
- RewriteEngine on
- RewriteBase /home/user/public_html/
- RewriteRule ^(.*)/(.*).html /berita.php?judul=$1&kategori=$2
RewriteEngine on
RewriteBase /home/user/public_html/
RewriteRule ^(.*)/(.*).html /berita.php?judul=$1&kategori=$2
note: modify path pada baris ke 3. Pada baris ke 4, format url yang diinginkan berada di sebelah kiri (diawali dengan ^), sedangkan format url yang sebenarnya berada di sebelah kanan (diawali dengan /). Kiri dan kanan dipisahkan dengan satu spasi. $1 untuk memanggil nilai wildcard(.*) yang pertama, sedangkan $2 untuk memanggil (.*) yang kedua, dst. Jika ingin menambahkan rule baru, tambahkan saja langsung di bawahnya lagi tanpa harus mengulang baris 1-3.
- Save
- upload lagi (overwrite)
Sudah selesai :). Silakan buka internet browser anda, dan ketik langsung URL dengan format berikut di address bar:
http://www.situsberita.com/nama-kategori/judul-berita.html
Nah. Mudah-mudahan sukses. Selebihnya tinggal tugas anda untuk merubah nilai href didalam tag di seluruh bagian situs tersebut supaya urlnya menggunakan alamat baru. Jangan lupa di urlencode() dulu. Selanjutnya dipanggil dengan urldecode().
Penggunaan mod rewrite membantu menaikkan posisi situs anda pada search engine. Karena itu, banyak pakar SEO yang mengharuskan penggunaan mod rewrite ini pada setiap situs.
Problem:
- Adapun jika terjadi 500 internal server error, itu berarti terjadi kesalahan pada penulisan mod rewrite pada file .htaccess.