Pengaruh Konfigurasi Safe_Mode on/off di PHP

Bagi developer aplikasi web yang menggunakan bahasa PHP, ada banyak pilihan bila menginginkan paket engine server yang terintegrasi dengan Apache dan MySQL, seperti WAMP dan XAMPP. Namun banyaknya paket yang ada ataupun kita install tersendiri antara ketiganya (Apache-PHP-MySQL) terkadang menjadi persoalan tersendiri, karena default setting dari masing-masing paket yang berbeda. Hal ini saya alami ketika aplikasi penjualan yang saya buat menggunakan PHP, dan mengeluarkan report berupa file excel tiba-tiba mengeluarkan report excel yang tertulis “…the script whose uid 1199 is not allowed to access /tmp…”, padahal sebelumnya normal saja.

 Setelah mencari kesana-kemari, mbah Google memberikan wangsit, bahwa kejadian tersebut dapat terjadi karena setting “safe_mode” pada kondisi “on” pada konfigurasi “php.ini” file. Apabila kita menggunakan local server, kita tinggal mencari file php.ini dan mengganti setting “safe_mode” menjadi “off” seperti pada gambar dibawah.

Persoalan menjadi sedikit berbeda ketika kita berada di server publik/hosting. Karena berbagai alasan, administrator server belum tentu bersedia mengganti konfigurasi tersebut menjadi sesuai seperti keinginan kita. Lalu bagaimana?

 Pada kasus yang saya alami, saya menggunakan xlsClass untuk membuat report berupa excel. Menurut mbah Google (lagi), hal ini terjadi karena server tidak mengijinkan script php untuk membuat file temporary di folder “/tmp”, maka yang bisa kita lakukan adalah :

  • buat folder “tmp” pada folder xlsClass, dan buatlah aksesnya menjadi writeable dan readable

  • buka file “OLEwriter.php” pada folder xlsClass, karena file ini yang berisi script yang memuat pembuatan folder /tmp.

  • Buang tanda “/” seperti tanda panah pada gambar dibawah. Ini akan membuat file temporary yang dibuat menuju folder temporary yang baru kita buat, dan report excel akan kembali normal.

Advertisements

Aplikasi Penjualan Menggunakan PHP Point of Sale

Bingung mencari aplikasi penjualan berbasis ritel atau toko? Bingung menggunakan aplikasi penjualan/point of sale berbayar? Mungkin anda bisa mencoba PHP Point of Sale. Aplikasi freeware berbasis web yang dibangun dengan script PHP dan database MySQL ini ringan dan simple dalam penggunaannya. Walaupun tidak mengharuskan penggunanya menguasai PHP dan MySQL, namun dalam proses instalasinya tetap mengharuskan kita untuk merubah sedikit script PHP didalamnya. Berikut adalah langkah-langkah instalasi dan penggunaannya. Diasumsikan anda sudah men-download PHP Point of Sale dan sudah memiliki Apache-PHP-MySQL dalam komputer anda :

  • Buatlah database kosong pada MySQL, misalnya “phppos”
  • Extract file download dan tempatkan pada directory web server anda, misal “/phppos”
  • Pada directory /application/config, rename-lah file “database.php.tmpl” menjadi “database.php” dan editlah script-nya (bisa menggunakan notepad)

  • Tempatkan username database pada bagian “username” diantara tanda petik (“”)
  • Tempatkan password database pada bagian “password” diantara tanda petik (“”)
  • Tempatkan nama database pada bagian “database” diantara tanda petik (“”)

  • Import-lah table yang disertakan pada folder “database” pada database yang dibuat sebelumnya (dalam contoh ini saya menggunakan phpMyAdmin)

  • Proses instalasi selesai. Bukalah browser dan ketik pada url “http://localhost/phppos
  • Login window muncul, ketik username : admin, password : pointofsale. Username dan password ini dapat diubah setelah anda berhasil login

  • Sebelum memulai proses entry transaksi penjualan, anda diharuskan meng-entry supplier, customer, dan item barang dan pembelian terlebih dahulu
  • Anda juga dapat mengkonfigurasi identitas toko dan membuat user baru dengan batasan akses sesuai level user.
  • Secara default, mata uang yang digunakan adalah US dollar ($), namun kita dapat merubah sesuai keinginan. Bukalah file “currency_helper.php” pada folder “/helper” dan edit isinya.
  • Gantilah tanda “$” (pada baris ke-6 dan ke-10) dengan “Rp.” dan reload aplikasinya.

