Pengucapan ayat-ayat gharib dalam Al Qur’an

Materi dibawah ini sebenarnya sudah didapat pada Rabu 11 Muharam 1438H lalu, & Alhamdulillah, akhirnya bisa selesai sekarang. Berikut hasilnya :
4-1
4-2
Sekian & semoga bermanfaat ^_^ …

Belajar, penting diingat, tugas kuliah

Advertisements

Buat Rekap excel menggunakan PHPExcel

Alhamdulillah… kali ini dapat kesempatan buat nulis lagi cacatan ilmu yang sudah didapat.
Tema kali ini adalah phpExcel, mulai dari membaca isi file berekstensi .xls sampai membuat rekap file berekstensi .xlsx

Lib yang digunakan untuk menghubungkan php dengan excel adalah phpExcel versi 1.8.0 yang bisa diunduh di https://phpexcel.codeplex.com. Cara penggunaannya cukup mudah, tinggal menyalin hasil ekstaksi file yang diunduh ke htdocs lalu mengaksesnya di file .php.

Contoh kasusnya adalah membuat rekap kehadiran 5 penjaga toko selama 5 hari kerja (hari kamis & jum’at libur) mulai 1-7 Dzulhijjah 1437H (3–9 September 2016).
Asumsi :

  • Penjaga harus berada di toko mulai jam 07.00 s/d 17.00 & jam istirahat siang = 11.30 – 13.00. toleransi keterlambatan adalah 15 menit.
  • Penjaga harus memenuhi jam kerja harian selama 8 ½ jam setelah dikurangi waktu istirahat.

Data absensi yang disediakan adalah (dalam file excel dengan nama “alhudur.xls”) :
rowdara
sheet2
Sheet pertama berisi daftar kehadiran & sheet kedua berisi parameter seperti yang sudah disebutkan pada bagian asumsi sebelumnya.
Langkah-langkahnya adalah :

  • Include file PHPExcel.php yang ada di lib; membaca isi file alhudur.xls dan menyimpan data kehadiran dalam array $rawAlhudur dan data parameter pada variable di php. Codenya:
//include PHPExcel library
require_once dirname(__FILE__) .'/PHPExcel_1.8.0_pdf/Classes/PHPExcel.php';

//baca alhudur:
try{
	$inputFileType = PHPExcel_IOFactory::identify('./alhudur.xls');
	$objReader = PHPExcel_IOFactory::createReader($inputFileType);
	$objPHPExcel = $objReader->load('./alhudur.xls');
} catch(Exception $e){
	die('Error loading file "' . pathinfo('./alhudur.xls', PATHINFO_BASENAME) . '": ' . $e->getMessage());
}

