Report dengan format docx

sebelum nya sudah dibahas untuk report format doc
pada url: http://prabhaswara.wordpress.com/2010/09/02/membuat-laporan-doc-dengan-php/

tapi untuk report diatas mempunyai kelemahan yaitu dalam membentuk url gambar yang hanya di link kan ke source gambar (tidak disimpan dalam file doc)

berawal dari ide awie nyantai yg bilang format docx bisa di extrak dan beruba file2 xml maka muncul lah ide mengotak ngatik file docx tersebut untuk keperluan report

dengan keunggukan template bisa di sediakan dulu, gambar juga masuk kedalam file tersebut..

program ini dibuat dalam bhs pemograman php dan menggunakan
lib ZipArchive yang anda harus aktifkan terlebih dahulu

idenya sebenernya simple
1. buat template report dengan format docx (ms word)
2. baca file xml di dalem docx
3. ganti variable2 yang sudah di setel dengan data anda

//source classdocx

<?php
/**
 * 5jul2011
 * by: prabhaswara
 * required :	- lib php ZipArchive
 * 
 * 
 * merubah variable yang ada di docx
 * untuk report dengan template yang sudah di buat sebelum nya di docx
 * 
 * langkah: 
 * 1. init
 * 2. setting variable 	->replace("{varilable}","");
 * 3. timpah xml 		->generate()
 */

	
	class ClassDocx
	{
		public $ftemplate; 		// file yang di jadikan template laporan
		public $freport;		// generate file yang akan mejadi laporan
		
		private $documentxml;	// dokumen xml dalam docx
		private $headerxml;		// header docx
		private $zip; //variable zip
		
		
	/**
	 * ftemplate: file template
	 * freport	: file report
	 */
		function __construct($ftemplate,$freport="")
		{
			$this->ftemplate=$ftemplate;		
			//$this->freport=($freport="")?$ftemplate:$freport;
			
			if($freport=="")
			{
				$this->freport=$ftemplate;
			}
			else
			{
				copy($ftemplate,$freport);
				$this->freport=$freport;
			}
			
			
			//liat zip nya
			$this->zip = new ZipArchive;
			$this->zip->open($this->freport, ZipArchive::CREATE);
			
			
			//baca documentxml
			$fp=$this->zip->getStream("word/document.xml");
			if(!$fp) exit("failed\n document.xml ");	
		    while (!feof($fp)) {
		        $this->documentxml .= fread($fp, 2);
		    } 
		    fclose($fp);
		    
		    //baca header
			$fp=$this->zip->getStream("word/header1.xml");
			if(!$fp) exit("failed header1.xml \n");	
		    while (!feof($fp)) {
		        $this->headerxml .= fread($fp, 2);
		    } 
		    fclose($fp);
	
		}
		/**
		 * untuk merubah variable pada xml
		 */
		function replace($var,$words)
		{
			$this->documentxml=str_replace($var,$words,$this->documentxml);
			$this->headerxml=str_replace($var,$words,$this->headerxml);
		}
	
		function generate()
		{
			 $this->zip->addFromString('word/document.xml', $this->documentxml);		
			 $this->zip->addFromString('word/header1.xml', $this->headerxml);		 
		}
	}

?>

//contoh makek nya

<?php

include "classdocx.php";
$docx=new ClassDocx("template_printout.docx","wwkwkwk.docx");
$docx->replace("{nmtransaksi}","Pengeluaran");
$docx->replace("{noref}","No.5/07/2011");
$docx->replace("{hari}","Raboo");
$docx->generate();

?>

