<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Fusebox PHP Indonesia</title>
	<atom:link href="http://blog.fbxphpindonesia.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.fbxphpindonesia.com</link>
	<description>Blog Pengguna Fusebox PHP Indonesia</description>
	<pubDate>Tue, 04 Aug 2009 04:11:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Multiple Application pada Fusebox 5</title>
		<link>http://blog.fbxphpindonesia.com/?p=142</link>
		<comments>http://blog.fbxphpindonesia.com/?p=142#comments</comments>
		<pubDate>Sun, 02 Aug 2009 05:14:30 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Fusebox Umum]]></category>

		<category><![CDATA[Tips Pengembangan]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=142</guid>
		<description><![CDATA[Fusebox 5 mempunyai fasilitas untuk membuat beberapa aplikasi fusebox dalam satu aplikasi php. Apa yang menjadikan ini menarik? karena dengan fasilitas ini kita dapat memecah aplikasi yang kompleks menjadi satuan-satuan yang lebih kecil sehingga lebih mudah dikelola.

Anggaplah Anda membuat suatu aplikasi rumah sakit, dalam sistem rumah sakit mungkin terdapat beberapa sub aplikasi seperti registrasi, rekam [...]]]></description>
			<content:encoded><![CDATA[<p>Fusebox 5 mempunyai fasilitas untuk membuat beberapa aplikasi fusebox dalam satu aplikasi php. Apa yang menjadikan ini menarik? karena dengan fasilitas ini kita dapat memecah aplikasi yang kompleks menjadi satuan-satuan yang lebih kecil sehingga lebih mudah dikelola.<br />
<span id="more-142"></span><br />
Anggaplah Anda membuat suatu aplikasi rumah sakit, dalam sistem rumah sakit mungkin terdapat beberapa sub aplikasi seperti registrasi, rekam medis, apotik, laboratorium dan lain-lain. Dengan menggunakan fasilitas multiple application kita dapat membuat kanal(channel) sendiri untuk setiap sub aplikasi tersebut.</p>
<p>Untuk membuat lebih mudah dimengerti, intinya adalah kita membuat beberapa aplikasi fusebox pada satu aplikasi php. Jadi dalam satu virtual directory terdapat beberapa aplikasi fusebox.</p>
<p>Setiap membuat aplikasi fusebox, saya selalu menentukan struktur direktori terlebih dahulu. Misal dalam aplikasi rumah sakit kita menentukan struktur direktori sebagai berikut:</p>
<pre style="overflow-x:auto">
hospital/
-------/index.php
-------/registrasi.php
-------/rm.php
-------/apotik.php
-------/kasir.php
-------/modules/
---------------/index/
---------------------/circuits/
---------------------/parsed/
---------------------/fusebox.xml.php
---------------/registrasi/
------------------------/circuits/
------------------------/parsed/
------------------------/fusebox.xml.php
---------------/rm/
------------------/circuits/
------------------/parsed/
------------------/fusebox.xml.php
---------------/apotik/
---------------------/circuits/
---------------------/parsed/
---------------------/fusebox.xml.php
---------------/kasir/
--------------------/circuits/
--------------------/parsed/
--------------------/fusebox.xml.php
-------/apps/
------------/fusebox.core/
-------------------------/*.* (berisi file-file core fusebox)
------------/common/
--------------------/circuits/
----------------------------/* (berisi circuit-circuit umum, atau circuit bersama yang dapat diakses setiap kanal)
</pre>
<p>Dari contoh struktur direktori diatas, anggaplah root dari aplikasi diakses melalui http://localhost/hospital. Kemudian bisa kita lihat beberapa kanal dari aplikasi rumah sakit tersebut, dan detail aplikasinya ada pada direktori modules/. </p>
<p>Perhatikan bahwa dalam satu aplikasi php diatas, terdapat beberapa file fusebox.xml, inilah yang disebut dengan multiple application. Apa keuntungannya? tentu saja aplikasi menjadi lebih mudah dikelola, selain itu hasil file parsed pun bisa lebih kecil karena dibagi-bagi per sub aplikasi.</p>
<p>Dengan demikian kita perlu melakukan pemetaan agar aplikasi yang diakses menunjuk ke modul yang bersesuaian. Anggap index adalah kanal untuk aplikasi master data (dokter, poli, ruangan, dan lain-lain), jadi file index.php bisa berisi:</p>
<pre name="code" class="php">

$FUSEBOX_APPLICATION_NAME = &quot;Hospital&quot;;
$FUSEBOX_APPLICATION_PATH = &quot;modules/index/&quot;;
$FUSEBOX_APPLICATION_KEY = &quot;index&quot;;
@include($FUSEBOX_APPLICATION_PATH.&quot;parsed/app_&quot;.$FUSEBOX_APPLICATION_NAME.&quot;.php&quot;);
include(&quot;apps/fusebox.core/fusebox5.php&quot;);
</pre>
<p>Sehingga path aplikasi mengarah ke modules/index/ sedangkan key ($FUSEBOX_APPLICATION_KEY) kita beri nama &#8220;index&#8221;. Karena key bebeda-beda, maka untuk mengakses $self/$myself harus dapat dinamis. Untuk membuat $self/$myself dinamis kita perlu membuat kode sebagai berikut:</p>
<pre name="code" class="php">

$self = $_fba-&gt;appKey.&quot;.php&quot;;
$myself = $self.&quot;?&quot;.$_fba-&gt;fuseactionVariable.&quot;=&quot;;
</pre>
<p>$_fba adalah objek bawaan fusebox, appKey adalah properti key yang sedang aktif, dalam hal ini $_fba->appKey akan berisi &#8220;index&#8221;. Sehingga variabel $self berisi &#8220;index.php&#8221;, dan $myself berisi &#8220;index.php?fuseaction=&#8221;.</p>
<p>Untuk membuat kanal yang lain pun sama, kita hanya perlu mengubah application path dan application key saja, dan untuk mengaksesnya sesuaikan dengan nama filenya, misal http://localhost/hospital/registrasi.php untuk kanal registrasi.</p>
<p>Kode untuk variabel $self dan $myself sebaiknya berada pada circuit bersama, misal kita membuat circuit global dan setting $self dan $myself berada pada fuseaction settings, sehingga setiap fusebox.xml dalam suatu kanal dapat mengakses fuseaction global.settings pada &lt;preprocess&gt; nya.</p>
<p>Happy fuseboxing <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=142</wfw:commentRss>
		</item>
		<item>
		<title>Tag set pada circuit.xml</title>
		<link>http://blog.fbxphpindonesia.com/?p=132</link>
		<comments>http://blog.fbxphpindonesia.com/?p=132#comments</comments>
		<pubDate>Sat, 01 Aug 2009 05:05:39 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Circuit XML]]></category>

		<category><![CDATA[circuit]]></category>

		<category><![CDATA[evaluate]]></category>

		<category><![CDATA[set]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=132</guid>
		<description><![CDATA[Tag set (&#60;set/&#62;) dalam circuit.xml berfungsi sebagai tag untuk penugasan variabel, namun dalam situasi tertentu kita dapat menggunakan tag set untuk mengevaluasi kode PHP.

Berikut ini adalah contoh tag set secara umum:


&#60;set name=&#34;nama&#34; value=&#34;Yerie Piscesa&#34;/&#62;

atau jika value nya berupa variabel:


&#60;set name=&#34;nama&#34; value=&#34;{$attributes[&#039;name&#039;]}&#34;/&#62;

Dengan menggunakan tag set, variabel dengan nama &#8220;nama&#8221; dapat kita akses melalui fuse dengan aturan [...]]]></description>
			<content:encoded><![CDATA[<p>Tag set (&lt;set/&gt;) dalam circuit.xml berfungsi sebagai tag untuk penugasan variabel, namun dalam situasi tertentu kita dapat menggunakan tag set untuk mengevaluasi kode PHP.<br />
<span id="more-132"></span><br />
Berikut ini adalah contoh tag set secara umum:</p>
<pre name="code" class="xml">

&lt;set name=&quot;nama&quot; value=&quot;Yerie Piscesa&quot;/&gt;
</pre>
<p>atau jika value nya berupa variabel:</p>
<pre name="code" class="xml">

&lt;set name=&quot;nama&quot; value=&quot;{$attributes[&#039;name&#039;]}&quot;/&gt;
</pre>
<p>Dengan menggunakan tag set, variabel dengan nama &#8220;nama&#8221; dapat kita akses melalui fuse dengan aturan php, yaitu $nama (menggunakan tanda dollar).  </p>
<p>Tag set mempunyai 3 buah atribut, yaitu name, value dan evalute. Atribut name dan value adalah pasangan nama variabel (name) dan isi/nilainya (value). Atribut evaluate memiliki nilai true/false, menandakan apakah isi atribut value perlu di evaluasi sebagai statement php. Perhatikan contoh dibawah ini:</p>
<pre name="code" class="xml">

&lt;set name=&quot;a&quot; value=&quot;{$attributes[&#039;a&#039;]}&quot;/&gt;
&lt;set value=&quot;echo \$a;&quot; evaluate=&quot;true&quot;/&gt;
&lt;set value=&quot;\$arr = array(1,2,3);&quot; evaluate=&quot;true&quot;/&gt;
&lt;set value=&quot;var_dump(\$arr);&quot; evaluate=&quot;true&quot;/&gt;
</pre>
<p>Perhatikan contoh diatas, atribut evaluate jika diisi true maka akan mengevaluasi/mengeksekusi nilai dalam atribut value sebagai kode php. Jika atribut name tidak didefinisikan maka fusebox akan menciptakan variabel acak sebagai penampung value. Contoh hasil parsing dari kode &lt;set value=&#8221;var_dump(\$arr);&#8221; evaluate=&#8221;true&#8221;/&gt; adalah:</p>
<pre name="code" class="php">

$fb_[&#039;4a73cc6e3aac3&#039;] = eval(&quot;var_dump(\$arr);&quot;);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=132</wfw:commentRss>
		</item>
		<item>
		<title>Menggunakan Class pada Fusebox</title>
		<link>http://blog.fbxphpindonesia.com/?p=118</link>
		<comments>http://blog.fbxphpindonesia.com/?p=118#comments</comments>
		<pubDate>Fri, 31 Jul 2009 09:43:49 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Langkah-langkah]]></category>

		<category><![CDATA[Object Oriented Programming]]></category>

		<category><![CDATA[Tips Pengembangan]]></category>

		<category><![CDATA[class]]></category>

		<category><![CDATA[fusebox]]></category>

		<category><![CDATA[object]]></category>

		<category><![CDATA[OOP]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=118</guid>
		<description><![CDATA[Dalam OOP, class dan objek adalah hal dasar yang perlu diketahui untuk dapat membuat aplikasi menggunakan pendekatan ini. Jika Anda sudah pernah menggunakan class pada php dan ingin mengimplementasikan pada fusebox, maka disinilah Anda bisa memulainya 

Misal Anda mempunyai class Karyawan, dengan kode sebagai berikut:


class Karyawan {
  private $DB;
  public function __construct(){
  [...]]]></description>
			<content:encoded><![CDATA[<p>Dalam OOP, class dan objek adalah hal dasar yang perlu diketahui untuk dapat membuat aplikasi menggunakan pendekatan ini. Jika Anda sudah pernah menggunakan class pada php dan ingin mengimplementasikan pada fusebox, maka disinilah Anda bisa memulainya <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-118"></span><br />
Misal Anda mempunyai class Karyawan, dengan kode sebagai berikut:</p>
<pre name="code" class="php">

class Karyawan {
  private $DB;
  public function __construct(){
    global $db;
    $this-&gt;DB = $db;
  }
  public function getByNIP($nip) {
    $db = $this-&gt;DB;
    $sql = &quot;select * from karyawan where nip=?&quot;;
    return $db-&gt;GetRow($sql,array($nip));
  }
}
</pre>
<p>Bagaimana menerapkannya pada fusebox? Pada file fusebox.xml buatlah tag &lt;classes&gt; jika belum ada dibawah root &lt;fusebox&gt;. Kemudian tambahkan tag class di dalam tag classes tersebut:</p>
<pre name="code" class="xml">

&lt;class alias=&quot;Karyawan&quot; classpath=&quot;classes/Karyawan.php&quot; /&gt;
</pre>
<p>Dengan menambahkan tag class, maka class Karyawan dapat digunakan pada semua circuit dalam aplikasi fusebox tersebut. Berikut adalah contoh penggunaannya dalam circuit.xml:</p>
<pre name="code" class="xml">

&lt;instantiate class=&quot;Karyawan&quot; object=&quot;karyawan&quot;/&gt;
&lt;invoke object=&quot;karyawan&quot; methodcall=&quot;getByNIP($attributes[&#039;nip&#039;])&quot; returnvariable=&quot;data&quot; /&gt;
&lt;include template=&quot;dsp_data&quot; /&gt;
</pre>
<p>Tag instantiate jika diterjemahkan kedalam kode php menjadi:<br />
$karyawan = new Karyawan;<br />
Sedangkan tag invoke jika diterjemahkan kedalam php menjadi:<br />
$data = $karyawan-&gt;getByNIP($attributes['nip']);<br />
Karena tag invoke mengembalikan variabel $data, maka dapat kita gunakan dalam fuse dsp_data, sebagai berikut:</p>
<pre name="code" class="php">

&lt;?php
echo &quot;Detail Karyawan&lt;br/&gt;&quot;;
echo &quot;NIP: &quot; .$data[&#039;nip&#039;].&quot;&lt;br/&gt;&quot;;
echo &quot;Nama : &quot; . $data[&#039;nama&#039;].&quot;&lt;br/&gt;&quot;;
echo &quot;Alamat: &quot; .$data[&#039;alamat&#039;].&quot;&lt;br/&gt;&quot;;
?&gt;
</pre>
<p>Dengan demikian kita juga menerapkan pola MVC(Model-View-Controller) walaupun secara implisit. Dapat kita lihat bahwa class adalah model dari aplikasi kita, kemudian file fuse (.php) adalah viewnya dan semuanya dikontrol melalui circuit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=118</wfw:commentRss>
		</item>
		<item>
		<title>Melakukan Validasi Pada Input</title>
		<link>http://blog.fbxphpindonesia.com/?p=111</link>
		<comments>http://blog.fbxphpindonesia.com/?p=111#comments</comments>
		<pubDate>Wed, 18 Mar 2009 10:14:24 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Langkah-langkah]]></category>

		<category><![CDATA[input]]></category>

		<category><![CDATA[validasi]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=111</guid>
		<description><![CDATA[Dalam membuat aplikasi database, validasi adalah hal yang penting untuk mencegah user memasukkan data yang tidak sesuai, atau paling tidak user tidak diizinkan mengirim form dalam keadaan kosong. Dalam kesempatan ini saya akan memberikan contoh validasi input dalam aplikasi fusebox, contoh ini adalah kelanjutan dari posting sebelumnya &#8216;Membuat Aplikasi Database&#8217; Bagian 1,2,3.

Ok, buka kembali aplikasi [...]]]></description>
			<content:encoded><![CDATA[<p>Dalam membuat aplikasi database, validasi adalah hal yang penting untuk mencegah user memasukkan data yang tidak sesuai, atau paling tidak user tidak diizinkan mengirim form dalam keadaan kosong. Dalam kesempatan ini saya akan memberikan contoh validasi input dalam aplikasi fusebox, contoh ini adalah kelanjutan dari posting sebelumnya &#8216;Membuat Aplikasi Database&#8217; Bagian 1,2,3.</p>
<p><span id="more-111"></span></p>
<p>Ok, buka kembali aplikasi <a href="http://blog.fbxphpindonesia.com/publicfiles/fbxdb.zip">fbxdb</a> Anda. Masuk ke circuit jabatan, kemudian tambahkan file &#8216;act_validate.php&#8217; pada direktori tersebut (app/modules/jabatan/). Buatlah validasi yang dibutuhkan pada halaman tersebut, misal kode dan nama tidak boleh kosong, serta kode tidak boleh ganda. Berikut contohnya:</p>
<pre name="code" class="php">
&lt;?php
$isValid = true;
if(trim($_POST[&#039;kode&#039;]) == &quot;&quot;) {
  $isValid = false;
  $err[&#039;kode&#039;] = &quot;Kode tidak boleh kosong!&quot;;
}
if($_POST[&#039;kode&#039;] != &quot;&quot;) {
  if ($myFusebox-&gt;originalFuseaction == &quot;insert&quot;) {
    $sql = sprintf(&quot;select kode from jabatan where kode=%s &quot;,quote(trim($_POST[&#039;kode&#039;]),&#039;string&#039;,true));
  } else {
    $sql = sprintf(&quot;select kode from jabatan where kode=%s and not id=%s&quot;,
    quote(trim($_POST[&#039;kode&#039;]),&#039;string&#039;,true),
    quote($_POST[&#039;id&#039;],&#039;number&#039;));
  }
  $qry = mysql_query($sql) or die(mysql_error());
  $rowFound = mysql_num_rows($qry);
  if ($rowFound != 0) {
    $isValid = false;
    $err[&#039;kode&#039;] = &quot;Kode sudah digunakan!&quot;;
  }
}
if(trim($_POST[&#039;nama&#039;]) == &quot;&quot;) {
  $isValid = false;
  $err[&#039;nama&#039;] = &quot;Nama jabatan tidak boleh kosong!&quot;;
}
if (!$isValid) $errormessage = &quot;Data tidak dapat disimpan, periksa kembali isian Anda !&quot;;
?&gt;
</pre>
<p>Dalam script diatas, variabel $isValid adalah indikator dari validasi tersebut, apabila bernilai false variabel $err dan $errormessage akan memiliki nilai.</p>
<p>Kemudian langkah selanjutnya adalah melakukan perubahan di fuse dsp_form, berikut script dari dsp_form.php:</p>
<pre name="code" class="php">

&lt;?php
if(!$isPostBack) {
$err = null;
} else {
if (!$isValid) $row = $_POST;
}
?&gt;
&lt;h2&gt;&lt;?php echo $formTitle; ?&gt;&lt;/h2&gt;

&lt;?php if ($isPostBack &amp;amp;amp;amp;&amp;amp;amp;amp; $message != &quot;&quot;) { ?&gt;
&lt;div class=&quot;success&quot;&gt;&lt;?php echo $message; ?&gt;&lt;/div&gt;
&lt;?php } ?&gt;

&lt;?php if ($isPostBack &amp;amp;amp;amp;&amp;amp;amp;amp; $errormessage != &quot;&quot;) { ?&gt;
&lt;div class=&quot;error&quot;&gt;&lt;?php echo $errormessage; ?&gt;&lt;/div&gt;
&lt;?php } ?&gt;

&lt;form action=&quot;&lt;?php echo $myself.$XFA[&quot;submitPost&quot;]; ?&gt;&quot; method=&quot;post&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $id; ?&gt;&quot;/&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;kode&quot; id=&quot;kode&quot; value=&quot;&lt;?php echo $row[&quot;kode&quot;]; ?&gt;&quot; size=&quot;10&quot; maxlength=&quot;10&quot;/&gt;
&lt;?php echo $err[&#039;kode&#039;]; ?&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jabatan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;nama&quot; id=&quot;nama&quot; value=&quot;&lt;?php echo $row[&quot;nama&quot;]; ?&gt;&quot; size=&quot;50&quot; maxlength=&quot;100&quot;/&gt;
&lt;?php echo $err[&#039;nama&#039;]; ?&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;amp;amp;amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;submit&quot;/&gt;
&lt;input type=&quot;reset&quot;/&gt;
&lt;a href=&quot;&lt;?php echo $myself.$XFA[&quot;list&quot;]; ?&gt;&quot;&gt;List Jabatan&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
</pre>
<p>Langkah terakhir adalah me-registrasi fuse act_validate pada circuit.xml. Cari fuseaction insert dan update, beri tambahan sebagai berikut:</p>
<pre name="code" class="xml">

&lt;fuseaction name=&quot;insert&quot;&gt;
  &lt;do action=&quot;global.setPostBack&quot;/&gt;
  &lt;include template=&quot;act_validate&quot;/&gt;
  &lt;if condition=&quot;$isValid&quot;&gt;
    &lt;true&gt;&lt;include template=&quot;act_insert&quot;/&gt;&lt;/true&gt;
  &lt;/if&gt;
  &lt;do action=&quot;add&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;update&quot;&gt;
  &lt;do action=&quot;global.setPostBack&quot;/&gt;
  &lt;include template=&quot;act_validate&quot;/&gt;
  &lt;if condition=&quot;$isValid&quot;&gt;
    &lt;true&gt;&lt;include template=&quot;act_update&quot;/&gt;&lt;/true&gt;
  &lt;/if&gt;
  &lt;do action=&quot;edit&quot;/&gt;
&lt;/fuseaction&gt;
</pre>
<p>Ok, dengan demikian validasi dapat digunakan dan kita dapat memisahkan validasi dari proses insert/update sehingga lebih mudah dikelola. Untuk aplikasi lengkap dapat di download <a href="http://blog.fbxphpindonesia.com/publicfiles/fbxdb-valid.zip"><strong>disini</strong></a></p>
<p>Sampai jumpa pada tulisan-tulisan selanjutnya.</p>
<p>Happy fuseboxing <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=111</wfw:commentRss>
		</item>
		<item>
		<title>Membuat Aplikasi Database (Bagian 3)</title>
		<link>http://blog.fbxphpindonesia.com/?p=103</link>
		<comments>http://blog.fbxphpindonesia.com/?p=103#comments</comments>
		<pubDate>Fri, 13 Mar 2009 12:17:33 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Langkah-langkah]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=103</guid>
		<description><![CDATA[Pada bagian sebelumnya kita telah membuat outline direktori, database, dan membuat struktur aplikasi fusebox  serta menentukan circuit-circuit yang diperlukan. Sekarang saatnya melakukan fusecoding, yaitu membuat kode php yang sudah ditentukan melalui circuit.xml.
Kita review dahulu file-file yang harus ada dari setiap circuit, berikut file-filenya:
Home

dsp_main.php

Global

act_setPostBack.php
myGlobals.php

Layout

lay_main.php
lay_blank.php

Db

config.php
db_function.php
act_connect.php

Jabatan

qry_list.php
dsp_list.php
qry_dataById.php
dsp_form.php
act_insert.php
act_update.php
act_delete.php

Karyawan

qry_list.php
dsp_list.php
qry_dataById.php
dsp_form.php
act_insert.php
act_update.php
act_delete.php

Disini saya tidak akan membuat keseluruhan dari fuse diatas, hanya bagian-bagian yang penting [...]]]></description>
			<content:encoded><![CDATA[<p>Pada bagian sebelumnya kita telah membuat outline direktori, database, dan membuat struktur aplikasi fusebox  serta menentukan circuit-circuit yang diperlukan. Sekarang saatnya melakukan fusecoding, yaitu membuat kode php yang sudah ditentukan melalui circuit.xml.</p>
<p><span id="more-103"></span>Kita review dahulu file-file yang harus ada dari setiap circuit, berikut file-filenya:</p>
<p>Home</p>
<ol>
<li>dsp_main.php</li>
</ol>
<p>Global</p>
<ol>
<li>act_setPostBack.php</li>
<li>myGlobals.php</li>
</ol>
<p>Layout</p>
<ol>
<li>lay_main.php</li>
<li>lay_blank.php</li>
</ol>
<p>Db</p>
<ol>
<li>config.php</li>
<li>db_function.php</li>
<li>act_connect.php</li>
</ol>
<p>Jabatan</p>
<ol>
<li>qry_list.php</li>
<li>dsp_list.php</li>
<li>qry_dataById.php</li>
<li>dsp_form.php</li>
<li>act_insert.php</li>
<li>act_update.php</li>
<li>act_delete.php</li>
</ol>
<p>Karyawan</p>
<ol>
<li>qry_list.php</li>
<li>dsp_list.php</li>
<li>qry_dataById.php</li>
<li>dsp_form.php</li>
<li>act_insert.php</li>
<li>act_update.php</li>
<li>act_delete.php</li>
</ol>
<p>Disini saya tidak akan membuat keseluruhan dari fuse diatas, hanya bagian-bagian yang penting saja, untuk versi lengkapnya dapat di download pada bagian bawah post ini.</p>
<p>Hal menarik dari semua ini adalah, susunan file-file kita terlihat teratur dan pasti akan mudah merawat file-file tersebut. Hal menarik lain adalah walaupun file-file tersebut berada pada direktori sembarang, fusebox memperlakukan file-file tersebut seolah-olah berada pada root. Sehingga jika Anda ingin menambahkan menampilkan gambar, atribut src pada tag HTML nya dimulai dari root aplikasi. Contoh gambar berada pada direktori [root]/images/ dan kita akan menampilkan gambar pada direktori [root]/app/modules/karyawan/dsp_list.php :</p>
<pre name="code" class="html">
&lt;a href=&quot;#&quot;&gt;&lt;img src=&quot;images/edit.png&quot; align=&quot;left&quot;&gt; Ubah Data&lt;/a&gt;
</pre>
<p>Atau suatu saat kita perlu menambahkan library lain, dan kita meleakkan library tersebut pada [root]/libs/adodb/, dimanapun Anda ingin memanggil file dalam direktori tersebut, selama masih dalam scope fusebox (didefinisikan dalam fusebox.xml) maka pemanggilan dimulai dari root.</p>
<pre name="code" class="php">
&lt;?php
include_once &quot;libs/adodb/adodb.inc.php&quot;;
// another code here ...
?&gt;
</pre>
<p>Hal penting dalam membuat aplikasi database adalah menentukan setting dari database kita (nama database, host, username dan password). Dalam contoh ini konfigurasi tersebut kita definisikan dalam [root]/app/modules/db/config.php. Berikut contoh dari file config.php</p>
<pre name="code" class="php">
&lt;?php
$hostname = &quot;localhost&quot;;
$dbname = &quot;fbx_db&quot;;
$username = &quot;root&quot;;
$password = &quot;k0s0n6&quot;;
?&gt;
</pre>
<p>Jangan lupa untuk membuat file koneksinya:</p>
<pre name="code" class="php">
&lt;?php
// Filename: act_connect.php
$DB = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($dbname,$DB) or die(mysql_error());
?&gt;
</pre>
<p>Hal menarik lagi dalam pengembangan menggunakan fusebox adalah file kode menjadi sangat singkat, berikut adalah contoh dari file [root]/app/modules/jabatan/act_insert.php</p>
<pre name="code" class="php">
&lt;?php
$sql = sprintf(&quot;insert into jabatan(kode,nama) values(%s,%s)&quot;,
quote($_POST[&quot;kode&quot;],&quot;string&quot;,true),
quote($_POST[&quot;nama&quot;],&quot;string&quot;,true));
$query = mysql_query($sql) or die(mysql_error());
if ($query) $message = &quot;Data telah disimpan&quot;;
?&gt;
</pre>
<p>Oke sekian dulu untuk langkah-langkah kali ini, sampai jumpa pada tulisan selanjutnya. Untuk melihat seluruh kode dari aplikasi ini silahkan mendownloadnya <strong><a href="http://blog.fbxphpindonesia.com/publicfiles/fbxdb.zip">disini</a></strong>.</p>
<p>Happy fuseboxing <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=103</wfw:commentRss>
		</item>
		<item>
		<title>Membuat Aplikasi Database (Bagian 2)</title>
		<link>http://blog.fbxphpindonesia.com/?p=86</link>
		<comments>http://blog.fbxphpindonesia.com/?p=86#comments</comments>
		<pubDate>Sat, 21 Feb 2009 08:37:31 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Langkah-langkah]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[internal]]></category>

		<category><![CDATA[private]]></category>

		<category><![CDATA[public]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=86</guid>
		<description><![CDATA[Setelah membuat outline direktori dan membuat database beserta tabel-tabelnya, langkah selanjutnya adalah membuat struktur aplikasi fusebox kita, yaitu dengan mendefinisikan file fusebox.xml dan file-file circuit.xml
Lokasi file fusebox.xml adalah pada direktori yang kita tentukan melalui variabel $FUSEBOX_APPLICATION_PATH, yaitu pada fbxdb/app/, buatlah file fusebox.xml.php kemudian tulis script ini:

&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;fusebox&#62;
&#60;circuits&#62;
&#60;/circuits&#62;

&#60;classes&#62;
&#60;/classes&#62;

&#60;parameters&#62;
&#60;parameter name=&#34;defaultFuseaction&#34; value=&#34;&#34; /&#62;
&#60;parameter name=&#34;mode&#34; value=&#34;development-full-load&#34; /&#62;
&#60;parameter name=&#34;password&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Setelah membuat outline direktori dan membuat database beserta tabel-tabelnya, langkah selanjutnya adalah membuat struktur aplikasi fusebox kita, yaitu dengan mendefinisikan file fusebox.xml dan file-file circuit.xml</p>
<p><span id="more-86"></span>Lokasi file fusebox.xml adalah pada direktori yang kita tentukan melalui variabel $FUSEBOX_APPLICATION_PATH, yaitu pada fbxdb/app/, buatlah file fusebox.xml.php kemudian tulis script ini:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;fusebox&gt;
&lt;circuits&gt;
&lt;/circuits&gt;

&lt;classes&gt;
&lt;/classes&gt;

&lt;parameters&gt;
&lt;parameter name=&quot;defaultFuseaction&quot; value=&quot;&quot; /&gt;
&lt;parameter name=&quot;mode&quot; value=&quot;development-full-load&quot; /&gt;
&lt;parameter name=&quot;password&quot; value=&quot;pwdfbxdb&quot; /&gt;
&lt;parameter name=&quot;fuseactionVariable&quot; value=&quot;fuseaction&quot; /&gt;
&lt;parameter name=&quot;precedenceFormOrUrl&quot; value=&quot;form&quot; /&gt;
&lt;parameter name=&quot;scriptFileDelimiter&quot; value=&quot;php&quot; /&gt;
&lt;parameter name=&quot;maskedFileDelimiters&quot; value=&quot;htm,cfm,cfml,php,php4,asp,aspx&quot; /&gt;
&lt;parameter name=&quot;characterEncoding&quot; value=&quot;utf-8&quot; /&gt;
&lt;paramater name=&quot;strictMode&quot; value=&quot;false&quot; /&gt;
&lt;parameter name=&quot;allowImplicitCircuits&quot; value=&quot;false&quot; /&gt;
&lt;parameter name=&quot;debug&quot; value=&quot;false&quot;/&gt;
&lt;/parameters&gt;

&lt;globalfuseactions&gt;
&lt;appinit&gt;
&lt;/appinit&gt;
&lt;preprocess&gt;
&lt;/preprocess&gt;
&lt;postprocess&gt;
&lt;/postprocess&gt;
&lt;/globalfuseactions&gt;

&lt;plugins&gt;
&lt;phase name=&quot;preProcess&quot;&gt;
&lt;/phase&gt;
&lt;phase name=&quot;preFuseaction&quot;&gt;
&lt;/phase&gt;
&lt;phase name=&quot;postFuseaction&quot;&gt;
&lt;/phase&gt;
&lt;phase name=&quot;fuseactionException&quot;&gt;
&lt;/phase&gt;
&lt;phase name=&quot;postProcess&quot;&gt;
&lt;/phase&gt;
&lt;phase name=&quot;processError&quot;&gt;
&lt;/phase&gt;
&lt;/plugins&gt;
&lt;/fusebox&gt;
</pre>
<p>Sekarang pikirkan circuit yang mungkin untuk aplikasi kita. Circuit yang pasti harus ada adalah circuit jabatan dan karyawan, kemudian untuk koneksi database tentukan juga circuit db, tambahkan circuit-circuit lain yang kira-kira dibutuhkan, misal circuit global (untuk circuit yang selalu dipanggil pada setiap request atau circuit yang umum digunakan pada circuit yang lain), layout (untuk layouting aplikasi kita) dan home (sebagai circuit default).</p>
<p>Pertama-tama buatlah circuit defaultnya (home), tambahkan script berikut pada fusebox.xml dalam tag &lt;circuits&gt;</p>
<pre name="code" class="xml">
&lt;circuit alias=&quot;home&quot; path=&quot;modules/home/&quot; parent=&quot;&quot; /&gt;
</pre>
<p>Kemudian buatlah file circuit.xml pada path yang telah ditentukan diatas, tentukan fuseaction yang mungkin. Berikut adalah contohnya:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;public&quot;&gt;
&lt;fuseaction name=&quot;main&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
&lt;include template=&quot;dsp_main&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Sekarang kita dapat menentukan defaultFuseaction pada fusebox.xml.php:</p>
<pre name="code" class="xml">
&lt;parameter name=&quot;defaultFuseaction&quot; value=&quot;home.main&quot; /&gt;
</pre>
<p>Lanjutkan dengan membuat circuit global, layout dan db. Tambahkan tag &lt;circuit&gt; dalam &lt;circuits&gt;  dalam file fusebox.xml.php</p>
<pre name="code" class="xml">

&lt;circuit alias=&quot;global&quot; path=&quot;modules/global/&quot; parent=&quot;&quot;/&gt;
&lt;circuit alias=&quot;layout&quot; path=&quot;modules/layout/&quot; parent=&quot;&quot;/&gt;
&lt;circuit alias=&quot;db&quot; path=&quot;modules/db/&quot; parent=&quot;&quot; /&gt;
</pre>
<p>Kemudian buat file-file circuit.xml.php pada direktori yang sudah ditentukan diatas, tentukan pula fuseaction yang mungkin. Berikut adalah contohnya:</p>
<p>Circuit global:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;internal&quot;&gt;
&lt;fuseaction name=&quot;settings&quot;&gt;
&lt;set name=&quot;layout&quot; value=&quot;false&quot;/&gt;
&lt;include template=&quot;myGlobals&quot;/&gt;
&lt;/fuseaction&gt;
&lt;fuseaction name=&quot;setPostBack&quot;&gt;
&lt;include template=&quot;act_setPostBack&quot;/&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Circuit layout:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;public&quot;&gt;
&lt;fuseaction name=&quot;wrap&quot;&gt;
&lt;if condition=&quot;$withLayout==&#039;true&#039;&quot;&gt;
&lt;true&gt;
&lt;xfa name=&quot;home&quot; value=&quot;home.main&quot;/&gt;
&lt;xfa name=&quot;jabatan&quot; value=&quot;jabatan.list&quot;/&gt;
&lt;xfa name=&quot;karyawan&quot; value=&quot;karyawan.list&quot;/&gt;
&lt;include template=&quot;lay_main&quot;/&gt;
&lt;/true&gt;
&lt;false&gt;&lt;include template=&quot;lay_blank&quot;/&gt;&lt;/false&gt;
&lt;/if&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Circuit db:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;internal&quot;&gt;
&lt;fuseaction name=&quot;connect&quot;&gt;
&lt;include template=&quot;config&quot;/&gt;
&lt;include template=&quot;db_function&quot;/&gt;
&lt;include template=&quot;act_connect&quot;/&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Sebuah circuit dapat mempunyai access  internal atau public. Internal berarti semua fuseaction didalamnya bersifat internal, yaitu hanya dapat diakses melalui fuseaction tidak melalui URL, sedangkan public berarti semua fuseaction didalamnya bersifat public, yaitu setiap fuseaction dalam circuit ini dapat diakses langsung melalui URL. Internal adalah default dari circuit jika tidak didefinisikan.</p>
<p>Setiap fuseaction dalam circuit pun dapat kita tentukan access nya, nilai yang mungkin adalah private, internal, atau public. Konsep internal dan public sama seperti circuit, fuseaction private hanya dapat di akses melalui circuit yang sama.</p>
<p>Setelah membuat circuit global,layout dan db, ada hal yang perlu kita lakukan disini. Saya berfikir kalau setiap request harus memiliki setting default serta koneksi ke sumber data/database (walaupun tidak selalu) dan di akhir request fuseaction saya ingin membungkusnya dengan layout. Maka saya perlu menambahkan setting berikut pada fusebox.xml dalam tag &lt;globalfuseactions&gt;</p>
<pre name="code" class="xml">

&lt;preprocess&gt;
&lt;fuseaction action=&quot;global.settings&quot;/&gt;
&lt;fuseaction action=&quot;db.connect&quot;/&gt;
&lt;/preprocess&gt;
&lt;postprocess&gt;
&lt;fuseaction action=&quot;layout.wrap&quot;/&gt;
&lt;/postprocess&gt;
</pre>
<p>Jika Anda yakin bahwa koneksi ke sumber data selalu digunakan setiap kali request, jangan ragu-ragu untuk mendefinisikannya sebagai preprocess dalam globalfuseactions.</p>
<p>Saatnya kita buat circuit utama, yaitu jabatan dan karyawan. Buat dulu definisi circuitnya di fusebox.xml</p>
<pre name="code" class="xml">
        &lt;circuit alias=&quot;jabatan&quot; path=&quot;modules/jabatan/&quot; parent=&quot;&quot; /&gt;
&lt;circuit alias=&quot;karyawan&quot; path=&quot;modules/karyawan/&quot; parent=&quot;&quot; /&gt;
</pre>
<p>Kemudian buat circuit.xml.php pada direktori bersangkutan.</p>
<p>Circuit jabatan:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;public&quot;&gt;
&lt;fuseaction name=&quot;list&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;

&lt;xfa name=&quot;add&quot; value=&quot;jabatan.add&quot;/&gt;
&lt;xfa name=&quot;edit&quot; value=&quot;jabatan.edit&quot;/&gt;
&lt;xfa name=&quot;delete&quot; value=&quot;jabatan.delete&quot;/&gt;

&lt;include template=&quot;qry_list&quot;/&gt;
&lt;include template=&quot;dsp_list&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;add&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
&lt;set name=&quot;formTitle&quot; value=&quot;Tambah Data Jabatan&quot;/&gt;

&lt;xfa name=&quot;submitPost&quot; value=&quot;jabatan.insert&quot;/&gt;
&lt;xfa name=&quot;list&quot; value=&quot;jabatan.list&quot;/&gt;

&lt;include template=&quot;dsp_form&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;edit&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
&lt;set name=&quot;formTitle&quot; value=&quot;Ubah Data Jabatan&quot;/&gt;
&lt;set name=&quot;id&quot; value=&quot;{$attributes[&#039;id&#039;]}&quot;/&gt;

&lt;xfa name=&quot;submitPost&quot; value=&quot;jabatan.update&quot;/&gt;
&lt;xfa name=&quot;list&quot; value=&quot;jabatan.list&quot;/&gt;

&lt;include template=&quot;qry_dataById&quot;/&gt;
&lt;include template=&quot;dsp_form&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;insert&quot;&gt;
&lt;do action=&quot;global.setPostBack&quot;/&gt;
&lt;include template=&quot;act_insert&quot;/&gt;
&lt;do action=&quot;add&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;update&quot;&gt;
&lt;do action=&quot;global.setPostBack&quot;/&gt;
&lt;include template=&quot;act_update&quot;/&gt;
&lt;do action=&quot;edit&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;delete&quot;&gt;
&lt;include template=&quot;act_delete&quot;/&gt;
&lt;relocate url=&quot;{$myself}jabatan.list&quot;/&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Circuit karyawan:</p>
<pre name="code" class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;circuit access=&quot;public&quot;&gt;
&lt;fuseaction name=&quot;list&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;

&lt;xfa name=&quot;add&quot; value=&quot;karyawan.add&quot;/&gt;
&lt;xfa name=&quot;edit&quot; value=&quot;karyawan.edit&quot;/&gt;
&lt;xfa name=&quot;delete&quot; value=&quot;karyawan.delete&quot;/&gt;

&lt;include template=&quot;qry_list&quot;/&gt;
&lt;include template=&quot;dsp_list&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;add&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
&lt;set name=&quot;formTitle&quot; value=&quot;Tambah Data Karyawan&quot;/&gt;

&lt;xfa name=&quot;submitPost&quot; value=&quot;karyawan.insert&quot;/&gt;
&lt;xfa name=&quot;list&quot; value=&quot;karyawan.list&quot;/&gt;

&lt;include template=&quot;qry_list&quot; circuit=&quot;jabatan&quot;/&gt;
&lt;set value=&quot;\$jabatan_options = \$rows;&quot; evaluate=&quot;true&quot;/&gt;
&lt;include template=&quot;dsp_form&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;edit&quot;&gt;
&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
&lt;set name=&quot;formTitle&quot; value=&quot;Ubah Data Karyawan&quot;/&gt;
&lt;set name=&quot;id&quot; value=&quot;{$attributes[&#039;id&#039;]}&quot;/&gt;

&lt;xfa name=&quot;submitPost&quot; value=&quot;karyawan.update&quot;/&gt;
&lt;xfa name=&quot;list&quot; value=&quot;karyawan.list&quot;/&gt;

&lt;include template=&quot;qry_list&quot; circuit=&quot;jabatan&quot;/&gt;
&lt;set value=&quot;\$jabatan_options = \$rows;&quot; evaluate=&quot;true&quot;/&gt;
&lt;include template=&quot;qry_dataById&quot;/&gt;

&lt;include template=&quot;dsp_form&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;insert&quot;&gt;
&lt;do action=&quot;global.setPostBack&quot;/&gt;
&lt;include template=&quot;act_insert&quot;/&gt;
&lt;do action=&quot;add&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;update&quot;&gt;
&lt;do action=&quot;global.setPostBack&quot;/&gt;
&lt;include template=&quot;act_update&quot;/&gt;
&lt;do action=&quot;edit&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;delete&quot;&gt;
&lt;include template=&quot;act_delete&quot;/&gt;
&lt;relocate url=&quot;{$myself}karyawan.list&quot;/&gt;
&lt;/fuseaction&gt;
&lt;/circuit&gt;
</pre>
<p>Oke&#8230;. kita telah selesai membuat struktur aplikasi. Hal yang penting dilakukan disini adalah membuat algoritma yang kemudian dituangkan melalui fusebox.xml dan circuit.xml, sehingga file-file tersebut dapat dijadikan panduan untuk melakukan perawatan aplikasi pada masa yang akan datang.</p>
<p>Bagian selanjutnya adalah melakukan fusecoding untuk menyempurnakan pembuatan aplikasi kita.</p>
<p>Happy fuseboxing <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=86</wfw:commentRss>
		</item>
		<item>
		<title>Membuat Aplikasi Database (Bagian 1)</title>
		<link>http://blog.fbxphpindonesia.com/?p=79</link>
		<comments>http://blog.fbxphpindonesia.com/?p=79#comments</comments>
		<pubDate>Sat, 21 Feb 2009 06:44:40 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Langkah-langkah]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.fbxphpindonesia.com/?p=79</guid>
		<description><![CDATA[Kali ini saya akan berikan contoh sederhana pembuatan aplikasi database dengan menggunakan fusebox php versi 5.1. Jika Anda belum memilikinya silahkan download pada website resmi fusebox di http://www.fusebox.org.

Dalam setiap membuat aplikasi fusebox, saya selalu menentukan outline dari direktori yang akan digunakan. Baiklah, saya tentukan saja direktori-direktori tersebut (catatan: outline direktori ini hanya contoh, Anda dapat [...]]]></description>
			<content:encoded><![CDATA[<p>Kali ini saya akan berikan contoh sederhana pembuatan aplikasi database dengan menggunakan fusebox php versi 5.1. Jika Anda belum memilikinya silahkan download pada website resmi fusebox di <a href="http://www.fusebox.org" target="_blank">http://www.fusebox.org</a>.</p>
<p><span id="more-79"></span></p>
<p>Dalam setiap membuat aplikasi fusebox, saya selalu menentukan outline dari direktori yang akan digunakan. Baiklah, saya tentukan saja direktori-direktori tersebut (catatan: outline direktori ini hanya contoh, Anda dapat membuat outline sendiri sesuai keinginan Anda) :</p>
<p>fbxdb/<br />
&#8212;&#8212;&#8211;/app/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;/fusebox.core/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;/modules/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;/parsed/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;/fusebox.xml.php<br />
&#8212;&#8212;&#8211;/images/<br />
&#8212;&#8212;&#8211;/styles/<br />
&#8212;&#8212;&#8211;/index.php</p>
<p>Root direktori adalah fbxdb yang diletakkan dibawah root webserver (sehingga dapat di akses melalui http://localhost/fbxdb), app adalah direktori dari aplikasi yang akan kita buat, didalamnya terdapat direktori fusebox.core/, masukkan semua core files fusebox dalam direktori tersebut. Direktori parsed/ digunakan fusebox untuk menghasilkan file-file php, direktori ini harus memiliki permission 777. Direktori modules/ adalah direktori utama aplikasi kita, circuit-circuit akan kita masukkan disini.</p>
<p>Pada root direktori terdapat file index.php, file tersebut masih kosong sehingga perlu kita buat scriptnya.</p>
<pre name="code" class="php">

&lt;?php
$FUSEBOX_APPLICATION_NAME = &quot;fbxdb&quot;;
$FUSEBOX_APPLICATION_PATH = &quot;app/&quot;;
$FUSEBOX_APPLICATION_KEY = &quot;fusebox&quot;;
@include($FUSEBOX_APPLICATION_PATH.&quot;parsed/app_&quot;.$FUSEBOX_APPLICATION_NAME.&quot;.php&quot;);
include(&quot;app/fusebox.core/fusebox5.php&quot;);
?&gt;
</pre>
<p>Pada file index terdapat beberapa variabel bawaan Fusebox yang perlu disetting, yaitu:</p>
<ul>
<li>$FUSEBOX_APPLICATION_NAME,<br />
Menentukan nama dari aplikasi yang kita bangun, jika tidak didefinisikan, variabel ini berisi &#8220;cacheddata&#8221;</li>
<li>$FUSEBOX_APPLICATION_PATH<br />
Menentukan direktori dimana file fusebox.xml dan direktori parsed diletakkan.  Jika tidak didefinisikan, application path berda pada root.</li>
<li>FUSEBOX_APPLICATION_KEY<br />
Menentukan key aplikasi aktif. Fusebox 5 mengizinkan untuk membuat aplikasi multiple yang setiap aplikasi dibedakan dengan key ini. Secara default variabel ini bernilai &#8220;fusebox&#8221;.</li>
</ul>
<p>Ok, outline direktori telah kita lakukan, hal selanjutnya adalah menyiapkan databasenya. Karena ini hanya contoh, maka buatlah database yang simple, misal kita akan membuat database untuk menyimpan nama-nama karyawan beserta jabatannya, RDBMS yang digunakan adalah MySQL. Buat database, beri nama fbx_db, kemudian buat tabel-tabel berikut:</p>
<pre name="code" class="sql">
CREATE TABLE `jabatan` (
`id` int(11) NOT NULL auto_increment,
`kode` varchar(10) NOT NULL,
`nama` varchar(100) NOT NULL,
PRIMARY KEY  (`id`),
UNIQUE KEY `kode` (`kode`)
) ENGINE=MyISAM;

CREATE TABLE `karyawan` (
`id` bigint(20) NOT NULL auto_increment,
`kode` varchar(15) NOT NULL,
`nama` varchar(100) NOT NULL,
`id_jabatan` int(11) NOT NULL,
`alamat` varchar(255) default NULL,
`telepon` varchar(20) default NULL,
`hp` varchar(20) default NULL,
`email` varchar(255) default NULL,
`website` varchar(255) default NULL,
PRIMARY KEY  (`id`),
UNIQUE KEY `kode` (`kode`)
) ENGINE=MyISAM;
</pre>
<p>Oke&#8230; sekian dulu untuk bagian pertama, bagian selanjutnya adalah membuat fusebox.xml dan circuit.xml.</p>
<p>Happy fuseboxing <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=79</wfw:commentRss>
		</item>
		<item>
		<title>Konsep OOP dan MVC Pada Fusebox</title>
		<link>http://blog.fbxphpindonesia.com/?p=71</link>
		<comments>http://blog.fbxphpindonesia.com/?p=71#comments</comments>
		<pubDate>Tue, 03 Feb 2009 11:14:21 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Model-View-Controller]]></category>

		<category><![CDATA[Object Oriented Programming]]></category>

		<guid isPermaLink="false">http://fbxphpindonesia.wordpress.com/?p=71</guid>
		<description><![CDATA[Fusebox adalah framework yang fleksibel dalam menentukan teknik pemrograman yang ingin Anda terapkan dalam aplikasi Anda. Pola pengembangan yang sedang &#8220;trend&#8221; saat ini mungkin pola Model-View-Controller (MVC) karena pola ini memisahkan antara logika dan presentasi sehingga aplikasi lebih mudah dikelola dan dirawat. Selain itu penggunaan teknik/metoda Object Oriented Programming (OOP) juga yang paling sering digunakan [...]]]></description>
			<content:encoded><![CDATA[<p>Fusebox adalah framework yang fleksibel dalam menentukan teknik pemrograman yang ingin Anda terapkan dalam aplikasi Anda. Pola pengembangan yang sedang &#8220;trend&#8221; saat ini mungkin pola Model-View-Controller (MVC) karena pola ini memisahkan antara logika dan presentasi sehingga aplikasi lebih mudah dikelola dan dirawat. Selain itu penggunaan teknik/metoda Object Oriented Programming (OOP) juga yang paling sering digunakan dewasa ini.</p>
<p><span id="more-71"></span>Kita pun dapat membangun sebuah aplikasi menggunakan metoda OOP dan pola MVC menggunakan fusebox, dalam fusebox.xml terdapat tag &lt;classes&gt; yang berfungsi untuk me-registrasi class-class pada aplikasi kita, yang nantinya dapat di akses melalui &lt;instatiate&gt; dan &lt;invoke&gt; pada circuit.xml. Dengan menggunakan konsep OOP secara tidak langsung aplikasi Anda akan mempunyai pola MVC (implicit MVC). Sekarang bayangkan dalam root direktori aplikasi Anda mempunyai direktori classes/ dan circuits/, kemudian masukkan semua class-class kedalam direktori classes/. Asumsi saya adalah class-class tersebut merupakan model dari aplikasi, kemudian di dalam direktori circuits/ adalah file circuit.xml dan file-file fuse, asumsikan circuit.xml adalah controller dan file-file fuse adalah view.</p>
<p>Idealnya sebuah class/model merupakan interface ke sumber data (database) atau sebuah pemrosesan yang tidak mengeluarkan output secara langsung, output-output haruslah berupa variabel yang nantinya dikeluarkan/dicetak oleh view (fuse file) dalam jendela browser (yang dibicarakan adalah aplikasi web/website) dan semua itu dikendalikan oleh controller(circuit.xml).</p>
<p>Jika Anda menggunakan FLiP sebagai metoda pengembangan, proses pemodelan (mengubah file-file fuse untuk query dan action ke dalam suatu class) akan menghilangkan penulisan fusedoc pada class karena class berbeda konsep dengan fuse. Namun demikian sebagai gantinya Anda dapat membuat class abstract yang dapat menjabarkan fungsi-fungsi dari class tersebut bagi fusecoder Anda (jika Anda bekerja dalam team, dan Anda adalah arsiteknya).</p>
<p>Dalam kesempatan lain akan saya berikan contoh penggunaan OOP ini, jadi tunggu aja yah <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=71</wfw:commentRss>
		</item>
		<item>
		<title>Circuit.XML Sebagai Pengendali Aliran Program</title>
		<link>http://blog.fbxphpindonesia.com/?p=69</link>
		<comments>http://blog.fbxphpindonesia.com/?p=69#comments</comments>
		<pubDate>Mon, 02 Feb 2009 12:59:26 +0000</pubDate>
		<dc:creator>Yerie Piscesa</dc:creator>
		
		<category><![CDATA[Circuit XML]]></category>

		<guid isPermaLink="false">http://fbxphpindonesia.wordpress.com/?p=69</guid>
		<description><![CDATA[Sebuah circuit dapat kita anggap sebagai pengendali aliran program dalam aplikasi fusebox, hal menarik dari fusebox (setelah versi 3) adalah penggunaan XML sebagai setting aplikasi dan pengendali dari framework ini sehingga lebih mudah dibaca. Circuit yang di-desain dengan baik akan memudahkan pengembang untuk melacak aliran program di kemudian hari tanpa harus membuka  source code.
Anggap kita [...]]]></description>
			<content:encoded><![CDATA[<p>Sebuah circuit dapat kita anggap sebagai pengendali aliran program dalam aplikasi fusebox, hal menarik dari fusebox (setelah versi 3) adalah penggunaan XML sebagai setting aplikasi dan pengendali dari framework ini sehingga lebih mudah dibaca. Circuit yang di-desain dengan baik akan memudahkan pengembang untuk melacak aliran program di kemudian hari tanpa harus membuka  source code.</p>
<p><span id="more-69"></span>Anggap kita akan membuat aplikasi input data obat, berikut adalah salah satu contoh yang bisa kita terapkan :</p>
<pre name="code" class="xml">

&lt;fuseaction name=&quot;add&quot;&gt;
	&lt;do action=&quot;login.checksession&quot;/&gt;
	&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
	&lt;set name=&quot;titleContent&quot; value=&quot;TAMBAH DATA OBAT&quot;/&gt;

	&lt;xfa name=&quot;submitPost&quot; value=&quot;obat.insert&quot;/&gt;
	&lt;xfa name=&quot;list_obat&quot; value=&quot;obat.list&quot;/&gt;
	&lt;do action=&quot;global.setPostBack&quot;/&gt;

	&lt;include template=&quot;qry_listoptions&quot; circuit=&quot;pemasok&quot;/&gt;
	&lt;include template=&quot;qry_listoptions&quot; circuit=&quot;pabrik&quot;/&gt;
	&lt;include template=&quot;qry_listoptions&quot; circuit=&quot;kategori&quot;/&gt;
	&lt;include template=&quot;qry_listoptions&quot; circuit=&quot;kelompok&quot;/&gt;
	&lt;include template=&quot;dsp_add&quot; contentvariable=&quot;mainContent&quot;/&gt;
&lt;/fuseaction&gt;

&lt;fuseaction name=&quot;insert&quot;&gt;
	&lt;do action=&quot;login.checksession&quot;/&gt;

	&lt;include template=&quot;act_validate&quot;/&gt;
	&lt;if condition=&quot;$isValid&quot;&gt;
		&lt;true&gt;
			&lt;include template=&quot;act_insert&quot;/&gt;
			&lt;set name=&quot;withLayout&quot; value=&quot;true&quot;/&gt;
			&lt;set name=&quot;titleContent&quot; value=&quot;DATA OBAT&quot;/&gt;

			&lt;xfa name=&quot;obat_list&quot; value=&quot;obat.list&quot;/&gt;
			&lt;xfa name=&quot;obat_add&quot; value=&quot;obat.add&quot;/&gt;
			&lt;xfa name=&quot;obat_edit&quot; value=&quot;obat.edit&quot;/&gt;

			&lt;include template=&quot;dsp_insert&quot; contentvariable=&quot;mainContent&quot;/&gt;
		&lt;/true&gt;
		&lt;false&gt;
			&lt;do action=&quot;add&quot;/&gt;
		&lt;/false&gt;
	&lt;/if&gt;
&lt;/fuseaction&gt;
</pre>
<p>Script diatas adalah potongan dari file circuit.xml, circuit tersebut mempunyai alias &#8220;obat&#8221; yang didefinisikan pada file fusebox.xml.</p>
<p>Disitu kita lihat ada 2 buah fuseaction add dan insert, fuseaction add adalah untuk menampilkan form tambah data, sedangkan insert adalah action jika form di-submit.</p>
<p>Pada kedua fuseaction tersebut kita akan lebih mudah membaca alur program daripada harus membaca script php secara langsung, dan ini dapat dirasakan ketika kita perlu mengubah aplikasi pada masa yang akan datang sebagai pengganti flow chart diagram jika Anda tidak (sempat) membuatnya atau paling tidak sebagai dokumentasi aliran program bagi Anda sendiri.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=69</wfw:commentRss>
		</item>
		<item>
		<title>menambahkan function global</title>
		<link>http://blog.fbxphpindonesia.com/?p=63</link>
		<comments>http://blog.fbxphpindonesia.com/?p=63#comments</comments>
		<pubDate>Mon, 02 Feb 2009 10:42:32 +0000</pubDate>
		<dc:creator>ninolooh</dc:creator>
		
		<category><![CDATA[Fusebox Umum]]></category>

		<guid isPermaLink="false">http://fbxphpindonesia.wordpress.com/?p=63</guid>
		<description><![CDATA[Untuk menambahkan funtion global di dalam fusebox tidaklah sulit.  Cukup dengan menambahkan script
include(&#8221;path/globalFunction.php&#8221;);
di dalam file fusebox.init.php
maka pada awal aplikasi di panggil akan menjalankan globalFunction.php terlebih dahulu.  
]]></description>
			<content:encoded><![CDATA[<p>Untuk menambahkan funtion global di dalam fusebox tidaklah sulit.  Cukup dengan menambahkan script</p>
<p>include(&#8221;path/globalFunction.php&#8221;);</p>
<p>di dalam file fusebox.init.php</p>
<p>maka pada awal aplikasi di panggil akan menjalankan globalFunction.php terlebih dahulu. <img src='http://blog.fbxphpindonesia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fbxphpindonesia.com/?feed=rss2&amp;p=63</wfw:commentRss>
		</item>
	</channel>
</rss>
