Tampilkan postingan dengan label error. Tampilkan semua postingan
Tampilkan postingan dengan label error. Tampilkan semua postingan

Jumat, 20 April 2012

[Contoh] Cara Membuat Grafik dengan JPGraph dengan PHP dan MySQL

http://bimosaurus.com/2012/04/21/contoh-cara-membuat-grafik-dengan-jpgraph-dengan-php-dan-mysql


Pada posting lalu http://bimosaurus.com/2012/04/19/contoh-1-dasar-membuat-grafik-dengan-jpgraph-di-php telah coba kita pelajari bagaimana membuat Grafik dengan JPGraph, dengan bahasa PHP dan mengambil data dari MySQL. Diharapkan pada posting tersebut diketahui dasar-dasar untuk membuat grafik sebelum lebih rumit mengambil database. Lantas, bagaimana jika grafik itu harus diambil dari database MySQL? Kuncinya adalah, data yang diambil dari database diambil ke dalam array untuk value sumbu x dan sumbu y. Secara dasar, sama dengan posting lalu, hanya bagaimana mengambil value MySQL dijadikan data x dan y.
Jika kemarin kita punya program macam ini

 

<?php
include ("jpgraph-3.5.0b1/src/jpgraph.php");
include ("jpgraph-3.5.0b1/src/jpgraph_line.php");
 
$data_x = array('Wonosobo','Magelang','Temanggung','Purworejo','Kebumen');
$data_y = array('300','200','100','200','250');
 
 
$graph = new Graph(500,450);
$graph->SetScale("textlin");
 
 
 
$graph->title->Set('Jumlah Orang Edan Karesidenan Kedu');
 
 
$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
 
 
$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels($data_x);
$graph->xgrid->SetColor('#E3E3E3');
 
 
 
 
$garis = new LinePlot($data_y);
$graph->Add($garis);
$garis->SetColor("#6495ED");
$garis->SetLegend('Tingkat Edan');
 
 
$graph->Stroke();
 
 
?>

Maka kita coba untuk membuat grafik dengan mengambil database dari database server MySQL. Data yang ita gunakan adalah data pertama yang dulu pernah kita buat. Maaf saya hanya mengambil lima (5) data pertama karena ternyata berisi data percobaan dari teman-teman yang mencoba mengisi database dengan excel

Database yang saya pakai adalah database kepegawaian. Tabelnya adalah tabel pegawai.

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Misal saya akan membuat sebuah grafik dengan sumbu X adalah berisi nama orang dan sumbu Y menunjukkan banyaknya Rupiah yang diterima, maka berikut langkah yang dapat diambil:

  1. Tampilkan hasil Query untuk kelima record tersebut
  2. Ubah terlebih dahulu value yang terdapat dalam kolom honor menjadi numerik
  3. Tentukan data_x adalah nama orang dan data_y adalah besarnya honor, dengan melakukan kombinasi hasil query, explode dan array

Kira kira menjadi seperti demikian :

 
<?php
//connecting database
if( mysql_connect("localhost","user","password") ){
mysql_select_db("kepegawaian");
}
//querying
$sql_ = "SELECT * FROM `pegawai` LIMIT 0,5";
$query_ = mysql_query( $sql_ );
 
//nilai pertama x_ dan y_
 
$x_ = "";
$y_ = "";
while( $r_ = mysql_fetch_array( $query_ ) ){
//ambil data nama nomer per record
$nama = $r_['nama'];
$honor = $r_['honor'];
//membuang Rp dan Rp.
$honor = str_replace( "Rp " , "", $honor );
$honor = str_replace( "Rp. " , "", $honor );
$honor = (int)$honor;
 
//menjadikan $x_ dan $y_ menjadi data berjajar, dipisahkan dengan koma
$x_ = $x_ . "," . $nama; // $x_ menjadi ,ini,ini,ini dst
$y_ = $y_ . "," . $honor; //$y_ menjadi ,nnn,nnn,nnn,nnn
}
 
 
include ("jpgraph-3.5.0b1/src/jpgraph.php");
include ("jpgraph-3.5.0b1/src/jpgraph_line.php");
 
