Menghilangkan Pesan Error “Notice: Undefined Variable”

Salah satu error yang sering muncul dalam programming web dengan PHP adalah

Notice: Undefined Variable

Seperti biasa, kita akan bahas dulu penyebab pesan error ini. Pesan ini muncul karena Variabel yang anda proses dalam satu script, tidak terdefinisikan terlebih dulu. Proses ini membuat script anda tidak mengenali variabel tersebut. Lho padahal anda merasa pernah membuat variabel di script lain dan script tersebut diinclude pada script yang error tersebut. Bagaimanakah? Error memang bisa dihilangkan begitu saja dengan membiarkan error tetap terjadi. Namun sebaiknya kita mengetahui penyebabnya, dan mengantisipasi agar errornya memang tidak terjadi. Untuk menghilangkan pesan error, dapat saja kita tembak pesan berikut dengan menambahan pada awal script:

ini_set("display_errors","Off");

atau dengan cara mengganti value display_errors di php.ini dengan On diganti Off.

Penyebabnya antara lain adalah sebagai berikut:

  • Kita bisa cek di konfigurasi PHP.INI. Anda tentunya akan melihat posisi value
    register_globals="Off"

    , dimana artinya semua variabel harus terregister dengan benar pada script masing-masing.

  • Anda juga bisa melihat pada bagian error_reporting. Kemungkinan value akan berisi seperti ini
    error_reporting(E_STRICT)

.

Penyelesaiannya adalah ada tiga hal, jika bukan program anda yang menyesuaikan konfigurasi PHP, ya konfigurasi PHP yang diubah menyesuaikan dengan program anda. Atau, menyisipkan pemanggilan konfigurasi PHP dalam script programming. Antara lain dapat kita lakukan seperti berikut:

  • Mengganti value php.ini yang berisi
    register_globals=Off

    menjadi

    register_globals=On

    dengan resiko bahwa seluruh koding dengan PHP di mesin anda akan harus terkena aturan ini.

  • Mengganti value php.ini yang berisi
    error_reporting= E_STRICT

    menjadi

    error_reporting= E_ALL & ~E_NOTICE

    dengan resiko bahwa seluruh koding dengan PHP di mesin anda akan harus terkena aturan ini.

  • Menuliskan di awal script anda penulisan konfigurasi php.ini yang berlaku hanya untuk script anda dengan seperti ini
    ini_set("register_globals","On");

    resiko hanya berlaku untuk satu script anda.

  • Menuliskan di awal script anda penulisan konfigurasi php.ini yang berlaku hanya untuk script anda dengan seperti ini
    error_reporting(E_ALL ^ E_NOTICE);

    resiko hanya berlaku untuk satu script anda.

Dua langkah terakhir ini cukup akurat biasanya.

[Contoh 3] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

Posting lalu, https://blogit.bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ telah ditunjukkan bagaimana caranya membuat sebuah laporan download Excel dengan menggunakan php_writeexcel. Kali ini akan dilanjutkan dengan bagaimana menuangkan data dari MySQL database ke dalam file berformat XLS atau spreadsheet. Berikut sebuah contoh, misal kita memiliki sebuah tabel sebagai berikut, bernama tabel pegawai dalam sebuah database.

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

Tabel dalam database MySQL tersebut akan kita tuangkan dalam sebuah file Excel dengan nama : laporan-tanggal-dd-mm-yy.xls.
Maka kita akan membuat sebuah script seperti berikut:

require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";

if(mysql_connect( "localhost","user","pass" )){
   mysql_select_db( "kepegawaian" );
}