Integrasi Script PHP ke Joomla 1.5 dengan Plugin Sourcerer

Bila ada pooling mengenai CMS apa yang paling populer dan banyak dipergunakan, mungkin Joomla ada pada urutan teratas. CMS Open Source ini dikenal karena selain gratis juga karena banyak komunitas dan forum yang mendiskusikannya. Bagi para developer web yang menggunakan PHP dan ingin mengintegrasikannya script PHP tak usah bingung. Joomla kaya akan plugin yang memungkinkan kita untuk melakukan hal tersebut. Salah satu plugin untuk itu adalah Sourcerer. Plugin ini memungkinkan kita untuk menulis script PHP pada bagian artikel dari Joomla.

Berikut adalah contoh untuk mengintegrasikan script PHP dengan Joomla 1.5 (diasumsikan anda sudah menginstall Joomla, dalam hal ini Joomla versi 1.5.x) :

  • setelah selesai, buka Joomla dan masuk ke administrator
  • pada menu “extension”, klik menu “install/uninstall”
  • browse direktori dimana file download Sourcerer berada
  • klik button “upload file & install”
  • setelah install berhasil, aktifkankan sourcerer melalui menu “extenstion”, pilih “plugin manager”, lalu “enable”-kan “System Sourcerer”

Pada tahap ini plugin tersebut sudah aktif dan kita sipa untuk menulis artike berupa script PHP. Kita akan mencoba sebagai berikut :

  • Buat artikel baru melalui menu “Site”, pilih “Control Panel”. Kemudian klik “New Article”.
  • Pada bagian bawah dari editor article akan muncul button baru Sourcerer.

  • klik button sourcerer, akan muncul window pop-up.

  • tempatkan script PHP pada bagian bertuliskan “// You can place PHP like this”.
  • klik button “insert” di pojok kanan atas untuk menyimpan hasilnya.
  • publish artikel Joomla seperti biasa, dan lihat hasilnya

Sumber :

http://extensions.joomla.org/extensions/5051/details

Membuat Drop-down Combo dari MySQL di PHP

Membuat Drop-down Combo dari MySQL di PHP

Dalam proses pengisian sebuah form ada banyak komponen dalam proses entry data, misalnya text, radio button, check-box dan drop-down combo. Drop-down combo digunakan sebagai komponen entry apabila data yang akan kita entry-kan sudah didefinisikan sebelumnya dan jumlahnya banyak, misalnya lebih dari 5. Salah satu penggunaan drop-down combo adalah memilih nama negara, nama kota, jenis barang dan lain-lain.

Dalam trik ini kita akan membuat drop-down combo dimana kita bisa memilih nama bulan tertentu. Data untuk drop-down combo ini diambil dari data MySQL, sehingga sifat data bisa menjadi dinamis (bisa ditambah atau dikurangi). Nilai kembali (return value) dari fungsi drop-down combo ini adalah ’01’ bila kita memilih bulan Januari, ’02’ bila kita memilih bulan Februari, demikian dan seterusnya. Kita juga bisa memberikan pilihan “SEMUA” dan mempunyai nilai kembali ‘0’ pada pilihan teratas dari drop-down combo tersebut. Script ini diambil dari planet-source-code.com dengan beberapa modifikasi.