$rawAlhudur = Array();
foreach($objPHPExcel->getWorksheetIterator() as $worksheet){
	$highestRow = $worksheet->getHighestRow();
	if($objPHPExcel->getIndex($worksheet) == 0){ //daftar hadir di sheet pertama
		for ($row=2; $row<=$highestRow; ++ $row){ $nama = $worksheet->getCellByColumnAndRow(0,$row)->getValue();
			$waktu = $worksheet->getCellByColumnAndRow(1,$row)->getValue();
			$waktu = DateTime::createFromFormat("j/n/Y H:i",$waktu); // 13/3/2016 17:01
			$ket = $worksheet->getCellByColumnAndRow(2,$row)->getValue();
			
			$tgl = $waktu->format('d-m-Y');
			$jam = getFloatValueFromDateTime($waktu);
			
			$rawAlhudur[$nama.'_'.$tgl][] = array(
				'nama' => $nama, 'waktu' => $waktu, 'ket' => $ket, 'tgl' => $tgl, 'jam' => $jam
			);
		}
	} else if($objPHPExcel->getIndex($worksheet) == 1){ //parameter berada di sheet2
		$tglMulai = PHPExcel_Shared_Date::ExcelToPHPObject($worksheet->getCellByColumnAndRow(1,1)->getValue());
		$tglSelesai = PHPExcel_Shared_Date::ExcelToPHPObject($worksheet->getCellByColumnAndRow(1,2)->getValue());
		$jamHrsMasuk =  PHPExcel_Shared_Date::ExcelToPHPObject($worksheet->getCellByColumnAndRow(1,3)->getValue());
		$jamHrsPulang = PHPExcel_Shared_Date::ExcelToPHPObject($worksheet->getCellByColumnAndRow(1,4)->getValue());
		$menitToleransiTelat = $worksheet->getCellByColumnAndRow(1,5)->getValue();
		$menitIstirahat = $worksheet->getCellByColumnAndRow(1,6)->getValue();
		
		$jamMaxPlg = DateTime::createFromFormat('H:i', $jamHrsPulang->format('H:i'));
		$jamMaxPlg->add(new DateInterval('PT'.$menitToleransiTelat.'M'));
		$jamMaxDtg = DateTime::createFromFormat('H:i', $jamHrsMasuk->format('H:i'));
		$jamMaxDtg->add(new DateInterval('PT'.$menitToleransiTelat.'M'));
		$rehat = DateTime::createFromFormat('H:i', '0:0');
		$rehat->add(new DateInterval('PT' . $menitIstirahat . 'M'));
	
		$jamMaxDatang = getFloatValueFromDateTime($jamMaxDtg);
		$jamHrsMasuk = getFloatValueFromDateTime($jamHrsMasuk);
		$jamHrsPulang = getFloatValueFromDateTime($jamHrsPulang);
		$jamMaxPulang = getFloatValueFromDateTime($jamMaxPlg);
		$rehat = getFloatValueFromDateTime($rehat);
	}
}

 

  • Membuat fungsi getColNameFromNo yang mengembalikan nilai string nama kolom berdasarkan index kolom. Codenya :
    function getColNameFromNo($num){
    	$no = $num % 26;
    	$letter = chr(65+$no);
    	$num2 = intval($num / 26);
    	if($num2>0)
    		return getColNameFromNo($num2-1) . $letter;
    	else
    		return $letter;
    }
  • Membuat fungsi getFloatValueFromDateTime yang mengembalikan nilai float Time dari object DateTime. Codenya :
    function getFloatValueFromDateTime($dateTime){
    	$hasil = (float)(($dateTime->format('H') * 3600) + ($dateTime->format('i') * 60)) / 86400; //86400 = jum detik dlm 1hari
    	return $hasil;
    }
  • Mengurutkan daftar absensi tiap pegawai berdasarkan field waktu. Codenya:
    $allId = array_keys($rawAlhudur);
    	
    //Order data by tanggal :
    $kolomOrder = 'waktu';
    for($i=0; $i<count($allId); $i++){
    	usort($rawAlhudur[$allId[$i]], function($a, $b)use($kolomOrder){
    		if($a[$kolomOrder] == $b[$kolomOrder])
    			return 0;
    		return $a[$kolomOrder] < $b[$kolomOrder] ? -1 : 1;}
    	); 
    }
  • Membuat array baru $rekapAlhudur yang key-nya adalah nama dan isi datanya adalah data kehadiran per hari. Codenya:
    $rekapAlhudur = Array();
    for($i=0; $i<count($allId); $i++){
    	$tgl = DateTime::createFromFormat("d-m-Y H:i:s", $rawAlhudur[$allId[$i]][0]['tgl'].' 00:00:00'); 
    	$masuk=NULL; $keluar=NULL; $dtg=NULL; $plg=NULL;
    	$jum = count($rawAlhudur[$allId[$i]]);
    	for($j=0; $j<$jum; $j++){ //ngisi jam dtg & plg sebenarnya
    		if($j==0 && $rawAlhudur[$allId[$i]][$j]['ket']=='M')
    			$dtg = $rawAlhudur[$allId[$i]][$j]['jam'];
    		else
    			$plg = $rawAlhudur[$allId[$i]][$j]['jam'];
    	}
    	//ngisi jam masuk & keluar yg diakui
    	if($dtg!=NULL){
    		$masuk = $dtg;
    		if($dtg < $jamHrsMasuk) $masuk = $jamHrsMasuk; } if($plg!=NULL){ $keluar = $plg; if($masuk==NULL){ if($keluar >= $jamMaxPulang)
    				$keluar = $jamMaxPulang;
    		} else{
    			if($masuk <= $jamMaxDatang){ $telat = $masuk - $jamHrsMasuk; $maxJamPlg = $jamHrsPulang + $telat; if($keluar >= $maxJamPlg)
    					$keluar = $maxJamPlg;
    			} else{
    				if($keluar >= $jamMaxPulang)
    					$keluar = $jamMaxPulang;
    			}
    		}
    	}
    	//simpan di array baru
    	$rekapAlhudur[$rawAlhudur[$allId[$i]][0]['nama']][] = array(
    		'tgl' => $tgl, 'dtg' => $dtg, 'plg' => $plg, 'masuk' => $masuk, 'keluar' => $keluar
    	);
    }
    
    $allNama = array_keys($rekapAlhudur);
  • Membuat sheet baru dengan nama “Daftar Hadir” dan mengisinya dengan daftar kehadiran pegawai yang sudah diurutkan berdasarkan nama dan tanggal. Codenya:
    //Sheet3 : pivot table 
    $curIndex = $objPHPExcel->getSheetCount();
    $objWorkSheet = $objPHPExcel->createSheet($curIndex);
    $objWorkSheet->setTitle("Daftar Hadir");
    	
    //Nulis Judul
    $objWorkSheet->setCellValue(getColNameFromNo(0).'1', 'Nama ');
    $objWorkSheet->setCellValue(getColNameFromNo(1).'1', 'Tanggal ');
    $objWorkSheet->setCellValue(getColNameFromNo(2).'1', 'Masuk ');
    $objWorkSheet->setCellValue(getColNameFromNo(3).'1', 'Keluar ');
    $objWorkSheet->setCellValue(getColNameFromNo(4).'1', 'Datang ');
    $objWorkSheet->setCellValue(getColNameFromNo(5).'1', 'Pulang ');
    //Bold Font baris pertama : 
    $objWorkSheet->getStyle('A1:'.$objWorkSheet->getHighestColumn().'1')->getFont()->setBold(true);
    
    $rowIndex = 2;
    $namaBefore = NULL;
    //Nulis all data alhudur
    for($j=0; $j<count($allNama); $j++){ //Nama if($j==0 OR ($namaBefore!=$allNama[$j])){ $objWorkSheet->setCellValue(getColNameFromNo(0).$rowIndex, $allNama[$j]);
    		$objWorkSheet->getStyle(getColNameFromNo(0).$rowIndex)->getFont()->setBold(true);
    		$namaBefore = $allNama[$j];
    	}
    	for($i=0; $i<count($rekapAlhudur[$allNama[$j]]); $i++){ //Tanggal dateTime $objWorkSheet->setCellValue(getColNameFromNo(1).$rowIndex, PHPExcel_Shared_Date::PHPToExcel($rekapAlhudur[$allNama[$j]][$i]['tgl']));
    		$objWorkSheet->getStyleByColumnAndRow(1, $rowIndex)
    					 ->getNumberFormat()
    					 ->setFormatCode('dd-mm-yyyy');
    	//Masuk
    		if($rekapAlhudur[$allNama[$j]][$i]['dtg']!=NULL){
    			$objWorkSheet->setCellValue(getColNameFromNo(2).$rowIndex, $rekapAlhudur[$allNama[$j]][$i]['dtg']);
    			$objWorkSheet->getStyleByColumnAndRow(2, $rowIndex)
    						->getNumberFormat()
    						->setFormatCode('hh:mm');
    		}
    	//Keluar
    		if($rekapAlhudur[$allNama[$j]][$i]['plg']!=NULL){
    			$objWorkSheet->setCellValue(getColNameFromNo(3).$rowIndex, $rekapAlhudur[$allNama[$j]][$i]['plg']);
    			$objWorkSheet->getStyleByColumnAndRow(3, $rowIndex)
    						->getNumberFormat()
    						->setFormatCode('hh:mm');
    		}
    	//Datang
    		if($rekapAlhudur[$allNama[$j]][$i]['masuk']!=NULL){
    			$objWorkSheet->setCellValue(getColNameFromNo(4).$rowIndex, $rekapAlhudur[$allNama[$j]][$i]['masuk']);
    			$objWorkSheet->getStyleByColumnAndRow(4, $rowIndex)
    						->getNumberFormat()
    						->setFormatCode('hh:mm');
    		}
    	//Pulang
    		if($rekapAlhudur[$allNama[$j]][$i]['keluar']!=NULL){
    			$objWorkSheet->setCellValue(getColNameFromNo(5).$rowIndex, $rekapAlhudur[$allNama[$j]][$i]['keluar']);
    			$objWorkSheet->getStyleByColumnAndRow(5, $rowIndex)
    						->getNumberFormat()
    						->setFormatCode('hh:mm');
    		}
    		$rowIndex++;
    	}
    }
    //Auto size kolom:
    for($i = 0; $i<=5; $i++){ $objWorkSheet->getColumnDimension(getColNameFromNo($i))->setAutoSize(TRUE); 
    }
  • Membuat sheet baru dengan nama “Rekap” dan mengisinya dengan rangkuman kehadiran pegawai yang sudah kelompokan berdasarkan nama. Sehingga dapat dilihat jumlah jam kerja masing-masing pegawai dalam 1 minggu. Codenya:
    //Sheet4 : rekap alhudur
    $headerStyle = array(
    	'alignment' => array(
    		'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    		'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
    		'wrap' => true
    	),
    	'borders' => array(
    		'allborders' => array(
    			'style' => PHPExcel_Style_Border::BORDER_THIN,
    			'color' => array('rgb' => '000000')
    		)
    	),
    	'fill' => array(
    		'type' => PHPExcel_Style_Fill::FILL_SOLID,
    		'color' => array('rgb' => 'F0B0D0')
    	),
    	'font' => array('bold' => true)
    );
    $isiTableStyle = array(
    	'borders' => array(
    		'allborders' => array(
    			'style' => PHPExcel_Style_Border::BORDER_THIN,
    			'color' => array('rgb' => '000000')
    		)
    	)
    );
    $isiTableLiburStyle = array(
    	'borders' => array(
    		'allborders' => array(
    			'style' => PHPExcel_Style_Border::BORDER_THIN,
    			'color' => array('rgb' => '000000')
    		)
    	),
    	'fill' => array(
    		'type' => PHPExcel_Style_Fill::FILL_SOLID,
    		'color' => array('rgb' => '00B000')
    	)
    );
    $isiTableSidikJariStyle = array(
    	'borders' => array(
    		'allborders' => array(
    			'style' => PHPExcel_Style_Border::BORDER_THIN,
    			'color' => array('rgb' => '000000')
    		)
    	),
    	'fill' => array(
    		'type' => PHPExcel_Style_Fill::FILL_SOLID,
    		'color' => array('rgb' => '1C8DE0')
    	)
    );
    $namaCellStyle = array(
    	'borders' => array(
    		'allborders' => array(
    			'style' => PHPExcel_Style_Border::BORDER_THIN,
    			'color' => array('rgb' => '000000')
    		)
    	),
    	'font' => array('bold' => true)
    );
    	
    $curIndex = $objPHPExcel->getSheetCount();
    $objWorkSheet = $objPHPExcel->createSheet($curIndex);
    $objWorkSheet->setTitle("Rekap");
    	
    //Nulis Judul & ngasih style
    $kolom = 1; //mulai nulis data dr B
    $tglSelesai = $tglSelesai->modify( '+1 day' );
    $interval = new DateInterval('P1D');
    $daterange = new DatePeriod($tglMulai, $interval ,$tglSelesai);
    
    $jumNama = count($allNama);
    for($x=0; $x<$jumNama; $x++){ set_time_limit(0); $objWorkSheet->setCellValue(getColNameFromNo($kolom).'1', "Nama ");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+1).'1', "Tanggal ");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+2).'1', "Jam Datang ");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+3).'1', "Jam Pulang ");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+4).'1', "Jam Datang \n(Diakui)");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+5).'1', "Jam Pulang \n(Diakui)");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+6).'1', "Jam Kerja \nPerhari");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+7).'1', "Keterangan ");
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom))->setWidth(5/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+1))->setWidth(7.1/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+2))->setWidth(5.9/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+3))->setWidth(5.9/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+4))->setWidth(8.9/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+5))->setWidth(8.9/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+6))->setWidth(9.5/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+7))->setWidth(8.9/0.77);
    	$objWorkSheet->getColumnDimension(getColNameFromNo($kolom+8))->setWidth(2/0.77);
    	$objWorkSheet->getRowDimension('1')->setRowHeight(4.2/0.14);
    	$objWorkSheet->getStyle(getColNameFromNo($kolom).'1:'.getColNameFromNo($kolom+7).'1')->applyFromArray($headerStyle);
    
    	$baris=2; $count = 0;
    	$thisNama = $allNama[$x];
    	foreach($daterange as $date){
    	//Nama :
    		$objWorkSheet->setCellValue(getColNameFromNo($kolom).$baris, $thisNama);
    		$objWorkSheet->getStyle(getColNameFromNo($kolom).$baris)->applyFromArray($namaCellStyle);
    	//Tgl :
    		$objWorkSheet->setCellValue(getColNameFromNo($kolom+1).$baris, $date->format("j-n-Y"));
    		if($date->format("l")=="Thursday" || $date->format("l")=="Friday"){
    			if($date->format("l")=="Thursday")
    				$objWorkSheet->setCellValue(getColNameFromNo($kolom+7).$baris, "Jum'at");
    			else
    				$objWorkSheet->setCellValue(getColNameFromNo($kolom+7).$baris, "Kamis");
    			
    			$objWorkSheet->getStyle(getColNameFromNo($kolom+1).$baris.':'.getColNameFromNo($kolom+7).$baris)->applyFromArray($isiTableLiburStyle);
    		} else{
    			$objWorkSheet->getStyle(getColNameFromNo($kolom+1).$baris.':'.getColNameFromNo($kolom+7).$baris)->applyFromArray($isiTableStyle);
    			$objWorkSheet->getStyle(getColNameFromNo($kolom+6).$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    			//cari data hadir by tgl :
    			$index = -1;
    			for($i=$count; $i<count($rekapAlhudur[$thisNama]); $i++){ if($date->format("j-m-Y") == $rekapAlhudur[$thisNama][$i]['tgl']->format("j-m-Y")){ //ketemu
    					$index = $i;
    					break;
    				}
    			}
    			$masukKerja = 0;
    			if($index > -1){
    				$masukKerja = $rekapAlhudur[$thisNama][$index]['masuk'];
    			//Masuk
    				if($rekapAlhudur[$thisNama][$index]['dtg']!=NULL){
    					$objWorkSheet->setCellValue(getColNameFromNo($kolom+2).$baris, $rekapAlhudur[$thisNama][$index]['dtg']);
    					$objWorkSheet->getStyleByColumnAndRow($kolom+2, $baris)->getNumberFormat()->setFormatCode('hh:mm');
    				}
    			//Keluar
    				if($rekapAlhudur[$thisNama][$index]['plg']!=NULL){
    					$objWorkSheet->setCellValue(getColNameFromNo($kolom+3).$baris, $rekapAlhudur[$thisNama][$index]['plg']);
    					$objWorkSheet->getStyleByColumnAndRow($kolom+3, $baris)->getNumberFormat()->setFormatCode('hh:mm');
    				}
    			//Datang
    				if($masukKerja!=NULL){
    					$objWorkSheet->setCellValue(getColNameFromNo($kolom+4).$baris, $masukKerja);
    					$objWorkSheet->getStyleByColumnAndRow($kolom+4, $baris)->getNumberFormat()->setFormatCode('hh:mm');
    				}
    			//Pulang
    				if($rekapAlhudur[$thisNama][$index]['keluar']!=NULL){
    					$objWorkSheet->setCellValue(getColNameFromNo($kolom+5).$baris, $rekapAlhudur[$thisNama][$index]['keluar']);
    					$objWorkSheet->getStyleByColumnAndRow($kolom+5, $baris)->getNumberFormat()->setFormatCode('hh:mm');
    				}	
    			
    				$objWorkSheet->getStyle(getColNameFromNo($kolom+2).$baris.':'.getColNameFromNo($kolom+3).$baris)->applyFromArray($isiTableSidikJariStyle);
    				
    				$count++;
    			} 
    			//JamKerja		
    			$dtgCell = getColNameFromNo($kolom+4).$baris;
    			$plgCell = getColNameFromNo($kolom+5).$baris;
    			$objWorkSheet->setCellValue(getColNameFromNo($kolom+6).$baris, "=IF((".$plgCell."-".$dtgCell."-".$rehat.")<0,0,".$plgCell."-".$dtgCell."-".$rehat.")"); $objWorkSheet->getStyleByColumnAndRow($kolom+6, $baris)->getNumberFormat()->setFormatCode('[h]:mm:ss');
    		}
    		$baris++;
    	}
    
    	$barisAkhir = $baris - 1;
    	$baris++;
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+5).$baris, "Jam kerja/minggu=");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+6).$baris, "=SUM(".getColNameFromNo($kolom+6)."2:".getColNameFromNo($kolom+6).$barisAkhir.")"); 
    	$objWorkSheet->getStyleByColumnAndRow($kolom+6, $baris)->getNumberFormat()->setFormatCode('[h]:mm:ss');
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+5).$baris.':'.getColNameFromNo($kolom+6).$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    	$baris++;
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+5).$baris, "Lembur=");
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+5).$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+6).$baris, '0:00:00');
    	$objWorkSheet->getStyleByColumnAndRow($kolom+5, $baris)->getNumberFormat()->setFormatCode('[h]:mm:ss');
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+5).$baris.':'.getColNameFromNo($kolom+6).$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+6).$baris)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    	$baris++;
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+5).$baris, "Total jam kerja=");
    	$objWorkSheet->setCellValue(getColNameFromNo($kolom+7).$baris, "=SUM(".getColNameFromNo($kolom+6).($baris-2).":".getColNameFromNo($kolom+6).($baris-1).")");
    	$objWorkSheet->getStyleByColumnAndRow($kolom+7, $baris)->getNumberFormat()->setFormatCode('[h]:mm:ss');
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+5).$baris.':'.getColNameFromNo($kolom+6).$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    	$objWorkSheet->getStyle(getColNameFromNo($kolom+7).$baris)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    	$kolom += 9;
    }
    	
    $objPHPExcel->setActiveSheetIndex($curIndex);
  • Redirect halaman, sehingga saat membuka halaman akan langsung ada aksi untuk mengunduh file rekap yang sudah dibuat. Codenya :
    //Redirect output to a client’s web browser (Excel2007)
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="RekapAbsensi.xlsx"');
    header('Cache-Control: max-age=0');
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
    header('Pragma: public'); // HTTP/1.0
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->setOffice2003Compatibility(true); //ini menyebabkan currIndexSheet=0
    $objWriter->save('php://output');
    exit;

    Atau bisa menggunakan code berikut :

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=RekapAbsensi.xlsx");
    header("Content-Transfer-Encoding: binary ");
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('php://output');
    exit;
  • Tampilah hasil sheet ke-3 “Daftar Hadir” :
    hasil1
    Tampilan hasil sheet ke-4 “Rekap” :
    hasil21
    hasil22

 

