Melakukan Validasi Pada Input


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 ‘Membuat Aplikasi Database’ Bagian 1,2,3.

Ok, buka kembali aplikasi fbxdb Anda. Masuk ke circuit jabatan, kemudian tambahkan file ‘act_validate.php’ 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:

<?php
$isValid = true;
if(trim($_POST['kode']) == "") {
  $isValid = false;
  $err['kode'] = "Kode tidak boleh kosong!";
}
if($_POST['kode'] != "") {
  if ($myFusebox->originalFuseaction == "insert") {
    $sql = sprintf("select kode from jabatan where kode=%s ",quote(trim($_POST['kode']),'string',true));
  } else {
    $sql = sprintf("select kode from jabatan where kode=%s and not id=%s",
    quote(trim($_POST['kode']),'string',true),
    quote($_POST['id'],'number'));
  }
  $qry = mysql_query($sql) or die(mysql_error());
  $rowFound = mysql_num_rows($qry);
  if ($rowFound != 0) {
    $isValid = false;
    $err['kode'] = "Kode sudah digunakan!";
  }
}
if(trim($_POST['nama']) == "") {
  $isValid = false;
  $err['nama'] = "Nama jabatan tidak boleh kosong!";
}
if (!$isValid) $errormessage = "Data tidak dapat disimpan, periksa kembali isian Anda !";
?>

Dalam script diatas, variabel $isValid adalah indikator dari validasi tersebut, apabila bernilai false variabel $err dan $errormessage akan memiliki nilai.

Kemudian langkah selanjutnya adalah melakukan perubahan di fuse dsp_form, berikut script dari dsp_form.php:


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

<?php if ($isPostBack &amp;amp;amp;&amp;amp;amp; $message != "") { ?>
<div class="success"><?php echo $message; ?></div>
<?php } ?>

<?php if ($isPostBack &amp;amp;amp;&amp;amp;amp; $errormessage != "") { ?>
<div class="error"><?php echo $errormessage; ?></div>
<?php } ?>

<form action="<?php echo $myself.$XFA["submitPost"]; ?>" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<table>
<tr>
<td><strong>Kode</strong></td>
<td>
<input type="text" name="kode" id="kode" value="<?php echo $row["kode"]; ?>" size="10" maxlength="10"/>
<?php echo $err['kode']; ?>
</td>
</tr>
<tr>
<td><strong>Jabatan</strong></td>
<td>
<input type="text" name="nama" id="nama" value="<?php echo $row["nama"]; ?>" size="50" maxlength="100"/>
<?php echo $err['nama']; ?>
</td>
</tr>
<tr>
<td>&amp;amp;amp;nbsp;</td>
<td>
<input type="submit"/>
<input type="reset"/>
<a href="<?php echo $myself.$XFA["list"]; ?>">List Jabatan</a>
</td>
</tr>
</table>
</form>

Langkah terakhir adalah me-registrasi fuse act_validate pada circuit.xml. Cari fuseaction insert dan update, beri tambahan sebagai berikut:


<fuseaction name="insert">
  <do action="global.setPostBack"/>
  <include template="act_validate"/>
  <if condition="$isValid">
    <true><include template="act_insert"/></true>
  </if>
  <do action="add"/>
</fuseaction>

<fuseaction name="update">
  <do action="global.setPostBack"/>
  <include template="act_validate"/>
  <if condition="$isValid">
    <true><include template="act_update"/></true>
  </if>
  <do action="edit"/>
</fuseaction>

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 disini

Sampai jumpa pada tulisan-tulisan selanjutnya.

Happy fuseboxing :)

,

  1. #1 by CHEAP VIAGRA on May 5th, 2009

    ????????????? ????? ?? ??????????? ???????? ??? ?????? Great site, Good info

  2. #2 by JessicaCype on May 11th, 2009

    I like your post. Good stuff. Keep them coming :)…

  3. #3 by ArianaTrip on May 13th, 2009

    Thanks for good post

  4. #4 by ZoogmemyCed on May 24th, 2009

    Hi, nice posts there :-) through’s recompense the interesting word

  5. #5 by #khalik on September 11th, 2009

    nice posting yer,
    simple to learn but very power full

(will not be published)

  1. No trackbacks yet.