Pages

16 February, 2009

Membuat fungsi Tanggal Hijriah-Masehi-Jawa dengan PHP

Awalnya cuma iseng ingin mencari script untuk membuat tanggal otomatis di akhir dan awal bulan, yang merupakan bagian dari tuntutan project yang sedang dikerjakan.Eh… ga nyangka sekali dayung 2-3 pulau kelewatan, hehehe…..
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

Dulu banget waktu masih newbie belajar tentang HTML, saya banyak mengunjungi situs-situs tutorial seperti about.com. Contoh URL tutorialnya itu seperti ini nih bentuknya:

http://php.about.com/od/learnphp/p/learn_php_free.htm
http://php.about.com/od/phpbasics/p/database_links.htm

Melihat bentuk url yang seperti itu, saya pikir isi server about.com rumit banget. Tutorialnya kan ada banyak. Berarti mereka rajin sekali ya.. membuat halaman html sebanyak itu dalam folder-folder sebanyak itu. Belum lagi kalau desainnya berubah. Wah. Kalau ada 1000 halaman tutorial, berarti mereka mesti meng-update 1000 file dalam sehari sekaligus. Haha :D. Tapi ya saya maklumi saja. Namanya juga situs gede. Pasti sudah punya modal hostingan gede pula untuk menampung ribuan halaman HTML (berpikir polos mode on ^^).

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:

  1. mula-mula, buka hostingan situs berita tsb dengan ftp atau file manager.
  2. download file .htaccess dari folder public_html (atau www)
Jika tidak ketemu filenya, maka bisa bikin sendiri di notepad (kosongan), lalu simpan dengan nama .htaccess (tanpa tambahan nama lain atau extension lain) dan save as typenya all files.

  1. Edit file tersebut dengan text editor favorit. Saya biasanya pakai notepad++ :)
  2. Tambahkan script berikut kedalamnya.


  1. RewriteEngine on
  2. RewriteBase /home/user/public_html/
  3. 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.

  1. Save
  2. 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.
Jika masih kesulitan, silakan hubungi web developer yang profesional untuk keperluan pembangunan website Anda :D. Atau hubungi saya anytime, Ok. ;)