Buatlah database dengan nama “db_test”, lalu buatlah table dengan statement SQL sebagai berikut :

  • CREATE TABLE `tbl_bln` (`Bln` varchar(2), `NmBln` varchar(15), PRIMARY KEY (`Bln`)

Isilah data dengan statement sebagai berikut :

  • INSERT INTO `tbl_bln` VALUES (’01’, ‘Januari’), (’02’, ‘Februari’), (’03’, ‘Maret’), (’04’, ‘April’), (’05’, ‘Mei’), (’06’, ‘Juni’), (’07’, ‘Juli’), (’08’, ‘Agustus’), (’09’, ‘September’), (’10’, ‘Oktober’), (’11’, ‘November’),(’12’, ‘Desember’)

Ini adalah script dari file PHP :

<?
// fungsi koneksi database
function open_connect() {
// sesuaikan nama database, username dan password dengan server yang ada
$host=”localhost”;
$usrname=”root”;
$usrpwd=””;
$dbname=”db_test”;
$link=mysql_connect($host,$usrname,$usrpwd) or die (“Database tidak dapat
dihubungkan!”);
mysql_select_db($dbname,$link);
return $link;
}
//fungsi drop-down combo
function dd_combo($nama,$sql,$cur){
$qry=mysql_query($sql);
$combo='<select name=’.$nama.’ onChange=”form1.submit();”>’;
// aktifkan 1 baris statement di bawah bila menghendaki pilihan ‘SEMUA’ muncul di drop-down combo
// $combo.='<option value=”0″>Semua</option>’;
while($res=mysql_fetch_row($qry)){
$combo.='<option value=”‘.$res[0].'”‘;
if($res[0]==$cur) $combo.=’ selected’;
$combo.=’>’.$res[1].'</option>’;
}
$combo.='</select>’;
return $combo;
}
//mengkoneksikan database
$link=open_connect();
//ambil variabel KdBln dari entry form
$strKdBln=$_POST[“strKdBln”];
$seenform=$_POST[“seenform”];
//bila form belum terisi, silahkan diisi
if ($seenform!=”y”):
echo “<form name=\”form_dd\” action=\”form_dd.php\” method=\”post\”>
<input type=\”hidden\” name=\”seenform\” value=\”y\”>”;
$sql=”SELECT * FROM tbl_bln ORDER BY Bln”;
echo dd_combo(‘strKdBln’,$sql,$strKdBln);
echo “&nbsp<input type=\”submit\” value=\”Pilih\”>
</form>”;
else :
// bila form sudah submit, tampilkan variabel return value
print “Hasil pilihan adalah : “.$strKdBln;
endif ;
mysql_close($link);
?>

sumber : planet-source-code.com

Membuat Grafik dari PHP MySQL dengan Library JPGraph

Membuat tampilan grafik dengan PHP dari data MySQL tidak sesulit yang diperkirakan. Salah satu hal yang membuat mudah karena adanya library “JPGraph”. Script Library ini dapat di download di http://hem.bredband.net/jpgraph/jpgraph-1.27.tar.gz. File dengan ukuran sebesar 4.5 Mb ini terbagi atas dokumentasi program, contoh, dan library-nya. Pada folder ‘Examples’ kita dapat melihat banyak contoh-contoh script PHP untuk membuat bentuk-bentuk grafik yang kita inginkan. Dalam contoh script di bawah ini kita akan mencoba membuat grafik omzet penjualan barang berbentuk batang secara horizontal. Diasumsikan anda sudah mempunyai table ‘t_jual’ dengan struktur ‘customer’ (nama customer) dan ‘jual’ (jumlah penjualan).

<?php
// meng-include file library
include (“../jpgraph/jpgraph.php”);
include (“../jpgraph/jpgraph_bar.php”);

// buka koneksi ke database
function open_connect() {
$host=”localhost”;
$usrname=”root”;
$usrpwd=””;
$dbname=”main_db”;
$link=mysql_connect($host,$usrname,$usrpwd) or die (“Database tidak dapat
dihubungkan!”);
mysql_select_db($dbname,$link);
return $link;
}

$sqlstr=”SELECT t_jual.* FROM t_jual
ORDER BY customer”;
$link=open_connect();
$qrydtl=mysql_query($sqlstr,$link) or die (“Invalid Query”);
while($rowdtl=mysql_fetch_object($qrydtl)) {
$datay[]=$rowdtl->jual;
$datax[]=$rowdtl->customer;
}

// lebar frame grafik
$width=800;
// pakai baris dibawah bila tinggi frame grafik fixed
//$height=480;
// pakai baris dibawah bila tinggi frame grafik mengikuti banyaknya data
$height=(mysql_num_rows($qrydtl))*30;

// Parameter awal grafik
$graph = new Graph($width,$height,’auto’);
$graph->SetScale(“textlin”);

// set parameter ke ‘true’ bila grafik menggunakan frame
$graph->SetFrame(true);

// grafik diputar 90 derajat agar ditampilkan secara horizontal
$graph->Set90AndMargin(180,10,60,10);

// set warna margin
$graph->SetMarginColor(‘lightblue’);

// buat box di sekeliling area
$graph->SetBox();

// pakai baris dibawah bila area grafik ingin berwarna gradient
//$graph->SetBackgroundGradient(‘white’,’lightblue’,GRAD_HOR,BGRAD_PLOT);

// set judul grafik
$graph->title->Set(“Grafik Penjualan”);
$graph->title->SetFont(FF_VERDANA,FS_BOLD,10);
$graph->subtitle->Set(“Value dalam jutaan”);

// set nama customer di x-axis
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,8);