Berikut adalah beberapa catatan selama proses pembangunan program ini.

  • DateInterval class di PHP. Format string untuk mendefinisikan durasi urutannya adalah “PYMDTHMS” dengan: P = period; Y = year; M = months; D = days; T = time; H = hours; M = minutes; S = seconds; Contohnya : P1Y5M27DT3H34M55S –> 1tahun, 5bulan, 27 hari, 3jam, 34menit, 55detik.
  • DateTime class di PHP. Format string untuk mendefinisikan waktu secara lengkap bisa dilihat di http://php.net/manual/en/datetime.createfromformat.php
  • Contoh cara menambah 10menit pada DateTime :
    $tgl = DateTime::CreateFromFormat('Y-m-d H:i', "2006-01-21 08:05");
    $tgl->add(new DateInterval('PT10M'));
  • Batasan pada PHPExcel :
    • Ukuran worksheets pada Excel5 Writer (.xls) adalah 65.536 baris dan 256 (“IV”) kolom.Ukuran worksheets pada Excel2007 Writer (.xlsx) adalah 1.048.576 baris dan 16.384 (“XFD”) kolom.
    • Terdapat banyak format file spreadsheet yang berbeda, masing-masing dengan ekstensi nama file yang berbeda dan yang dapat dikirim ke web browser menggunakan jenis mime yang berbeda.
      BIFF OfficeOpenXML
      Format excel 95 & 2003 excel 2007
      Exteksi xls xlsx
      PHP Writer PHPExcel_Writer_Excel5 PHPExcel_Writer_Excel2007
      Mime Type aplication/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreedsheet.sheet

