Sabtu, 01 Desember 2012

Memanggil procedure di oracle melalui PHP

Beberapa hari yang lalu saya sudah menulis bagaimana membuat procedure di oracle dan bagaimana cara memanggil procedure oracle tapi masih dalam lingkungan oracle (Menggunakan SQL PLUS), Setelah beberapa hari tidak menulis di blog belajarphporacle.blogspot.com di awal bulan ini saya coba untuk membuat sintak bagaimana cara memanggil prosedure oracle melalui PHP, ternyata tidak sesulit yang saya bayangkan, :)

Masih ingat tulisan saya yang kemarin tentang Browse, input, delete dan edit oracle via PHP ???, saya menggunakan file proses_indata.php untuk memanggil prosedure oracle, berikut syntak PHP untuk memanggil prosedure di oracle, saya menggunakan file proses_indata.php

<?php
//Proses input data
include "konek.php"; // untuk memanggil koneksi
//Mendeklarasikan variabel dari FORM INPUT
$empno=$_POST['empno'];
$empname=$_POST['empname'];
$job=$_POST['job'];
$hiredate1=$_POST['date'];
$salary=$_POST['salary'];
$dept=$_POST['dept'];
//Merubah Format tanggal agar sesuai dengan tanggal yang di ORACLE
$date = date_create($hiredate1); 
$hiredate=date_format($date, 'd-M-Y'); 
//Proses input data
$Perintah = oci_parse($koneksi,"BEGIN tambah_data_emp('$empno','$empname','$job','$salary','$hiredate','$dept'); END;");

//$Perintah = oci_parse($koneksi,"INSERT INTO EMP (EMPNO,ENAME,JOB,HIREDATE,SAL,DEPTNO) VALUES ('$empno','$empname','$job','$hiredate','$salary','$dept')");

//Jika berhasil ditambah
if(oci_execute($Perintah)){
  oci_commit($koneksi); //Menyimpan perubahan
  oci_close($koneksi); //Menutup Koneksi
  echo "<script type='text/javascript'> alert ('Data berhasil di tambah') </script>";
  require_once "frm_input.php";
  }
else{
    //Jika gagal ditambah
    echo "<script type='text/javascript'> alert ('Data Gagal di tambahkan') </script>";
}

?>


//Ganti baris ini
$Perintah = oci_parse($koneksi,"INSERT INTO EMP (EMPNO,ENAME,JOB,HIREDATE,SAL,DEPTNO) VALUES ('$empno','$empname','$job','$hiredate','$salary','$dept')");

//Menjadi :
$Perintah = oci_parse($koneksi,"BEGIN tambah_data_emp('$empno','$empname','$job','$salary','$hiredate','$dept'); END;");


Perintah diatas memanggil prosedure dengan nama tambah_data_emp dengan parameter $empno,$empname,$job,$salary,$hiredate,$dept

Semoga bermanfaat, :)

Rabu, 21 November 2012

Memanggil PROCEDURE

Okay mas bro langsung aja dan mumpung (bahasa mana nih) saya masih ingin senam jari, tadi saya sudah bercerita bagaimana membuat procedure di oracle kini saatnya saya ingin bercerita bagaimana caranya memanggil procedure tapi bukan melalui PHP mas bro tapi melalui sintax sql, kebetulan saya memakai tools sqlPlus masih bawaannya oracle v.10 (bener-bener ga modal yah?, mulai dari database sampai sqlPlus nya juga bawaannya oracle, hehehehe... asas manfaat).


Keterangan Gambar :
Sebelum kita mengeksekusi procedure yang kita buat, kita cek terlebih dahulu nama ARLA sudah ada atau belum dengan perintah :
SQL> SELECT * FROM EMP WHERE ENAME='ARLA';
dan hasilnya : no rows selected Artinya nama ARLA belum ada atau data tidak ditemukan
Setelah data tidak ada atau tidak ditemukan, kita jalankan procedure yang telah kita buat tadi dengan perintah :
 SQL> exec tambah_data_emp (7400,'ARLA','PRESIDENT',7777,'28-jun-2007',10);
dan hasilnya : PL/SQL procedure successfully completed. artinya procdeure yang kita jalankan berhasil (HOREEEEEE)
Kalau kita tidak menggunakan procedure perintah untuk input data seperti di atas adalah :
SQL>INSERT INTO (EMPNO,ENAME,JOB,SAL,HIREDATE,DEPTNO)VALUES(7400,'ARLA','PRESIDENT',7777,'28-jun-2007',10);

Kemudian kita cek lagi apakah nama ARLA sudah ada ? dan hasilnya ada row nama ARLA terlihat.
dan perintah yang terakhir adalah :
SQL>Commit : memberitahukan kepada om oracle bahwa perintah/data yang di masukan sudah oke dan akhirnya om oracle bener2 menyimpan data tersebut di rumahnya. :)

Semoga bermanfaat......




Membuat PROCEDURE di oracle