// set label margin
$graph->xaxis->SetLabelMargin(10);

// posisi label X-axis
$graph->xaxis->SetLabelAlign(‘right’,’center’);

// Add some grace to y-axis so the bars doesn’t go
// all the way to the end of the plot area
$graph->yaxis->scale->SetGrace(20);

// pakai baris dibawah bila y-axis ditampilkan
//$graph->yaxis->Hide();

// memulai grafik
$bplot = new BarPlot($datay);
// pakai baris dibawah bila menginginkan grafik berbayang-bayang
//$bplot->SetShadow();

//You can change the width of the bars if you like
$bplot->SetWidth(0.75);

// warna grafik gradient ungu
//$bplot->SetFillGradient(‘darkred’,’orange’,GRAD_HOR);
$bplot->SetFillGradient(“navy”,”#EEEEEE”,GRAD_LEFT_REFLECTION);

// tampilkan value pada tiap grafik
$bplot->value->Show();
$bplot->value->SetFont(FF_ARIAL,FS_BOLD,10);
$bplot->value->SetAlign(‘left’,’center’);
$bplot->value->SetColor(“black”);
$bplot->value->SetFormat(‘%.1f’);
// set parameter ‘max’ bila value ada di puncak grafik
//$bplot->SetValuePos(‘max’);

// set warna frame grafik
$bplot->SetColor(“white”);

// menambahkan bar pada grafik
$graph->Add($bplot);

// teks tambahan pada grafik
/*
$txt = new Text(‘Note: value dalam juta’);
$txt->SetPos(190,399,’center’,’bottom’);
$txt->SetFont(FF_ARIAL,FS_NORMAL,8);
$graph->Add($txt);
*/
// menggambar grafik
$graph->Stroke();
?>

Membuat Report Microsoft Excel/OpenOffice Calc dari PHP

Beberapa cara untuk membuat report PHP dari database MySQL adalah dengan men-generate ke file Excel atau PDF. Untuk membuat file Excel dari PHP-MySQL bisa menggunakan “classXls” yang dibuat oleh Xavier Noguer <xnoguer@rezebra.com>. Class ini sangat mudah di-implementasikan di aplikasi web kita dan yang penting, class ini bersifat free dan opensource. Class ini dapat didownload di http://tauco.web.id/download/csp-excel-library.zip, yang terdiri dari file-file “BIFFwriter.php”,”Format.php”, “OLEwriter.php”, “Parser.php”, “Workbook.php” dan “Worksheet.php”. berikut adalah contoh script PHP-nya :

<?php
//memasukkan class ke dalam script
require_once(‘../xlsClass/OLEwriter.php’);
require_once(‘../xlsClass/BIFFwriter.php’);
require_once(‘../xlsClass/Worksheet.php’);
require_once(‘../xlsClass/Workbook.php’);
//koneksi database, sesuaikan dengan host,username dan password database anda
function open_connect() {
$host=”localhost”;
$usrname=”root”;
$usrpwd=””;
$dbname=”xxx_db”;
$link=mysql_connect($host,$usrname,$usrpwd) or die (“Database tidak dapat
dihubungkan!”);
mysql_select_db($dbname,$link);
return $link;
}
function HeaderingExcel($filename){
header(“Content-type:application/vnd.ms-excel”);
header(“Content-Disposition:attachment;filename=$filename”);
header(“Expires:0”);
header(“Cache-Control:must-revalidate,post-check=0,pre-check=0”);
header(“Pragma: public”);
}
//Tempatkan query anda disini (harus “SELECT”)
$sql=”SELECT * FROM xxx”;
$link=open_connect();
$qry=mysql_query($sql,$link) or die (“Invalid Query”);
//nama file yang dihasilkan adalah ‘xxx.xls’
HeaderingExcel(‘xxx.xls’);
//membuat area kerja
$workbook=new Workbook(“-“);
//class untuk mencetak tulisan besar dan tebal
$fBesar=& $workbook->add_format();
$fBesar->set_size(14);
$fBesar->set_bold();
//class untuk mencetak tulisan tanpa border (untuk judul laporan)
$fList=& $workbook->add_format();
$fList->set_border(0);
//class untuk mencetak tulisan dengan border dan ditengah kolom (untuk judul kolom)
$fDtlHead=& $workbook->add_format();
$fDtlHead->set_border(1);
$fDtlHead->set_align(“center”);
//class untuk mencetak tulisan dengan border (untuk detil laporan bernilai string)
$fDtl=& $workbook->add_format();
$fDtl->set_border(1);
//class untuk mencetak tulisan dengan border (untuk detil laporan bernilai numerik)
$fDtlNumber=& $workbook->add_format();
$fDtlNumber->set_border(1);
$fDtlNumber->set_align(“right”);
$fDtlNumber->set_num_format(3);
//class untuk men-zoom laporan 75%
$worksheet1= & $workbook->add_worksheet(“Sheet 1″);
$worksheet1->set_zoom(75);
//class untuk men-set page orientation ke landscape
$worksheet1->set_landscape(75);
//class untuk mengatur margin kertas
$worksheet1->set_margin_left(0.2);
$worksheet1->set_margin_top(0.2);
$worksheet1->set_margin_right(0.5);
$worksheet1->set_margin_bottom(0.5);
//class untuk men-set jenis kertas (1=letter, 9=A4)
$worksheet1->set_paper(1);
//class untuk menyembunyikan gridline
$worksheet1->hide_gridlines();
//class untuk men-set area print (baris mulai, kolom mulai, baris akhir, kolom akhir) dimulai dari 0
$worksheet1->print_area(0,0,40,8);
//mengatur lebar kolom (baris, kolom, lebar kolom)
//sesuaikan dengan kolom pada table anda
$worksheet1->set_column(0,0,3);
$worksheet1->set_column(0,1,30);
$worksheet1->set_column(0,2,15);
$worksheet1->set_column(0,3,25);
$worksheet1->set_column(0,4,25);
$worksheet1->set_column(0,5,25);
$worksheet1->set_column(0,6,30);
$worksheet1->set_column(0,7,5);
//sesuaikan dengan judul kolom pada table anda
$worksheet1->write_string(0,3,”DAFTAR DETIL DELIVERY ORDER”,$fBesar);
$worksheet1->write_string(1,0,”Periode : “,$fList);
$worksheet1->write_string(2,0,”No.”,$fDtlHead);
$worksheet1->write_string(2,1,”Customer”,$fDtlHead);
$worksheet1->write_string(2,2,”Tgl / No.”,$fDtlHead);
$worksheet1->write_string(2,3,”Item”,$fDtlHead);
$worksheet1->write_string(2,4,”Dim”,$fDtlHead);
$worksheet1->write_string(2,5,”HS / Warna”,$fDtlHead);
$worksheet1->write_string(2,6,”Keterangan”,$fDtlHead);
$worksheet1->write_string(2,7,”Qty”,$fDtlHead);
//looping record dimulai dari baris ketiga
//sesuaikan dengan field pada table anda
$baris=3;
$nomor=1;
while($rowdtl=mysql_fetch_object($qrydtl)) {
$worksheet1->write_string($baris,0,$nomor,$fDtlHead);
$worksheet1->write_string($baris,1,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,2,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,3,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,4,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,5,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,6,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,7,$rowdtl->xxx,$fDtlHead);
//$baris=$baris+2;
$baris=$baris+1;
$nomor=$nomor+1;
}
$workbook->close();
?>

Pass PHP Variabel

Melewatkan variable (pass) pada pemrograman PHP umumnya ada pada pengisian form. Yaitu pengisian pada form HTML dan menggunakan metode “GET” atau “POST” variable tersebut dikirim ke file PHP untuk diolah, baik itu disimpan ke Database semisal MySQL atau untuk perhitungan yang lain. Namum seringkali variable dari form tersebut tidak berisi nilai walaupun kita sudah mengentry-nya, dan hal ini kadangkala terjadi. Seperti contoh sebagai berikut :

form_cust.html
<form action=”form_cust.php” method=”post”>
Nama Customer :<input type=”text” name=”nmcust” size=”30″ maxlength=”30″ value=””>
<input type=”submit” value=”submit”>
</form>

form_cust.php
<?
print “Hai nama anda adalah $nmcust”;
?>

Maka kita akan memodifikasi file form_post.php menjadi seperti berikut ;

<?
$nmcust = $_POST[“nmcust”];
print “Hai nama anda adalah $nmcust”;
?>

Variabel nama yang tadinya tidak muncul pada form_post.php akan muncul