Sekian catatan kali ini, semoga bermanfaat ^_^…

Penyempurnaan pengucapan beberapa hukum tajwid

Rabu 4 Muharram 1438H kemarin dapat tugas meringkas materi ketiga. Hasilnya :
3-13-2
Sekian & semoga bermanfaat ^_^…

Pengucapan Huruf-Huruf Hijaiyah

Rabu 26 Dzulhijjah 1437H kemarin dapat tugas meringkas materi kedua. Hasilnya :
2-12-2

Sekian & semoga bermanfaat ^_^…

Dasar-dasar Tahsin

Rabu 19Dzulhijjah 1437H kemarin dapat tugas meringkas materi pertama. Hasilnya :

1

Sekian & semoga bermanfaat ^_^…

Beberapa Hadist Motivasi Amalan Yaumiyah


“Sesungguhnya Allah tidak melihat pada bentuk tubuh kalian, tidak pula pada harta kalian, tapi sesungguhnya Allah melihat pada hati dan amal-amal kalian” (HR. Muslim).


“Sesungguhnya orang-orang yang selalu membaca kitab Allah dan mendirikan sholat dan menafkahkan sebagian dari rezeki yang Kami anugrahkan kepada mereka dengan diam-diam dan terang-terangan, mereka itu mengharapkan perniagaan yang tidak akan merugi”. “Agar Allah menyempurnakan kepada mereka pahala mereka dan menambah kepada mereka dari karunia-Nya. Sesungguhkan Allah Maha Pengampun, Maha Mensyukuri” (QS. Fathir: 29-30).