$date = date('Y-m-d');
$fname = tempnam("/tmp", "laporan-tanggal-$date.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet

//tulis blok titel tabel

$worksheet->write(0, 0,  "Data Pegawai PT anu");
$worksheet->write(2, 0,  "NIP");
$worksheet->write(2, 1,  "Nama");
$worksheet->write(2, 2,  "Honor");
$worksheet->write(2, 3,  "Status Ambil");
//title selesai

//mari query
$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
$i = 3; //ingat bahwa kolom sebenarnya adalah nilai i ditambah 1, karena dimulai dengan nol
while( $r = mysql_fetch_array( $q ) ){
   $worksheet->write($i,0,$r['nip']);
   $worksheet->write($i,1,$r['nama']);
   $worksheet->write($i,2,$r['honor']);
   $worksheet->write($i,3,$r['status_ambil']);
   $i++;
}
$workbook->close(); //selesai tulis

//tuang data
header("Content-Type: application/x-msexcel; name=\"laporan-tanggal-$date.xls\"");
header("Content-Disposition: inline; filename=\"laporan-tanggal-$date.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file

Hasilnya kira-kira dapat diambil disini : https://blogit.bimosaurus.com/demo/export2.php. Format ini adalah setara dengan MS-Excel 2000/XP.
Posting selanjutnya adalah bagaimana memasukkan data dari XLS/Excel ke dalam database MySQL.. Tunggu posting tersebut
Semoga berguna.

[Contoh 1] Membuat Laporan Export Data dari MySQL ke Excel dengan PHP (no-pear)

Salah satu yang diperlukan dalam sistem informasi adalah pelaporan dan pengemasan data. Data yang berasal dari database, biasanya perlu dikonversi ke lain bentuk agar dapat diterima sebagai standard laporan pihak lain dalam bentuk standard dokumen. Salah satu bentuk standard dokumen adalah Excel. Sebelum ini juga pernah dipaparkan tentang pelaporan data dalam bentuk PDF (Portable Document Format). Excel atau worksheet dipercaya sebagai standard pelaporan, bahkan hampir semua program perkantoran (office) telah melakukan pembuatan dokumen yang standard dengan Workbook/Worksheet ini. Permasalahan para web developer salah satunya adalah melakukan exporting ke dalam format excel.

Dalam PHP, sebenarnya telah terdapat library khusus untuk melakukan proses data yang berkaitan dengan excel, yaitu dengan menggunakan fasilitas PEAR. Proses installasi PEAR sendiri kadang juga melalui masalah yang tidak kalah sulitnya dengan pembuatan script export SQL to XLS sendiri dimana data dapat di download dalam format excel. Oleh karena itu muncul beberapa cara untuk melakukan export data ke dalam bentuk excel.

Langkah paling mudah untuk menjadikan sebuah data ke dalam bentuk excel adalah dengan cara menyusun data sedemikian rupa hingga terdapat tabel dan baris, kemudian mengarahkan agar data tergenerate sebagai excel. Beberapa hal yang perlu diketahui adalah bahwa pindah baris dapat menggunakan perintah “\n”, dan tabel dapat langsung terbentuk ke dalam cell.

Contoh 1.

$title = "Contoh Excel Export";

$content = "

namabimosaurus
alamatwonosobo
nohp080808080
"; $content = $title . "\n" . $content; header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); print $content;

 

Contoh hasilnya bisa diambil di sini

 

Contoh 2.

Contoh ini melibatkan data MySQL. Misal tabel yang ada adalah seperti berikut :

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


if( mysql_connect("localhost","user","password") ){
mysql_select_db("kepegawaian");
}


$title = "Exporting Sederhana dari SQL ke XLS";
$content_header = "";
$content_footer = "
NIPNamaJumlah HonorStatus Terima
"; $content_dalam = ""; $sql = "SELECT * FROM `pegawai`"; $q = mysql_query( $sql ); while( $r=mysql_fetch_array( $q ) ){ $data = "".$r['nip']."".$r['nama']."".$r['honor']."".$r['status_ambil'].""; $content_dalam = $content_dalam ."\n". $data; } $content_sheet = $title . "\n" . $content_header . "\n" . $content_dalam . "\n" . $content_footer; header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); print $content_sheet;

 

Hasil dari contoh ini dapat diambil di sini

 

Nah, untuk sampai sini cukup mudah bukan? Hanya saja, format yang dihasilkan oleh model exporting ini tidak standard. Adakalanya ketika terdownload justru akan muncul script tabelnya. Untuk kondisi yang cukup standard, tunggu posting berikutnya..

 

Semoga berguna

Selanjutnya baca ini https://blogit.bimosaurus.com/2012/04/09/contoh-2-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear

[Contoh] Membuat Laporan PDF dengan PHP dan Database MySQL

Jika pada posting lalu (https://blogit.bimosaurus.com/2012/04/08/contoh-membuat-laporan-pdf-dengan-php/) telah terpaparkan tentang pembuatan laporan download PDF dengan menggunakan PHP, kali ini akan dibahas bagaimana menyusun reporting dengan PHP dalam format PDF yang susunan datanya diambil dari database MySQL. Tentu saja hal ini akan sangat berguna bagi para developer sistem informasi, karena pada umumnya sistem informasi harus memiliki proses reporting data. Proses pembuatan reporting PDF dengan menggunakan PHP ini dapat dilakukan dengan menggunakan FPDF seperti posting sebelumnya. Hanya saja prosesnya akan ditambah dengan proses pengambilan data dari database server MySQL. Proses ini tidak sulit, karena hanya menggabungkan pengambilan data, dan selanjutnya menampilkannya dalam bentuk PDF. Itu saja. Berikut contoh pengambilan data.
Katakan, kita memiliki tabel data pegawai dengan format seperti berikut:

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

Dengan format data demikian, maka pengambilan data dari dalam tabel dapat dilakukan dengan sintaks MySQL demikian :

SELECT * FROM `pegawai`

Begitu pula, sintaks ini akan dijadikan Query yang akan dieksekusi oleh PHP. Perkiraan Commandnya adalah sebagai berikut:

$sql      = "SELECT * FROM `pegawai`";
$query  = mysql_query( $sql );
while( $result=mysql_fetch_array( $query ) ){

//tampilkan

}
//telah diedit, hasil koreksi dari mas boyan_13@yahoo.co.id... tx

 

Dengan melakukan kombinasi perintah dengan pembuatan reporting PDF, maka dapat dibuat script seperti berikut:


ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');

if( mysql_connect( "localhost","reporting","reporting" ) ){
   mysql_select_db( "kepegawaian" );
}else{
   echo "maaf, data gagal";
}

class PDF extends FPDF {

function Header() {
$this->Image('logo_print.jpg',2,1,2);

	$this->SetFont('Arial','B',11);

	$this->Cell(0,0.75,' TUKANG HRD ',0,0,'C');

	$this->Ln();

	$this->SetFont('Arial','B',14);

	$this->Cell(0,0.75,'TOKO X',0,0,'C');

	$this->Ln();

	$this->SetFont('Arial','',9);

	$this->Cell(0,0.5,'Jl. Soekarno Hatta KM 100 Antar Bermuntah Telp (01234)123456',0,0,'C');

	$this->Ln();

	$this->Ln();
	$this->SetFont('Arial','',14);
	$this->Line(1, 4, 21, 4);

   $this->Ln();
	$this->SetFont('Arial','B',11);
   $this->Cell(0,0.75,'HRD',0,0,'C');

	$this->Ln();
}

}

	

$pdf=new PDF('P','cm','Letter');

$pdf->Open();

$pdf->AliasNbPages();

$pdf->AddPage();

$pdf->SetMargins(1.5,1,1.5);

$pdf->SetFont('Arial','B',12);


//membuat kop tabel
$x=$pdf->GetY();

$pdf->SetY($x+1);

$pdf->SetFont('Courier','B',10);

$pdf->Cell(5,0.5,'NIP',1,0,'L');
$pdf->Cell(5,0.5,'Nama',1,0,'L');
$pdf->Cell(5,0.5,'Honor',1,0,'L');
$pdf->Cell(5,0.5,'Status Ambil',1,0,'L');

//query dan arraying
$sql   ="SELECT * FROM `pegawai`";

$query = mysql_query( $sql );



while( $result= mysql_fetch_array( $query )){

   $nip = $result['nip'];
   $nama = $result['nama'];
   $honor = $result['honor'];
   $status_ambil = $result['status_ambil'];

   $pdf->SetFont('Courier','B',10);

   $pdf->Cell(5,0.5,'$nip',1,0,'L');
   $pdf->Cell(5,0.5,'$nama',1,0,'L');
   $pdf->Cell(5,0.5,'$honor',1,0,'L');
   $pdf->Cell(5,0.5,'$status_ambil',1,0,'L');
}


$pdf->Output();

Berikut kira-kira hasilnya akan seperti demikian : https://blogit.bimosaurus.com/demo/reporting.php

Semoga berguna

[Contoh] Membuat Laporan PDF dengan PHP

Salah satu bentuk output yang dibutuhkan oleh pengguna layanan web adalah sebuah laporan download dalam bentuk PDF. PDF (portable document format) adalah bentuk dokumen siap print. Dokumen berformat PDF sendiri dapat dibentuk dari PDF. Seperti pada posting sebelum ini telah dikenalkan sedikit mengenai fungsi library FPDF, dimana dengan beberapa command PHP dapat membuat dokumen berformat PDF. Berikut di sini akan dipaparkan beberapa perintah penting dengan satu contoh pembuatan laporan PDF dengan PHP.

Langkah pertama adalah, kita pastikan dulu bahwa library fpdf telah diinclude dengan baik dengan perintah semacam ini:

 

ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');

Selanjutnya kita perlu melakukan pemanggilan constructor Class PHP bernama FPDF yang terdapat pada library.Command yang digunakan contohnya adalah :

$pdf = new FPDF($posisi_halaman,$satuan,$jenis_kertas);

dengan

$posisi_halaman berisi : P (Portrait/tegak) atau L (Landscape/mendatar). Jika tidak diisi akan berisi P
$satuan : pt (point), mm (milimeter), cm (centimeter), in (inchi). Jika tidak diisi akan berisi mm
$jenis_kertas : A3, 4, A5, Letter, Legal (Perbedaan kapital karakter akan berpengaruh)

 

Selanjutnya melakukan pemanggilan fungsi dasar Open(); dan dilanjutkan dengan pembukaan halaman.

$pdf->Open();
$pdf->AddPage();

 

Selanjutnya, kita dapat memasukkan materi / isi dari dokumen tersebut dengan memanfaatkan fungsi-fungsi berikut:
SetFont($jenis_font,$tebalmiring,$ukuran);

Contoh :

$pdf->SetFont('Arial','B','14');

 

tentunya dengan font yang telah ada dalam library fpdf kita masing-masing. Font ini dapat ditambah.

 

Image($lokasi_gambar,$jarak_cm_dari_kiri,$jarak_cm_dari_atas,$tinggi_gambar,$panjang_gambar);

Contoh :

$pdf->Image('images/koding1.jpeg',17,1,3,3);
$pdf->Image('images/koding2.jpeg',17,4,3,3);
$pdf->Image('images/koding3.jpeg',17,7,3,3);

Cell($panjang_sel,$tinggi_sel,$isi_sel,$keterangan_border,$berapa_spasi,$margin);

Contoh:

$pdf->Cell(9.5,2,'Percobaan pembuatan PDF',1,0,'L');

Spasi yang dibentuk oleh $berapa_spasi, akan sesuai dengan $berapa_spasix$tinggi_sel

Margin dapat berisi : L(Left) C(Center) dan R(Right)

Keterangan Border akan terdapat border jika berisi angka bukan 0.
Ln();

Perintah pindah baris

$pdf->Ln();

 

Output();

Adalah perintah tampilkan ke layar

$pdf->Output();

 

 

Berikut contoh lengkap satu script PHP dasar untuk membuat pencetakan berbentuk PDF:

ob_start();

define('FPDF_FONTPATH','libs/fpdf/font/');

require('libs/fpdf/fpdf.php');

   $pdf=new FPDF('P','cm','Letter');

   $pdf->Open();

   $pdf->AddPage();

   $pdf->SetFont('Arial','B',12);

   $pdf->Image('images/koding1.jpeg',17,1,3,3);
   $pdf->Image('images/koding2.jpeg',17,4,3,3);
   $pdf->Image('images/koding3.jpeg',17,7,3,3);

   $pdf->SetFont('Arial','B',20);
   $pdf->Cell(9.5,2,'Latihan membuat PDF',1,0,'L');
   $pdf->Ln();
   $pdf->SetFont('Arial','B',14);
   $pdf->Cell(9.5,2,'Oleh bimosaurus.com',0,0,'L');
   $pdf->Ln();

   $pdf->Output();

 

Hasilnya adalah sebagai berikut : https://blogit.bimosaurus.com/demo/pdf.php

FPDF dapat di download di situs aslinya fpdf.org atau di sini langsung KLIK

Untuk laporan lanjut dapat dilihat di sini https://blogit.bimosaurus.com/2012/04/09/contoh-membuat-laporan-pdf-dengan-php-dan-database-mysql