Selasa, Februari 26, 2008

Hari terkahir tugas di Jakarta

Malam ini (26 Feb 2008) hari terakhir saya tugas di jakarta, capek juga nih. Sejak 12 Feb 2008 lalu saya data di jakarta hampir tiap hari tidur larut malam. Itulah tugas dan kerja, untuk mencapai keberhasilan bukanlah satu perkara yang mudah. Tapi saya bersyukur kepada Tuhan, semua berkat kuasa dan anugerahNya sehingga saya dapat menyelesaikan tugas ini. Sebenarnya tugas dan pekerjaan ini belum selesai 100%. Untuk hari yang terakhir ini, saya merasakan ada kuasaNya yang turut bekerja disaat saya sedang menyelesaikan pekerjaan saya. Betapa tidak, dalam hitungan logika manusia tugas yang saya kerjakan ini bakalan tidak selesai hari ini (26 Feb 2008). Tapi toh bisa juga selesai seperti yang di targetkan. Terima kasih Tuhan Yesus atas kuasa roh kudus yang telah kau curahkan untuk selalu menyertaiku. Pimpin langkahku untuk mencapai cita-cita besarku. I miss manado, I miss my beatiful wife Lanny, I miss my sweet angie. GOD bless us.

Membuat Web CMS Sendiri dengan PHP (1. Menyiapkan Database)

Perlengkapan

  1. Komputer untuk kerja
  2. Web Server termasuk PHPnya
  3. Database Server MySQL
  4. Text Editor Favorit (notepad,wordpad dll)
  5. Web Hosting + Domain (optional)
Untuk Webserver PHP dan MySQL bisa menggunakan XAMPP http://www.apachefriends.org/en/xampp.html Jika anda menggunakan XAMPP silahkan install berdasarkan petunjuk XAMPP. Artikel ini hanya membahas tentang PHP Code, jadi diasumsikan anda sudah memenuhi perlengkapan diatas.

Konfigurasi Database