Sebelum saya menuliskan perintah untuk membuat procedure saya akan bercerita sedikit tentang procedure, Procedure merupakan suatu blok program/perintah yang dapat di panggil sewaktu-waktu, hal ini dapat memudahkan kita sebagai seorang programmer untuk menghemat waktu dalam menuliskan kode2 program, karena dengan adanya procedure ini kita hanya memanggil procedure yang dibutuhkan beserta parameter-parameternya tanpa harus menuliskan sintax (perintah) SQL yang panjang apalagi perintah itu sering kita panggil, (Semoga sedikit penjelasan saya tentang procedure tidak melenceng, Mohon para master untuk mengkoreksi tulisan saya, hehehe...).

Berikut adalah contoh membuat prosedure tambah_data_emp, perlu temen-temen ketahui EMP adalah nama sebuah tabel yang ada di Schema SCOTT, karena memang pada saat saya menginstall oracle V. 10G user/Schema SCOTT sudah ada dan ketika saya buka2 sudah ada beberapa tabel yang ada didalam schema tersebut, tanpa berpikir panjang lagi akhirnya saya menjadikan SCOTT sebagai objek penulisan Blog ini, mohon maaf yah SCOTT..., :).

Setelah dibaca ulang koq tulisan ini malah tidak ada perintah untuk membuat PROCEDURE seperti yang di judul yah...,hehehe...

Oke mas bro kita lanjut lagi,,,....

Langsung saja ini adalah perintah untuk membuat PROCEDURE yang sudah saya janjikan sebelumnya (siapa yang janji dan siapa yang dijanjikan) aya aya wae...

Keterangan Kode diatas :
SQL> CREATE OR REPLACE PROCEDURE tambah_data_emp adalah perintah untuk membuat atau mengganti procedure jika procedure dengan nama tambah_data_emp sudah ada, jika belum ada maka akan membuat procedure tersebut
Baris Ke-2 : membuat parameter untuk procedure tambah_data_emp
Baris Ke-3 : ketikan nama variabel dibawah kata AS Jika kita akan mendeklarasikan variabel lokal untuk menyimpan data sementara
Baris Ke-4 s.d 6 adalah prosedure yang berisi perintah SQL dimana saya mencontohkan untuk proses input data ke tabel EMP dengan parameter yang sudah di tentukan.

Okay sampai disini perjumpaan kita tentang cara pembuatan procedure sederhana, sebenarnya masih banyak hal-hal lain yang terkait dengan procedure ini tapi... kalau langsung saya tuliskan malah saya jadi pusing sendiri bingung jelasinnya. hehehe...

Pasti teman2 bertanya bagaimana cara memanggil procedure melalui PHP...? nanti saya akan bahas bagaimana cara pemanggilannya...

Oh iya satu lagi untuk para MASTER mohon koreksi tulisan ini jika masih ada yang belum sesuai dengan kaidah2 penulisan di ORACLE karena saya juga masih NEWBIE di oracle, dan... semoga bermanfaat. :)



Selasa, 20 November 2012

Browse, Input, delete dan Edit oracle Via PHP

Melengkapi tulisan saya tentang menampilkan data dan input data database oracle, kali ini saya akan menambahkan bagaimana caranya meng-EDIT dan meng-HAPUS data dari database oracle melalui PHP, dibawah ini adalah tampilan browse data yang sudah saya lengkapi dengan link input,edit, dan hapus data dan di paling bawah ada counter untuk menghitung jumlah data yang sudah di input,

 Ini adalah code untuk tampilan diatas (tampil_data.php) :
<title>Menampilkan data Database Oracle dengan PHP</title>
<?php
include "konek.php"; // untuk memanggil koneksi
$PeritahSql="select * from EMP";
$Query = oci_parse($koneksi,$PeritahSql);
oci_execute($Query);
echo "<b>";
echo "<center>DAFTAR KARYAWAN BARISAN SAKIT HATI</center>";
echo "<center>CILEGON - BANTEN</center>";
echo "</b>";
echo "<table width='80%' border='1' align='center'>";
echo "<td width='100%' colspan='6' align='right'><a href='frm_input.php'>TAMBAH DATA</a></td>";
echo "<tr align='center'><td>EMP. NO</td><td>EMP. NAME</td><td>JOB</td><td>HIRE DATE</td><td colspan='2'>ACTION</td></tr>";
while (oci_fetch_array($Query)){
     echo "<tr>
    <td width='10%'>".ociresult($Query,"EMPNO")."</td>
    <td width='30%'>".ociresult($Query,"ENAME")."</td>
    <td width='30%'>".ociresult($Query,"JOB")."</td>
    <td width='10%'>".ociresult($Query,"HIREDATE")."</td>
    <td width='5%' align='center'><a href='frm_edit.php?empno=".ociresult($Query,"EMPNO")."'>".EDIT."</a></td>
    <td width='5%' align='center'><a href='proses_deldata.php?empno=".ociresult($Query,"EMPNO")."'>".HAPUS."</a></td>
    </tr>";
  
   
}
//Menghitung jumlah data
$PeritahSqlJumlah="select COUNT (EMPNO) as JUMLAH from EMP";
$QueryJumlah = oci_parse($koneksi,$PeritahSqlJumlah);
oci_execute($QueryJumlah);
oci_fetch_array($QueryJumlah);
echo "<td width='100%' colspan='6'>Jumlah Data : ".ociresult($QueryJumlah,"JUMLAH")."</td>";
echo "</table>";
oci_close($koneksi); // untuk menutup koneksi
?>