sebenernya masih banya kekurangan pada class diatas
salah satunya blon bisa parsing html menjadi format xml docx
dan juga format variable musti bener (soalnya klo di edit2 variable nya suka berubah @_@

source+contoh

semoga saja ada programer yang dengan senang hati membuat kan class yang jauh lebih baik dan lengkap dan di sajikan secara gratis.. Aminnn….

pembaca yg baik selalu tinggalkan komentar

parent-child-oracle

Posted: October 26, 2010 in programming

Uih.. hari ini baru nemu.. ternyata oracle bisa bikin tree relationship ya..
mayan lah buat nentuin level kedalaman
mumpung masih anget di dokumentasiin dulu biar ngk usah browsing2 lagi
begini:

contoh data

nah kita ngk usah capek2 nentuin level kedalamannya.. cuma nentuin field nya parent nya apa terus tinggal di queriin

SELECT
ID,
nama,
parent_id,
LEVEL
FROM NGETESPARENTCHILD
CONNECT BY PARENT_ID = PRIOR ID
START WITH parent_id=0

inti nya ada di level, connect by, prior id, dan start with
Tara jadi deh berikut level nya

Ref:http://sun3.org/archives/285

IE internet explore bug li:hover

Posted: September 22, 2010 in programming

IE internet explore bug li:hover

ie emang browser paling ngk banget dah… cssnya kadang beda dari mozila, opera, dan chrome
nah salah satunya di ie ngk bisa li:hover
gimana cara benerinnya? ya pakek javascript aja…

###### begini sepenggal html nya######

<ul id=’menu_atas_hrd’>
<li><a href=’#'>KEPEGAWAIAN</a>
<ul>
<li><a href=”#”>Data Pegawai</a></li>
<li><a href=”#”>Perubahan</a>
</li>
</ul>
<li>
<li><a href=’#'>PENILAIAN</a>
</ul>

###### dan js nya ######

var arrayli = document.getElementById("menu_atas_hrd").getElementsByTagName("li");
for (var i=0; i&lt;arrayli.length; i++)
{
	arrayli[i].onmouseover=function()
	{
		this.className+=" bugOverLi";
	}
	arrayli[i].onmouseout=function()
	{
		this.className=this.className.replace(new RegExp("bugOverLi"), "");
	}
}

tara.. jadi deh seakan di ei suport li:hover

kasus ini di gunakan biar menu berubah class bila di tunjuk

passion

Posted: September 14, 2010 in Lounge

10 September 2010 dimana itu adalah hari kemenangan bagi banyak orang, tapi tidak bagi ku.. jum’at itu terasa intropeksi diri yang benar2 kurang atau bahkan minus dari hal yang di harapkan

passion VS kenyamanan

satu sisiku menginginkan sesuatu yang disebut passion (indonesianya apa ya?)
- Aku ingin membuat sesuatu yang bermanfaat
- Aku ingin membuat sesuatu yang sangat bagus dan berkualitas tidak asal jadi asal dapet honor
- Aku ingin hasil karya ku bisa menghidupi banyak orang
- Aku ingin membuat sofware gratis yang di pakai semua orang
- Aku ingin membuat sofware pendidikan gratis dan berqualitas
- Aku ingin membuat datawarehouse umat manusia yang terus di mantaince yang bermanfaat dan dipakai semua orang
- Aku ingin mengangkat bangsa ini dengan hasil ciptaan ku
- Aku ingin keliling dunia dan melihat hal yang baru, mencicipi dan mendengar sesuatu yang menakjubkan
- Aku ingin hasil karya ku bergema di seluruh jagat raya,
- Aku ingin berlutut dan menyembahnya dengan penuh rasa bangga dan berterimakasih atas kehidupan yang diberikan

Entahlah.. sepertinya aku terlalu terbuai dalam impian, dan lupa untuk bangun dan mulai bertidak.

di sisi lain aku menikmati irama yang berjalan, gaji tiap bulan ngk pernah telat lagi, kerja maintaince yang tidak se dag dig dug jaman tempoe doloe, ruangan ac sepi nan tenang bebas asep rokok.. jam kerja yang pasti.. harusnya membuat aku punya banyak waktu untuk berkarya diwaktu sengang, kadang terkegantungan mood itu bikin repot..

TEKAD.. itu yang tidak ada.. sekarang..

There Is No Shortcut to Success aku sadari itu, mungkin aku harus jatuh atau malu semalu2nya untuk bisa bangkit lebih lagi..
lagi2
KEBERANIAN.. itu tidak ada.. sekarang..

I wish I could awaken from morpheus arms, and do what to do

Report / Laporan bisa dibilang hal yang wajib dalam apikasi sistem informasi,
Laporan bisa berupa grafik/ document, sekarang TS pengen coba membagi pengalamanya membuat laporan/report yang hasil keluarnya file berformat .doc atau file nya ms-word

Pada Awalnya TS menggunakan cara yang simple yaitu cara nomor1 dibawah ini

Cara 1: simple bener:
hanya menambahkan 2 baris pertama sebelum html

<?php
	header("Content-type: application/vnd.ms-word");
	header("Content-Disposition: attachment;Filename=nama_dokumennya.doc");
	echo "<html>";
	echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
	echo "<body>";
	echo "<h1>Hallo Judul</h1>";
	echo "<p>Hallo konten</p>";
	echo "</body>";
	echo "</html>";
?>

Cara 2: anda membutuhkan template word yang di save melalui file htm
Kemudian anda tinggal mengedit variable2 yang ada buat
disini varialbe yang saya buat adalah
{judul_nya} dan {isi_nya}
Contoh file template bisa diambil disini template_office

<?php
	$file_template_url = 'file.doc';
	$file_baru_url = 'file_baru.doc';
	$size = filesize($file_template_url);
	$fr = fopen($file_template_url,'r');
	$oldContent = fread($fr,$size);
	fclose($fr);
	if(!file_exists($file_template_url))
	{
		echo "File tidak ada";
		exit();
	}
	$fp = fopen($file_baru_url,'w+');
	$newContent = str_replace('{judul_nya}','BELAJAR BIKIN REPORT');
	$newContent = str_replace('{isi_nya}','Hallo Report');
	fwrite($fp,$newContent);
	fclose($fp);
	header( 'Location: http://url-website/'.$file_template_url  ) ;
?>

Keunggulan cara2 yaitu mudah dalam pengeditan report, anda tinggal mengedit report nya dalam ms-word

Thx to Taufik kurniawan yang bagi2 ilmu pembuatan report ke doc ini

Budayakan komen dan rate..

other link

http://prabhaswara.wordpress.com/2011/07/07/report-dengan-format-docx/

Jquery salah satu dari framework javascript dimana kumpulan2 fungsi javascript standar
diringkas. agar ngk usah banyak ketak-ketik di script yang ada bikin contoh beberapa kodingan standar seperti ini

Gunanya fromscratch Jquery
Mengambil value dari textbox document. getElementById(“idtext”). value $(“#idtext”). val()
Mengubah isi element contoh nya div document. getElementById(‘idDiv’). innerHTML = ‘Ganti Text’; $(‘#idDiv’). html(‘Ganti Text’)
Mengubah/menambah css document. getElementById(‘idDiv’). style.float= ‘right’; $(‘#idDiv’). css(‘float’,'right’)

Masih banyak sih script yang yang di kumpulkan dalam 1 fungsi di jquery
seperti animasi.. contoh fade in
di jquery cukup di tuliskan seperti ini
$(‘#idDiv’).fadeIn();
$(‘#idDiv’).fadeOut();
kalo dengan fromscatch cukup ribet.. :P

var element = document.getElementById(eid);
if(element == null)
return;

if(element.FadeState == null)
{
if(element.style.opacity == null
|| element.style.opacity == ''
|| element.style.opacity == '1')
{
element.FadeState = 2;
}
else
{
element.FadeState = -2;
}
}

if(element.FadeState == 1 || element.FadeState == -1)
{
element.FadeState = element.FadeState == 1 ? -1 : 1;
element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
}
else
{
element.FadeState = element.FadeState == 2 ? -1 : 1;
element.FadeTimeLeft = TimeToFade;
setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
}

Info lengkap bisa di liat di sini:

FootPrints

Posted: July 24, 2010 in Lounge

Suatu malam aku bermimpi
Aku berjalan di tepi pantai dengan Tuhan
Di bentangan langit gelap tampak kilasan-kilasan adegan hidupku
Di tiap adegan, aku melihat dua pasang jejak kaki di pasir
Satu pasang jejak kakiku, yang lain jejak kaki Tuhan.
Ketika adegan terakhir terlintas di depanku
Aku menengok kembali pada jejak kaki di pasir.
Di situ hanya ada satu pasang jejak.
Aku mengingat kembali bahwa itu adalah bagian yang tersulit Dan paling
menyedihkan dalam hidupku.
Hal ini menganggu perasaanku maka aku bertanya Kepada Tuhan tentang
keherananku itu.
“Tuhan, Engkau berkata ketika aku berketetapan mengikut Engkau, Engkau
akan berjalan dan berbicara dengan aku sepanjang jalan,
Namun ternyata pada masa yang paling sulit
Dalam hidupku hanya ada satu pasang jejak.
Aku tidak mengerti mengapa justru pada saat aku sangat membutuhkan
Engkau,
Engkau meninggalkan aku?”
Tuhan berbisik, “Anakku yang Kukasihi
Aku mencintai kamu dan takkan meninggalkan kamu
Pada saat sulit dan penuh bahaya sekalipun.
Ketika kamu melihat hanya ada satu pasang jejak ,
ltu adalah ketika Aku menggendong kamu

~ Margaret Fishback