Membuat Database Dengan MySQL Client shell> CREATE DATABASES mycms; atau gunakan phpMyAdmin jika anda menggunakan XAMPP
Masukkan nama database kemudian klik 'Create'
Membuat Table User
CREATE TABLE `cms_user` ( `id` bigint(9) unsigned zerofill NOT NULL auto_increment, `username` varchar(20) default NULL, `password` varchar(80) default NULL, `fullname` varchar(80) default NULL, `email` varchar(200) default NULL, `date_register` datetime NOT NULL default '2008-01-01 00:00:00', `last_login` datetime NOT NULL default '2008-01-01 00:00:00', `last_ip` varchar(100) default NULL, `level` int(3) NOT NULL default '1', `gender` enum('M','F') NOT NULL default 'M', `date_of_birth` date default '0000-00-00', `address` text, `province` varchar(100) default NULL, `zipcode` varchar(5) default NULL, `country` varchar(100) default NULL, `phonehome` varchar(50) default NULL, `handphone` varchar(50) default NULL, `phoneoffice` varchar(50) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB;
klik link SQL di phpMyAdmin, kemudian ketik code diatas dan klik 'GO' Seperti cara sebelumnya lewat link SQL masukkan kode-kode berikut: Membuat Table Kategori Konten
CREATE TABLE `cms_content_category` ( `id` bigint(6) unsigned NOT NULL auto_increment, `parent_id` bigint(6) unsigned default '0', `name` varchar(200) default NULL, `auth_level_view` int(3) unsigned default '0', `auth_level_post` int(3) unsigned default '99', `status_category` int(2) default '1', `language` varchar(80) NOT NULL default 'bahasa', `link_module` varchar(80) default NULL, `position` enum('mtop','mleft','mright','no') NOT NULL default 'mtop', `default_content` bigint(15) unsigned NOT NULL default '0', `order` bigint(6) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Konten
CREATE TABLE `cms_content` ( `id` bigint(12) unsigned NOT NULL auto_increment, `name` varchar(80) default NULL, `category` bigint(6) unsigned default NULL, `description` longtext, `date_post` datetime NOT NULL default '2008-01-01 00:00:00', `date_edit` datetime NOT NULL default '2008-01-01 00:00:00', `flag_view` int(3) default '1', `author` bigint(9) unsigned zerofill default NULL, `language` varchar(80) NOT NULL default 'bahasa', `flag_default` tinyint(3) default '0', PRIMARY KEY (`id`), KEY `category` (`category`), KEY `author` (`author`), CONSTRAINT `cms_content_ibfk_1` FOREIGN KEY (`category`) REFERENCES `cms_content_category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cms_content_ibfk_2` FOREIGN KEY (`author`) REFERENCES `cms_user` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Vote
CREATE TABLE `cms_vote` ( `id` bigint(5) unsigned NOT NULL auto_increment, `description` varchar(200) default NULL, `vote_start` datetime default NULL, `vote_end_interval` int(3) unsigned default '0', `vote_flag_status` int(3) unsigned default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Vote List
CREATE TABLE `cms_vote_list` ( `id` bigint(9) unsigned NOT NULL auto_increment, `id_vote` bigint(5) unsigned default NULL, `description` varchar(40) default NULL, `hit` bigint(9) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `id_vote` (`id_vote`), CONSTRAINT `cms_vote_list_ibfk_1` FOREIGN KEY (`id_vote`) REFERENCES `cms_vote` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ok, itu dulu persiapan databasenya. Kalo ada yang kurang akan dilanjutkan pada sesi berikutnya.

Jumat, Februari 22, 2008

Membuat Grafik Bar dengan PHP


Copy code berikit dan Simpan file ini dengan nama class.wchar.php
<?php
  /*
  W.Chart By Stieven R. Kalengkian
  All Right Reserved 
  Copyright (c) 2008
  Free for Personal use
  */
  class wchart {
  var $kanvas;
  var $kanvas_width_master   = 400;
  var $kanvas_height_master   = 300;
  var $kanvas_free = 50;
  var $max_data = 5000;
  var $kanvas_legend_height = 100;
  var $kanvas_legend_width = 100;
  var $string_head = "Wow!! Chart";
  var $space = 15;
 function wchart($w,$h,$f=50,$m=5000,$g=10) {
  $this->kanvas_width_master = $w;
  $this->kanvas_height_master = $h;
  if ($f < 40) { $f = 40; }
  $this->kanvas_free = $f;
  $this->max_data = $m;
  $this->grid = $g;
  }
  
  function set_title($t) {
  $this->string_head=$t;
  $string_foot="Generated ".date("M, d Y h:i:sa")." GCM Graph";
  imagestring($this->kanvas,2,($this->kanvas_width_master-(strlen($string_foot)*6))/2,$this->kanvas_height_master-15,$string_foot,$this->dgrey);
  imagestring($this->kanvas,5,($this->kanvas_width_master-(strlen($this->string_head)*9))/2,15,$this->string_head,$this->black);
  }
  
  function make_kanvas() { 
  $this->kanvas = imagecreatetruecolor($this->kanvas_width_master+$this->kanvas_legend_width,$this->kanvas_height_master+$this->kanvas_legend_height);
  
  $this->kanvas_height = $this->kanvas_height_master - ($this->kanvas_free*2);
  $this->kanvas_width = $this->kanvas_width_master - ($this->kanvas_free);
  $this->start_x = $this->kanvas_free;
  $this->end_x = $this->kanvas_width;
  $this->start_y = $this->kanvas_free;
  $this->end_y = $this->kanvas_height;
  
  $this->red=imagecolorallocate($this->kanvas,0xFF,0x00,0x00);
  $this->black=imagecolorallocate($this->kanvas,0x00,0x00,0x00);
  $this->green=imagecolorallocate($this->kanvas,0x00,0xFF,0x00);
  $this->white=imagecolorallocate($this->kanvas,0xFF,0xFF,0xFF);
  $this->blue=imagecolorallocate($this->kanvas,0x00,0x00,0xFF);
  $this->grey=imagecolorallocate($this->kanvas,0xF6,0xF6,0xF6);
  $this->dgrey=imagecolorallocate($this->kanvas,0xCF,0xCF,0xCF);
  imagefill($this->kanvas,0,0,$this->white);
  imagerectangle($this->kanvas,1,1,$this->kanvas_width_master-1+$this->kanvas_legend_width,$this->kanvas_height_master-1+$this->kanvas_legend_height,$this->black);
  }
  
  function make_grid($g = 10) {
  $dataPersen = $this->max_data/$g;
  $maxPersen = $dataPersen*$g;
  $gridScale = round(($this->kanvas_height)/$g);
  for ($i = 0; $i <= $g; $i++) {
  imageline($this->kanvas,$this->start_x,$gridScale*$i+$this->kanvas_free,$this->end_x,$gridScale*$i+$this->kanvas_free,$this->grey);
  }
  
  $gs = round(($this->kanvas_width-$this->kanvas_free)/$g);
  $gridV = round(($this->kanvas_width-$this->kanvas_free)/$gs);
  for ($i = 0; $i <= $gridV; $i++) {
  imageline($this->kanvas,$this->start_x+$i*$gs,$this->start_y,$this->start_x+$i*$gs,$this->end_y+$this->kanvas_free,$this->grey);
  }
  imageline($this->kanvas,$this->start_x,round(($this->kanvas_height)/2)+$this->kanvas_free,$this->end_x,round(($this->kanvas_height)/2)+$this->kanvas_free,$this->dgrey);
  imageline($this->kanvas,$this->start_x,$this->end_y+$this->kanvas_free,$this->end_x,$this->end_y+$this->kanvas_free,$this->black);
  imageline($this->kanvas,$this->start_x,$this->start_y,$this->start_x,$this->end_y+$this->kanvas_free,$this->black);
  for ($i = 0; $i <= $g; $i++) {
  imagestring($this->kanvas,2,$this->start_x-($this->start_x-10),$gridScale*$i-5+$this->kanvas_free,round($maxPersen-($dataPersen*$i),2),$this->black);
  }
  }
  
  function polygon($arr,$filled = 0) {
  if ($filled == 0 ) {
  imagepolygon($this->kanvas,$arr,round(count($arr)/2),$this->red);
  } else {
  imagefilledpolygon($this->kanvas,$arr,round(count($arr)/2),$this->red);
  }
  }
  
  function bar($data,$text,$t3d=0) {
  $color[0]=imagecolorallocate($this->kanvas,0x00,0xFF,0x00);
  $color[1]=imagecolorallocate($this->kanvas,0xFF,0x00,0x00);
  $color[2]=imagecolorallocate($this->kanvas,0x00,0x00,0xFF);
  $color[3]=imagecolorallocate($this->kanvas,0x99,0x00,0x00);
  $color[4]=imagecolorallocate($this->kanvas,0x99,0x00,0x99);
  $color[5]=imagecolorallocate($this->kanvas,0xFF,0x66,0x00);
  $color[6]=imagecolorallocate($this->kanvas,0x33,0x33,0x00);
  $color[7]=imagecolorallocate($this->kanvas,0xFF,0x66,0x00);
  $color[8]=imagecolorallocate($this->kanvas,0x00,0x66,0x00);
  $color[9]=imagecolorallocate($this->kanvas,0xFF,0x66,0xFF);
  $color[10]=imagecolorallocate($this->kanvas,0x33,0x33,0xcc);
  if ($t3d == 1) { $this->bar3d($data,$text); }
  $space=$this->space;
  $jarak=round(($this->end_x-$this->kanvas_free-(count($data)*10))/count($data));
  $c=0;
  for ($i=0;$i<count($data);$i++) {
  $titik=round($data[$i]/$this->max_data*($this->end_y))-($this->kanvas_free);
  $x1 = $this->start_x+$space+($i*$jarak);
  $x2 = $x1+$jarak-$space;
  $y1 = $this->end_y-$titik;
  $y2 = $this->end_y+($this->kanvas_free-1);
  $tt=$data[$i];
  $tl=round(strlen($text[$i])*6)/2;
  $xt=$x1;
  if ($c > count($color)) { $c=0; }
  imagefilledrectangle($this->kanvas,$x1,$y1,$x2,$y2,$color[$c]);
  $string="$tt";
  if ($this->text_persen == 1) { $string="$tt%"; }
  //imagestring($this->kanvas,2,$x1+5,$y1-$space-30,$tt,$this->black);
  imagestring($this->kanvas,2,$xt+5,$y1-15-$space,$string,$this->black);
  $ls=10; $sp=5;
  $ly=$this->kanvas_height_master+($i*($ls+$sp));
  imagefilledrectangle($this->kanvas,$this->start_x,$ly,$this->start_x+10,$ly+$ls,$color[$c]);
  imagestring($this->kanvas,2,$this->start_x+20,$ly-1,$text[$i],$this->black);
  $c++;
  }
  }
  
  function bar3d($data,$text) {
  $color[0][0]=imagecolorallocate($this->kanvas,0x00,0x99,0x00);
  $color[0][1]=imagecolorallocate($this->kanvas,0x00,0x33,0x00);
  $color[1][0]=imagecolorallocate($this->kanvas,0x99,0x00,0x00);
  $color[1][1]=imagecolorallocate($this->kanvas,0x33,0x00,0x00);
  $color[2][0]=imagecolorallocate($this->kanvas,0x00,0x00,0x99);
  $color[2][1]=imagecolorallocate($this->kanvas,0x00,0x00,0x33);
  $color[3][0]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[3][1]=imagecolorallocate($this->kanvas,0x11,0x00,0x00);
  $color[4][0]=imagecolorallocate($this->kanvas,0x66,0x00,0x66);
  $color[4][1]=imagecolorallocate($this->kanvas,0x11,0x00,0x11);
  $color[5][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x00);
  $color[5][1]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[6][0]=imagecolorallocate($this->kanvas,0x21,0x21,0x00);
  $color[6][1]=imagecolorallocate($this->kanvas,0x10,0x10,0x00);
  $color[7][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x00);
  $color[7][1]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[8][0]=imagecolorallocate($this->kanvas,0x00,0x33,0x00);
  $color[8][1]=imagecolorallocate($this->kanvas,0x00,0x11,0x00);
  $color[9][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x99);
  $color[9][1]=imagecolorallocate($this->kanvas,0x33,0x11,0x33);
  $color[10][0]=imagecolorallocate($this->kanvas,0x33,0x33,0xFF);
  $color[10][1]=imagecolorallocate($this->kanvas,0x00,0x00,0xCC);
  $space=$this->space;
  $p=$space-2;
  $jarak=round(($this->end_x-$this->kanvas_free-(count($data)*10))/count($data));
  $c=0;
  for ($i=0;$i<count($data);$i++) {
  $titik=round($data[$i]/$this->max_data*($this->end_y))-($this->kanvas_free);
  $x1 = $this->start_x+$space+($i*$jarak);
  $x2 = $x1+$jarak-$space;
  $y1 = $this->end_y-$titik;
  $y2 = $this->end_y+($this->kanvas_free-1);
  $tt=$data[$i];
  $tl=round(strlen($text[$i])*6)/2;
  $xt=$x1;
  if ($c > count($color)) { $c=0; }
  
  $point=array($x1,$y1,$x2,$y1,$x2+$p,$y1-$p,$x1+$p,$y1-$p);
  $numpoint=round(count($point)/2);
  imagefilledpolygon($this->kanvas,$point,$numpoint,$color[$c][0]);
  $point=array($x2,$y1,$x2+$p,$y1-$p,$x2+$p,$y2-$p,$x2,$y2);
  $numpoint=round(count($point)/2);
  imagefilledpolygon($this->kanvas,$point,$numpoint,$color[$c][1]);
  $c++;
  }
  }
  
  function cstring($x,$y,$string,$f=2) {
  imagestring($this->kanvas,$f,$x,$y,$string,$this->black);
  }
  
  function draw() {
  header("Content-type: image/png");
  imagepng($this->kanvas);
  }
  }
?>
Gunakan kode berikut untuk menggunakan class.wchart.php, tapi ingat jangan lupa include file terlebih dulu
<?php
include "class.wchart.php";
$data=array(100,50,20,30,50);
$text=array("satu","dua","tiga","empat","lima");
$chart = new wchart(600,300,40,100);
$chart->make_kanvas();
$chart->make_grid(10);
$chart->set_title("My Chart Demo for Me");
$chart->bar($data,$text);
$chart->draw();
?>

Rabu, Februari 20, 2008

Using XML in MySQL 5.1 and 6.0

Dalam artikel ini akan dibahas penggunaan fitur baru di MySQL 5.1 dan 6.0 yaitu penggunaan fungsi XML. Sebelumnya mohon maaf karena hanya dibahas untuk beberapa bagian penting saja. Untuk lengkapnya anda bisa membacanya disini MySQL AB

Gunakan option --xml, option ini berlaku untuk client mysql dan mysqldump. Dengan fungsi ini hasil query akan ditampilkan dengan format XML. Berikut Contohnya dan hasilnya:

shell> mysql -uroot -e "SHOW VARIABLES LIKE '%version%'" --xml

<?xml version="1.0"?>

<resultset statement="SHOW VARIABLES LIKE '%version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<row> <field name="Variable_name">protocol_version</field> <field name="Value">10</field> </row>

<row>

<field name="Variable_name">version</field> <field name="Value">5.1.22-beta-debug</field> </row>

<row>

<field name="Variable_name">version_comment</field> <field name="Value">Source distribution</field> </row>

<row>

<field name="Variable_name">version_compile_machine</field> <field name="Value">x86_64</field> </row>

<row>

<field name="Variable_name">version_compile_os</field> <field name="Value">suse-linux-gnu</field> </row> </resultset>

Sedangkan jika tidak menggunakan Option --xml hasilnya:
shell> mysql -uroot -e "SHOW VARIABLES LIKE '%version%'"
+-------------------------+---------------------+
| Variable_name           | Value               |
+-------------------------+---------------------+
| protocol_version        | 10                  |
| version                 | 5.1.22-beta-debug   |
| version_comment         | Source distribution |
| version_compile_machine | x86_64              |
| version_compile_os      | suse-linux-gnu      |
+-------------------------+---------------------+

Ataupun dapat dilakukan untuk query SELECT, contohnya :

shell> mysql -uroot --xml -e 'SELECT * FROM xmltest.cities ORDER BY name'

<resultset statement="SELECT * FROM xmltest.cities ORDER BY name" xsi="http://www.w3.org/2001/XMLSchema-instance">

<row> <field name="name">Ciudad de Méico</field> <field name="country">Mexico</field> <field name="population">8591309</field> </row>

<row>

<field name="name">Istanbul</field> <field name="country">Turkey</field> <field name="population">8787958</field> </row>

<row>

<field name="name">Jakarta</field> <field name="country">Indonesia</field> <field name="population">9604900</field> </row>

<row>

<field name="name">Karachi</field> <field name="country">Pakistan</field> <field name="population">9269265</field> </row>

<row>

<field name="name">Moscow</field> <field name="country">Russian Federation</field> <field name="population">8389200</field> </row>

<row>

<field name="name">Mumbai (Bombay)</field> <field name="country">India</field> <field name="population">10500000</field> </row>

<row>

<field name="name">New York</field> <field name="country">United States</field> <field name="population">8008278</field> </row>

<row>

<field name="name">São Paulo</field> <field name="country">Brazil</field> <field name="population">9968485</field> </row>

<row>

<field name="name">Seoul</field> <field name="country">South Korea</field> <field name="population">9981619</field> </row>

<row>

<field name="name">Shanghai</field> <field name="country">China</field> <field name="population">9696300</field> </row> </resultset>

PHP Google Drive

https://g.co/gemini/share/4ec33b801d4a   Tentu, saya akan membantu Anda membuat kode PHP menggunakan Composer untuk melakukan sinkronisasi (...