//saatnya memecah data $x_ dan $y_ menjadi array
//karena data pertama adalah kosong, maka koma di depan akan dihilangkan
 
$x_ = substr($x_,1,strlen($x_)-1); //data $x_ adalah dimulai setelah angka 1 dari variabel $x_ sejumlah seluruh data $x_ dikurangi 1 (karena yang 1 adalah koma tanpa isi didepan)
$y_ = substr($y_,1,strlen($y_)-1); //data $y_ adalah dimulai setelah angka 1 dari variabel $y_ sejumlah seluruh data $y_ dikurangi 1 (karena yang 1 adalah koma tanpa isi didepan)
 
 
$data_x = explode("," , $x_);
$data_y = explode("," , $y_);
 
//print_r( $data_x ); //unmcomment ini untuk ngetest
//print_r( $data_y ); //unmcomment ini untuk ngetest
 
 
$graph = new Graph(500,450);
$graph->SetScale("textlin");
 
 
 
$graph->title->Set('Grafik jumlah honor');
 
 
$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
 
 
$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels($data_x);
$graph->xgrid->SetColor('#E3E3E3');
 
 
 
 
$garis = new LinePlot($data_y);
$graph->Add($garis);
$garis->SetColor("#6495ED");
$garis->SetLegend('Rupiah');
 
 
$graph->Stroke();
 
 
 
?>

Grafik yang dihasilkan seperti ini kira kira

Selamat Mencoba, semoga sukses.. Silakan bertanya jika terdapat kesalahan disini atau perlu ditanyakan, siap saya jawab. Gratis kok!

Kamis, 19 April 2012

[First Aid] JPGraph Error 25128: The function imageantialias() is not available in your PHP installation

http://bimosaurus.com/2012/04/19/first-aid-jpgraph-error-25128-the-function-imageantialias-is-not-available-in-your-php-installation


Pesan ini sering muncul ketika kita koding grafik: JPGraph Error 25128: The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version

Pesan ini cukup jelas. Yaitu fungsi imageantialias() yang terdapat pada JPGraph tidak berfungsi dengan benar. Dalam pesan error juga telah dijelaskan : Silakan gunakan GD Version bawaan PHP dan bukan berbeda versi dengan bawaan PHP.
Langkah paling bagus ya, kita remove GD dan PHP, lantas kita install ulang secara bersama. Hal ini akan sangat enak jika kita menggunakan Linux jenis Debian/Ubuntu/Mint atau Fedora/RedHat/Centos. Karena mereka telah mendukung dependencies installation dengan apt-get dan yum

PERTOLONGAN PERTAMA / FIRST AID

Ada cara cepat untuk menyelesaikan error ini yaitu dengan melakukan editing file gd_image.inc.php. Lho apakah masalah hilang? Tidak, sebenarnya ketika dipandang versi gd dan php kurang pas, maka jika dipandang beresiko error, akan ditutup dengan pesan error tersebut oleh JPGraph. Kita akan bongkar hal itu. Buka file gd_image.inc.php yang terdapat dalam direktori src dalam jpgraph anda. Lantas editlah bagian ini:

 
function SetAntiAliasing($aFlg=true) {
$this->use_anti_aliasing = $aFlg;
if( function_exists('imageantialias') ) {
imageantialias($this->img,$aFlg);
}
else {
JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
}
}

Tutuplah dengan tanda // pada baris ke 110, yaitu bagian :

//JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')

Sehingga menjadi seperti berikut

 
function SetAntiAliasing($aFlg=true) {
$this->use_anti_aliasing = $aFlg;
if( function_exists('imageantialias') ) {
imageantialias($this->img,$aFlg);
}
else {
// JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
}
}

Bukalah Grafik anda… Sim Salabim

Jumat, 01 Oktober 2010

[Gammu-SMS Gateway]Mengatasi Error Get SMS Corrupted by Phone