Tampilan pada saat link EDIT di klik


Script untuk membuat Form Edit (frm_edit.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>.: EDIT DATA :.</title>
<!-- Memanggil file layout.css -->
<script language="javascript" src="calendar/calendar.js"></script>

</head>

<body>
<?php
require_once('calendar/classes/tc_calendar.php');
include "konek.php"; // untuk memanggil koneksi
$empno=$_GET['empno'];
$PeritahSql="SELECT EMP.*,DEPT.DNAME FROM EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO AND EMPNO='$empno'";
//untuk mempercepat proses query field harus di sebutkan
//dengan sintak diatas akan memanggil semua field yang ada di table EMP
$Query = oci_parse($koneksi,$PeritahSql);
oci_execute($Query);
oci_fetch_array($Query);
?>

<form id="form1" name="form1" method="post" action="proses_edtdata.php">
<table width="100%" border="0">
  <tr>
    <td>&nbsp;</td>
    <td width="17%">&nbsp;</td>
    <td width="2%">&nbsp;</td>
    <td width="36%">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td width="17%">&nbsp;</td>
    <td colspan="3"><strong>FORM EDIT DATA</strong></td>
    <td width="45%">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>EMP ID</td>
    <td>
</td>
    <td><label>
      <input name="empno" type="text" id="empno" value="<?php echo ociresult($Query,"EMPNO") ?>" size="20" readonly="readonly" />
    </label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>EMP NAME</td>
    <td>&nbsp;</td>
    <td><input name="empname" type="text" id="empname" value="<?php echo ociresult($Query,"ENAME") ?>" size="60" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>JOB</td>
    <td>&nbsp;</td>
    <td><input name="job" type="text" id="job" value="<?php echo ociresult($Query,"JOB") ?>" size="60" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>HIRE DATE</td>
    <td>&nbsp;</td>
    <td><?php
                      $date1_default=ociresult($Query,"HIREDATE");
                      $myCalendar = new tc_calendar("date", true);
                      $myCalendar->setIcon("calendar/images/iconCalendar.gif");
                      $myCalendar->setDate(date('d', strtotime($date1_default))
                        , date('m', strtotime($date1_default))
                     , date('Y', strtotime($date1_default)));
                      $myCalendar->setPath("calendar/");
                      $myCalendar->setYearInterval(1960, 2015);
                      $myCalendar->writeScript();
                      ?></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>SALARY</td>
    <td>&nbsp;</td>
    <td><input type="text" name="salary" id="salary" value="<?php echo ociresult($Query,"SAL") ?>" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>DEPT</td>
    <td>&nbsp;</td>
    <td><label>
    <select name="dept" id="dept">
    <?php
    echo "<option value=".ociresult($Query,"DEPTNO").">".ociresult($Query,"DNAME")."</option>";
    $PeritahSql1="SELECT * FROM DEPT";
    $Query1 = oci_parse($koneksi,$PeritahSql1);
    oci_execute($Query1);
    while (oci_fetch_array($Query1)){
    echo "<option value=".ociresult($Query1,"DEPTNO").">".ociresult($Query1,"DNAME")."</option>";
    }
    ?>
    </select>
    </label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><label>
      <input type="submit" name="simpan" id="simpan" value="Save" />
    </label></td>
    <td>&nbsp;</td>
  </tr>
</table>
    </form>
</body>
</html>

Download script lengkap (konek.php, tampil_data.php, frm_input.php, frm_edit.php, proses_edtdata.php, proses_indata.php, proses_deldata.php) disini.

Mohon di koreksi jika ada yang salah dan Semoga bermanfaat.... :)

Senin, 19 November 2012

Input data Oracle dengan PHP

Melanjutkan kisah kemarin tentang Menampilkan data Oracle dari PHP, malam ini saya akan bercerita tentang bagaimana caranya memasukan data/input data ke database oracle melalui PHP, berikut tampilan form input data yang saya buat sangat simpel tapi mudah2an bisa menyentuh, hehehe...

Form Input Data sebelum data di input :


 Form input data setelah data di input

Tampilan setelah tombol save di klik

Tampilan Browse data sebelum dan sesudah data di input :

 Browse data setelah nama M. GIBRAN di masukan

Baris yang paling atas adalah data yang baru saja di input, script lengkap proses input data  dapat di download disini.

Semoga bermanfaat....