Sudah lama nemu hadist-hadist yang harusnya bisa memotivasi diri untuk senantiasa menjaga & meningkatkan alaman yaumiyah. Supaya tetap ingat, ditulislah disini.

  • Sholat
    • Rasulullah SAW bersabda: “Amalan yang paling dicintai Allah SWT adalah sholat pada waktunya, berbakti kepada orang tua, kemudian jihad di jalan Allah SWT” (HR. Bukhari – Muslim).
    • Diriwayatkan oleh Abdullah bin ‘Amru bin Ash ra. Bahwasanya Rasulullah SAW pernah bersabda: ”Barang siapa sholat malam dengan membaca sepuluh ayat Al Quran, maka tidaklah ia akan dicatat sebagai orang-orang yang lupa. Barang siapa sholat malam dengan membaca seratus ayat Al Quran, maka dia dicatat sebagai kaum Qaanitiin (patuh) – mereka gemar beribadah. Barang siapa yang sholat malam dengan membaca seribu ayat Al Quran, maka dia dicatat sebagai kaum Muqanthiriinorang kaya yang gemar menyedekahkan hartanya” (HR. Abu Daud).
    • Pernah diceritakan seorang sahabat pada Rasulullah SAW, bahwa ada seorang yang sepanjang malam tertidur pulas dan tidak bangun untuk sholat. “Telinga orang itu telah dikencingi oleh setan”, ucap Rasulullah SAW memberikan tanggapan (HR. Bukhari – Muslim dan Nasa’i).
    • “Pada setiap malam disepertiga terakhir pada bagian malamAllah SWT turun ke langit dunia dan berseru ‘Siapa yang memanggil-Ku, maka Aku pun akan menyambutnya. Siapa yang memohon kepada-Ku, Aku pun mengabulkannya. Dan siapa yang memohon ampun, maka Aku pun mengampuninya‘” ucap Rasullah SAW yang dituturkan kembali oleh Abu Hurairah ra. (HR. Bukhari, Malik, Muslim dan Tirmidzi).
    • “Pada setiap persendian kalian harus dikeluarkan sedekahnya setiap pagi; setiap tasbih [membaca subhanallah] adalah sedekah, setiap tahmid [membaca alhamdulillah] adalah sedekah, setiap tahlil [membaca allahu akbar] adalah sedekah, amar bil ma`ruf adalah sedekah, nahi `anil munkar adalah sedekah. Semua itu dapat terpenuhi dengan sholat dua rakaat yang dilakukan di waktu Dhuha” (HR. Muslim, no.1181).
    • Pada diri manusia terdapat 360 persendian. Harus baginya bersedekah untuk setiap dari persendian itu“. Mereka berkata “Siapa yang mampu melakukan hal itu wahai Rasulullah SAW?”. Beliau bersabda “dahak yang ada di masjid kau tanam, atau sesuatu (berupa gangguan) di jalan engkau singkirkan. Jika kau tak mampu juga maka dua rakaat sholat Dhuha telah mencukupi bagimu” (HR. Ahmad).
  • Membaca Al Quran
    • “Barang siap membaca satu huruf dari Al Quran, maka baginya satu kebaikan dengan bacaan tersebut, dan satu kebaikan dilipatkan menjadi 10 kebaikan semisalnya dan aku tidak mengatakan Alif Laam Miiiiiim satu huruf akan tetapi Alif satu huruf, Lam satu huruf dan Mim satu huruf” (HR. Tirmidzi dan dishahihkan di dalam kitab Shahih Al Jami’).
    • Abu Umammah Al Bahily berkata “Aku telah mendengar Rasulullah SAW bersabda ‘Bacalah Al Quran karena sesungguhnya dia akan datang pada hari kiamat sebagai pemberi syafa`at bagi orang yang membacanya’” (HR. Muslim).
    • Abu Hurairah ra meriwayatkan bahwa Rasulullah SAW bersabda “Maukah salah seorang dari kalian jika dia kembali ke rumahnya mendapati didalamnya tiga onta yang hamil, gemuk serta besar?” Kami (para sahabat) menjawab “Iya”. Rasulullah SAW bersabda “Salah seorang dari kalian membaca tiga ayat di dalam sholat lebih baik baginya dari pada mendapatkan tiga onta yang hamil, gemuk dan besar” (HR. Muslim).
    • Dikatakan kepada orang yang membaca (menghafalkan) Al Quran nanti “Bacalah dan naiklah secara tartilillah sebagaimana engkau di dunia mentartilkan Al Quran. Sesungguhnya kedudukanmu adalah pada bagian akhir ayat yang engkau baca (hafal)” (HR. Abu Dawud dan At-Tirmidzi).
    • Pada hari kiamat Al Quran akan datang kemudian berkata “Wahai Rabb, berilah dia pakaian”, maka dipakaikanlah kepadanya mahkota kemuliaan, kemudian Al Quran berkata lagi “Wahai Rabb, tambahkanlah kepadanya”, maka dipakaikan kepadanya pakaian kemuliaan, kemudian Al Quran berkata lagi “Wahai Rabb, ridhoilah dia”, akhirnya dia pun diridhoi, kemudian dikatakan kepada ahli Al Quran “Bacalah dan naiklah, niscaya akan ditambahkan kepadamu satu pahala kebaikan pada setiap ayat” (HR. Ath Thabrani).
  • Puasa
    • Dibuka pintu-pintu surga pada hari senin dan kamis, lalu diampuni (dosa) setiap orang yang tidak menyekutukan Allah SWT dengan sesuatu apapun, kecuali dua orang yang saling bertikai dikatakan “biarkan mereka berdua sampai keduanya berbaikan” (HR. Tirmidzi (2023), Ibnu Majah(1740) dan dishahihkan Al Albani dalam shahih Tirmidzi dan Ibnu Majah).
    • Puasa yang paling dicintai Allah Ta’ala adalah puasa Dawud, beliau berpuasa sehari dan berbuka sehari. Dan sholat yang paling dicintai Allah SWT adalah sholatnya Dawud, beliau tidur dipertigaan malam lalu bangun (sholat) pada sepertiga malam dan tidur pada seperenamnya. (HR. Bukhari (3238) dan Muslim (1159)).

    Sekian dan semoga bermanfaat.

    Bekal Pembinaan

    Yang didapat dari Ustadz Rohman (semoga g salah inget 😐 ) dalam pembinaan tanggal 30 Dzul Qa’dah – 3Dzul Hijjah 1436H:

    1. Saat sambung ayat, sebaiknya bayangkan soal yang kasih itu ada di mana dalam mushaf Al Quran, hingga bisa melanjutnya dengan benar.
    2. Muroja’ah itu sebaiknya sehari minimal 2juz. Biar tetep tejaga hafalannya.

     

    Ringkasan Ilmu yang didapat dari Ustadz A. Fadli(semoga g salah tulis) dalam pembianan tanggal 7&8 Dzul Hijjah 1436H lalu:

    • Ikhfa itu menyamarkan, jadi huruf nun atau tanwin-nya sudah tidak terlihat lagi tapi langsung masuk ke huruf ikhfa nya.
    • Huruf yg makhroj-nya antara ujung lidah dan ujung gigi atas (lidah tidak sampai keluar) adalah : tsa dzal zho
    • Huruf yang makhroj-nya antara ujung lidah dan pangkal gigi atas adalah : ta dal tho

    Pesan beliau untuk proses menghafal.

    1. Cobalah sekali duduk langsung melakukan muroja’ah minimal 1juz tanpa ditemani mushaf. Jika lupa bagian tertentu loncati saja dan teruskan sampai selesai 1juz, saat selesai baru buka mushaf untuk memeriksa bagian yang lupa tadi.
    2. Saat melakukan muroja’ah, jauh-jauhlah dari mushaf Al Quran. Tujuannya agar terbiasa sendiri dan hafalan semakin mantap. Hilangkan kebiasaan selalu memegang mushaf atau bahkan memeluk mushaf saat sedang muroja’ah maupun setoran.
    3. Saat mau menghafal. Mulailah berkenalan dengan halaman yang ingin dihafal dengan membacanya sebanyak 15-20 kali hingga mulut ini ringan/terbiasa membacanya. Baru jika sudah kenal baik, bisa mulai menghafal. Menurut pengalaman beliau, 1-2 halaman bisa dihafal dalam waktu 30 menit.

      Jangan coba2 sok kenal, hingga saat menghafal masih buka tutup mushaf karena bacaan yg blm lancar/masih susah mengucapkannya. 😛 Jika memang belum kenal maka kenalan aja dulu dengan banyak2 membacanya, jika sudah kenal dijamin bisa hafal dengan sendirinya. 😀

    4. Saat kenalan dan proses menghafal. Bacalah dengan memenuhi semua ilmu tajwid dan tartil. Cara ini bisa untuk lebih menguatkan hafalan.

     

    Tips lainnya adalah jika berada pada keadaan jenuh menghafal, salah satu cara mengatasinya adalah dengan membeli mushaf baru hingga bisa semangat lagi, mushaf yg lama bisa di hadiahkan ke saudara lainnya yang membutuhkan hingga tetap bisa bermanfaat.

     

    Sekian catatan kali ini. Semoga bermanfaat ^_^…

    Membuat Laporan menggunakan lib mPDF pada CI

    Bagian ini membahas proses pembuatan salah satu laporan untuk aplikasi Simple Kasir yang telah dibahas tahun lalu. Baru sempat merangkumnya sekarang. 🙂

    Contoh laporan yang akan dibuat adalah laporan penjualan untuk bulan tertentu. Pembuatan laporan ini menggunakan lib dari mPDF yang bisa diunduh disini. Pada contoh ini digunakan mPDF versi 5.7, jika ingin menggunakan versi yang terbaru silahkan. Pada situs ini juga disediakan dokumentasi yang cukup lengkap yang bisa dijadikan sebagai bahan acuan pembangunan laporan.

    Langkah-langkah awal yang harus dilakukan agar bisa menggunakan mPDF pada CI adalah :

    1. Ekstrak file MPDF57.zip yang sudah diunduh sebelumnya. Hasil ekstraksi berupa folder MPDF57 letakkan di folder application/libraries/MPDF57, kita bisa menghapus beberapa file atau folder yang tidak diperlukan, misalnya : folder example, iccprofiles, graph_cache.

    Lib mPDF memerlukan fungsi mb_string bawaan dari php, jadi pastikan pada file php.ini extension php_mbstring.dll ter-enable.

    2. Agar bisa digunakan dengan mudah dalam CI, kita buat class pdf yang akan membungkus lib mPDF ini. Pada folder application/libraries buat file pdf.php dan isi dengan code berikut :

    <?php if ( ! defined('BASEPATH')) exit('Tidak ada akses langsung script diperbolehkan');
    
    class pdf{
        function pdf(){
            $CI =& get_instance();
            log_message('Debug', 'mPDF class is loaded.');
        }
    
        function load($param=NULL){
            include_once APPPATH.'libraries/MPDF57/mpdf.php';
            if($params == NULL){
                $param = '"en-GB-x","A4","","",10,10,10,10,6,3';
            }
            return new mPDF($param);
        }
    }
    
     /* End of file pdf.php
        Location ./application/libraries/pdf.php */
    

    Pada class pdf terdapat fungsi load yang digunakan untuk memuat lib mPDF. Jika saat memanggil fungsi load tidak ada parameter yang dilewatkan maka secara default fungsi ini akan menginstansiasi object mPDF dengan parameter = “en-GB-x”,”A4″, “”, “”, 10, 10, 10, 10, 6, 3; dimana urutan parameternya adalah : mode, format kertas, font size, font, margin left, margin right, margin top, margin bottom, margin header, margin footer, orientasi kertas (bisa diisi dengan p / portrait atau l / landscape).

    Sampai tahap ini library pdf sudah bisa digunakan. Cara memuat lib ini sama seperti memuat lib lainnya, cukup dengan syntax : $this->load->library(‘pdf’);. Dan untuk mendapatkan object dari class mPDF dengan memanggil fungsi load dengan syntax : $pdf=$this->pdf->load();.

    3. Buat helper pada application/helpers dengan nama file “common_helper.php”. Tambahkan fungsi “getMonthName” untuk mendapatkan nama-nama bulan, fungsi “get5LastYears” untuk mendapatkan daftar tahun lima tahun kebelakang dan fungsi “getNameOfMonth” untuk mendapatkan nama bulan dari nomor urut bulan. Code-nya :

    <?php if ( ! defined('BASEPATH')) exit('Tidak ada akses langsung script diperbolehkan');
    
    if ( ! function_exists('getMonthNames')){
        function getMonthNames(){
            $namaBulan = array(
                1 => 'Januari',
                2 => 'Februari',
                3 => 'Maret',
                4 => 'April',
                5 => 'Mei',
                6 => 'Juni',
                7 => 'Juli',
                8 => 'Agustus',
                9 => 'September',
                10 => 'Oktober',
                11 => 'November',
                12 => 'Desember');
            return $namaBulan;
        }
    }
    if( ! function_exists('getNameOfMonth')){
        function getNameOfMonth($bln){
            $namaBulan = getMonthNames();
            return $namaBulan[(int)$bln];
        }
    }
    if( ! function_exists('getg5LastYears')){    
        function get5LastYears(){
            $listTahun = array();
            $thnNow = intval(date('Y'));
            for($i=$thnNow-4; $i<=$thnNow; $i++){
                $listTahun[(string)$i] = (string)$i;
            }
            return $listTahun;
        }
    }    
    /*     End of file common_helper.php
        Location ./application/helpers/common_helper.php */
    

    4. Buat controller untuk menampilkan halaman cetak laporan dengan nama lapPenjualanPerBulan.php. Pada bagian constructor muat lib template, table dan validation serta model item dan user. Buat fungsi _set_fields yang akan menampung nilai inputan bulan dan tahun.

    Fungsi index akan menampilkan halaman generate laporan dengan memilih bulan dan tahun terlebih dahulu. Untuk mengisi dropdownlist bulan dan tahun, digunakan fungsi dari helper yang sebelumnya sudah kita buat, muat helper dengan syntax : $this->load->helper(‘common_helper’); dan untuk memanggil fungsinya cukup dengan syntax : getMonthNames() dan get5LastYears(). Code-nya :

        function __construct(){
            parent::__construct();
            //load lib:
            $this->load->library('template','table');        
            //load model:
            $this->load->model('item_model', '', TRUE);
            $this->load->model('user_model', '', TRUE);
        }
        
        function index(){
            if($this->session->userdata('logged_in')) {            
                $session_data = $this->session->userdata('logged_in');
                $data['jabId'] = $session_data['jab'];
                $data['judul'] = 'Penjualan';
                
                $this->load->helper('common_helper');
                $data['cbBulan'] = getMonthNames();
                $data['cbTahun'] = get5LastYears();
                $data['lap'] = 'lapPenjualanPerBulan';
                
                $this->validation->namaBulan = date('m');
                $this->validation->tahun = date('Y');
                
                $this->template->display('laporan/lapBlnan', $data);
            }else{ //jika tidak ada session, redirect ke halaman login
                redirect('login', 'refresh');
            }
        }
    

    Tambahkan fungsi loadReport yang akan menghasilkan file pdf yang akan di tampilkan di tab baru, dalam membuat pdf digunakan lib mPDF yang sudah dibungkus dalam class pdf sebelumnya.

        function loadReport(){
            if($this->session->userdata('logged_in')) {            
                $session_data = $this->session->userdata('logged_in');            
                $data['bulan'] = $this->input->post('bln');
                $data['tahun'] = $this->input->post('thn');
                $this->load->helper('common_helper');
                $data['tglCetak'] = date('d') .' '. getNameOfMonth(date('m')) . ' ' . date('Y');
                //As PDF creation takes a bit of memory, we're saving the created file in /downloads/reports/
                $pdfFilePath = FCPATH."/downloads/reports/lapJualBln".date('F').".pdf";
                
                if(file_exists($pdfFilePath)==FALSE){
                    ini_set('memory_limit', '64M');
                    //generate table :
                    $items = $this->item_model->GetLapJualPerBln($data['bulan'] . '-' . $data['tahun']);                
                    $this->load->library('table');
                    $this->table->set_empty("&nbsp;");
                    $this->table->set_heading('No', 'Kode Barang', 'Nama Barang', 'Foto', 'Jumlah Terjual');
                    if($items != false){
                        $i=0;
                        foreach($items as $brg){
                            $this->table->add_row(
                                ++$i,
                                $brg->IdBrg,
                                $brg->NamaBarang,
                                ($brg->GambarBarang!=null) ?
                                '<img width="100" src="data:image/jpeg;base64,'.base64_encode($brg->GambarBarang).'">' : '-',
                                $brg->jumTerjual
                            );
                        }
                    }else{
                        $this->table->add_row("","","Tidak ada barang yang terjual","","");
                    }
                    $data['table'] = $this->table->generate();    
                    
                    $data['bulan'] = getNameOfMonth($data['bulan']);
                    
                    $peg = $this->user_model->GetUserByUserName($session_data['username']);
                    $data['namaPeg'] = $peg->NamaPengguna;
                    
                    $html = $this->load->view('laporan/labjualPerBln', $data, true); //render the view into HTML
                    $this->load->library('pdf');
                    $pdf=$this->pdf->load();
                    $pdf->SetFooter(''.'|{PAGENO}|'.''); //Add a footer for good measure
                    $pdf->WriteHTML($html); //write the HTML into PDF
                    $pdf->Output();
                }
                redirect("downloads/reports/namafile.pdf");
            }else{ //jika tidak ada session, redirect ke halaman login
                redirect('login', 'refresh');
            }
        }
    

    Guna menghasilkan laporan dalan bentuk pdf diperlukan tampilan html yang merupakan isi content dari laporan, dalam contoh ini namanya “labjualPerBln.php” yang akan tersimpan pada application/views/laporan. Code pada file tersebut adalah:

    <head>
        <title>Lap. Penjualan</title>
        <link rel="stylesheet"type="text/css"href="<?php echo base_url().$this->config->item('css'); ?>"/>
    </head>
    <body>
    <div id="content">
        <div class="row">
            <div class="caption" align="center">Laporan Penjualan Barang bulan <?php echo $bulan." ".$tahun;?> </div>
            <div class="end"></div>
        </div>
        <hr>
        <div class="row">
            <div class="value">Tanggal Cetak : <?php echo $tglCetak;?></div>
            <div class="end"></div>
        </div>
        <br/>
        <div class="row">
            <div class="value">Berikut adalah daftar barang yang berhasil terjual bulan ini.</div>
            <div class="end"></div>
        </div>
        <div class="row">        
            <div class="data"><?php echo $table; ?></div>
            <div class="end"></div>
        </div>
        <div class="spacer"></div>
        <div class="row">
            <div class="value" align="right">
                Pembuat Laporan
                <br/><br/><br/>
                <b><?php echo $namaPeg; ?></b>
            </div>
            <div class="end"></div>
        </div>
    </div>                        
    </body>
    

    5. Buat tampilah halaman yang akan membuat file pdf simpan dengan nama lapBlnan.php, code-nya :

    <head>
        <title><?php echo "Laporan ".$judul."/Bulan";?></title>    
        <script type="text/javascript" src="<?php echo base_url() ?>assets/js/jquery-1.3.2.min.js"></script>
    </head>
    <body>
        <div class="row">
            <div class="caption"><?php echo "Laporan ".$judul." Barang/Bulan"; ?></div>
            <div class="end"></div>
        </div>
        <hr />
        <div id="content">
            <?php echo form_open(site_url($lap.'/loadReport'), array('target' => '_blank'));?>
            <div class="row">
                <div class="caption_border">Pilih Periode Laporan</div>
                <div class="end"></div>
            </div>
            <div class="row">
                <table>
                    <tr>
                        <td style="padding-left:5px;">Bulan : </td>
                        <td style="padding-left:5px;"><?php echo form_dropdown('bln',$cbBulan,$this->validation->namaBulan,'id="bln";onChange="updateGraph()"');?></td>
                        <td style="padding-left:15px;">Tahun : </td>
                        <td style="padding-left:5px;"><?php echo form_dropdown('thn',$cbTahun,$this->validation->tahun,'id="thn";onChange="updateGraph()"');?></td>
                        <td style="padding-left:15px;">
                            <?php $f_btn = array('name'=>'submit', 'id'=>'submit', 'value'=>'Generate Report');
                                  echo form_submit($f_btn); ?>
                        </td>
                    </tr>
                </table>
                <div class="end"></div>
            </div>
            <div class="spacer"></div>
        </div>
    </body>
    

    6. Selesai. Slanjutnya tinggal mendaftarkan halaman laporan tersebut pada menu dan contoh hasil tampilannya adalah :

    Dan ketika menekan tombol “Generate Report” akan terbuka tab baru yang menampilkan laporan dalam format pdf. Contoh tampilannya:

    Sekian catatan kali ini. Semoga bermanfaat… (^u^)

    Pagination pada CodeIgniter: Langsung menunjuk hal. tertentu di awal memuat web-page

    Setelah lama g bersua dengan CI, akhirnya kemarin nyoba2 lagi. Ternyata ada kasus gimana caranya bisa menampilkan pagination langsung ke halaman tertentu saat pertama kali web-page dimuat. Dan setelah nyari2 nemulah salah satu caranya. Berikut adalah langkah-langkahnya:

    – Salin file Pagination.php dari folder system/libraries ke dalam folder application/libraries. File inilah yang akan digunakan CI, bukan lagi file aslinya.

    – Buka file salinan tersebut dan lakukan perubahan dan tambahan code berikut :

    > Pada baris 165 sebelum command code// Set current page to 1 if using page numbers instead of offset” tambahkan code berikut :

    //nambahin if supaya bisa ngeset current page di pagination-nya
            if($this->enable_set_cur_page){
                if ($this->use_page_numbers){
                    $this->cur_page = (int) $this->current_page;
                }else{
                    $this->cur_page = (int)($this->per_page * ($this->current_page-1));
                }
            }
    

    > Tambahkan variabel pada baris 62 :

    var $enable_set_cur_page = FALSE; //enable setting current page
    var $current_page = 1; // menentukan halaman saat ini pada pagination
    

    Tahapan mengedit lib Pagination selesai…

    Selanjutnya adalah cara menggunakannya, saat inisialisasi array $config tambahkan code berikut:

    $config['enable_set_cur_page'] = TRUE;
    $config['current_page'] = $hal;
    

    Selesai… Pagination yang muncul akan menunjuk pada hal sesuai dengan $config[‘current_page’] yang ditentukan.

    Berikut adalah hasil tampilan dengan menetapkan nilai current_page = 2.

    tampilan pagination CI

    Sekian, semoga bermanfaat <(^v^)>