Bagi yang pernah ngoprek SMS Gateway dengan menggunakan Gammu, biasanya setelah berjalan, akan pernah mengalami hal-hal yang menjengkelkan dengan matinya fungsi SMS. Hal ini dapat terjadi karena banyak hal. Antara lain:
  1. File Log yang sudah terlalu besar
  2. Tabel dalam database gammu telah terlalu berat diakses
  3. Hal lain
Belakangan saya mendapatkan masalah sehubungan dengan matinya fungsi SMS. Matinya fungsi SMS ini dapat dirunut tiap blok. Proses pengecekan dapat dilakukan antara lain menggunakan langkah-langkah berikut:

  1. Cek pada tabel inbox pada database kerja gammu, jika terdapat sms masuk, seharusnya terdapat sms pada tabel tersebut
  2. Cek pada tabel outbox, cobalah kirim SMS dengan cara memasukkan record pada table outbox, pada field DestinationNumber dan TextDecoded
  3. Lihatlah pada log service gammu. Lokasi file log dapat dilihat pada file smsdrc. Apa bunyi errornya.
  4. Matikan service gammu, dan cobalah melakukan perintah operasional sms dengan secara manual dan nonservice, seperti gammu --identify, gammu --getallsms, gammu --sendsms. APa yang terjadi dan ceklah pada file log yang sudah ditentukan lokasinya pada gammurc
Error 60: Corrupted data returned by phone.
Kata-kata seperti ini akan biasa dihadapi oleh para system administrator SMS. JIka sudah pada masalah ini, maka SMS biasanya akan susah ditebak masuk tidaknya pada Database.
Dengan cara teknispun kita masih dapat merunut kesalahan yang terjadi. Kunci dalam hal ini adalah : Menggunakan AT Command.

AT Command pada Windows dapat diakses dengan cara Klik Start => Accessories =>Communication=>Hyperterminal

Untuk gambar proses penggunaan Hyperterminal akan saya paparkan kapan-kapan karena saya menggunakan Linux sehingga tidak dapat mengcapture..

AT Command pada Linux dapat menggunakan Minicom atau Cutecom. Tapi saran saya adalah menggunakan Minicom karena cutecom input masukannya agak kurang tepat untuk proses ganti baris. Perintah yang digunakan adalah :

minicom -s

Dengan demikian langsung masuk pada mode setup minicom untuk mengatur setting konfigurasi modem. Tentukan lokasi modem, biasanya untuk modem dengan USB port akan ter atach pada /dev/ttyUSB[x], contoh:

/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
/dev/ttyUSB3
dst

silakan dilihat pada

lsusb

dan sesuaikan dengan yang didapat dari

dmesg |grep USB

Lantas baudrate bisa didapatkan dari mana?

Gampang, silakan dilihat pada perintah

stty -F [device]

contoh

stty -F /dev/ttyUSB0

Berapakah angka bagian atas sendiri? Andapun dapat mengeset sesuai anda mau dengan cara seperti contoh berikut

stty ispeed [115200] ospeed [115200] -F /dev/ttyUSB0
atau
stty 115200 -F /dev/ttyUSB0

Setelah itu anda akan masuk pada minicom mode

Dan anda mulai dapat menggunakan AT COMMAND. Perintah yang harus anda gunakan hanya:

AT = untuk mengetahui apakah device dapat menerima perintah AT Command
AT+CREG? = Untuk mengetahui apakah device mendapatkan jaringan
AT+CPIN? = Untuk mengetahui apakah sistem Pin OK
AT+CMGL=1 = Untuk mengetahui SMS dalam bentuk ter - encode masuk atau tidak

Hanya itu.
JIka langkah-langkah tersebut anda dapatkan OK apalagi sampai mendapatkan jawaban pada sms, maka anda dapat katakan bahwa jaringan dan modem tidak bermasalah. Jadi dengan demikian biasanya masalah adalah pada :
  1. Kartu yang terlebih dulu berisi SMS
  2. Penempatan kartu yang tidak tepat
  3. Database outbox penuh
  4. Gammu file corrupt
Gambar nyusul, sekedar catatan dulu ah