RadarURL Membuat web service XML sederhana menggunakan PHP dan MySQL ~ Dari Ane untuk Agan

Selasa, 12 Maret 2013

Membuat web service XML sederhana menggunakan PHP dan MySQL

Membuat web service XML sederhana menggunakan PHP dan MySQL


Pada pembahasan kali ini, dalam blog ini web service yang dibangun hanya untuk menjelaskan secara sederhana saja. Untuk contoh kasus, diasumsikan ada sebuah database yang berisi satu tabel yaitu t_mhs. Dalam t_mhs ini memiliki kolom nim, nama, kelas, tahun dan alamat. Dengan menggunakan tabel tersebut kita akan mencoba satu per satu bagaimana web service dibuat.

1
Dari struktur tabel ini kita akan mencoba menampilkan hasil seperti ini.
10108088
Daeng Rosanda
IF-2
2008
Soreang

Sebelum menuju koding, alangkah baik nya kita analisis dulu struktur dari XML nya sendiri. Perhatikan baik-baik, XML merupakan suatu format text yang nilainya saling diapit oleh kuncinya. Jadi kalau struktur XML itu kuncinya ada yang tidak saling mengapit, maka pembacaannya bisa menimbulkan error. Kemudian lihat kuncinya baik-baik, disana ada kunci nilai kunci ini merupakan representasi dari fieldnamenya tabel t_mhs. Begitu pula sampai dengan struktur dibawahnya. Bagaimana dengan kunci dengan kunci ? kunci tersebut merupakan kunci bantuan yang sengaja dibuat untuk memisahkan apabila data yang diaksesnya banyak. Untuk lebih jelasnya lihat kode XML dibawah ini.

10108088
Daeng Rosanda
IF-2
2008
Soreang
10108089
Trisna Abdi
IF-2
2008
Kebon Bibit

Pada struktur ini terjadi pengulangan kunci sedangkan kunci tetap ada pada awal dan akhir kode. Sebenarnya mau bebas pun bisa, disini dibuat seperti itu hanya untuk membedakan kunci berulang dengan yang tidak. Baiklah kita mulai dengan XML banyak baris. Sebelum memulai. persiapkan dulu kode PHP untuk koneksi database. Simpan dengan nama koneksi.php. Untuk koneksi.php username, password, dan nama database disesuaikan dengan konfigurasi yang anda miliki. Bisa juga untuk menggunakan user root.

function koneksi_db(){
  //untuk koneksi database
  $host = "localhost";
  $database = "kuliah_be";
  $user = "kuliah_be";
  $password = "kuliah_be";
  $link=mysql_connect($host,$user,$password);
  mysql_select_db($database,$link);
  if(!$link){
echo "Error : ".mysql_error();
  }else{
    return $link;
  }
}
?>


XML output untuk fungsi daftar mahasiswa
Pertama-tama buat file php simpan dengan list_mhs.php. Dalam list_mhs.php ini akan ada beberapa fungsi native PHP, diantaranya adalah header, include, kueri database disusul dengan fungsi echo untuk output XMLnya.

include('koneksi.php');
header('Content-Type:text/xml');
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE 1 ORDER BY NIM';
$res=mysql_query($sql,$link);
if($res){
if(mysql_num_rows($res)>0){
echo '';
while($data = mysql_fetch_assoc($res)){
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
}
echo '
';
}else{
echo 't_mhs masih kosong';
}

}else{
echo ''.mysql_errno().''.mysql_error().'';
}
?>

XML output untuk fungsi detail mahasiswa
Untuk pembuatan detail mahasiswa akan ada suatu parameter khusus untuk menampilkan mahasiswa secara spesifik. Biasanya yang digunakan adalah parameter HTTPGET. Parameter HTPGET merupakan parameter yang langsung disertakan pada badan URL. contoh: http://www.google.com/?q=search&aqs=chrome. Pada URL tersebut ada parameter setelah simbol tanda tanya (?) yaitu q dan aqs. Parameter tersebut dipecah dengan simbol dan (&). Sedangkan untuk nilai dari setiap parameternya biasanya diikuti setelah sama dengan(=) setelah nama parameter. Dengan adanya parameter ini, perlu penanganan khusus dalam skrip PHPnya supaya tidak error. Adapun fungsi yang digunakan adalah fungsi isset. Untuk lebih jelasnya tinjau kode dibawah ini. Simpan kode dibawah ini dengan nama detail_mhs.php.


include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'])){
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Cara pengaksesan untuk skrip ini adalah dengan memanggil url disertai dengan parameter id kemudian disusul dengan nilainya. Contoh : http://localhost/backend/detail_mhs.php?id=10108088. Untuk mengganti detail mahasiswanya Anda cukup mengganti nilai yang digaris bawahi dengan nilai yang valid dalam field nim t_mhs. 

XML output untuk fungsi tambah data mahasiswa
Untuk pembuatan  tambah data mahasiswa mahasiswa akan ada beberapa parameter khusus untuk mengisikan data mahasiswa kedalam database. Biasanya yang digunakan adalah parameter HTTPPOST. Parameter HTPPOST merupakan parameter dikirim melalui form. Dalam parameter ini, nilai dan parameter tidak eksplisit diperlihatkan pada url, melainkan dikirim langsung pada saat request halaman web melaui form submit. Tapi meskipun begitu, untuk penangannya sama dengan HTTPGET yaitu dengan menggunakan fungsi isset. Untuk lebih jelasnya lihat kode dibawah ini.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_POST['nim'],$_POST['nama'],$_POST['kelas'],$_POST['thn'],$_POST['alamat'])){
$link=koneksi_db();
$sql='INSERT INTO `t_mhs`(`nim`, `nama`, `kelas`, `thn`, `alamat`) VALUES ("'.$_POST['nim'].'","'.$_POST['nama'].'","'.$_POST['kelas'].'","'.$_POST['thn'].'","'.$_POST['alamat'].'");';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data added';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Tapi ini belum selesai, kita harus membuat tester untuk menguji apakah kodenya berjalan dengan baik atau tidak. Untuk itu kita membuat file php baru yaitu tester_add_mhs.php. File ini berstruktur html biasa dengan berisikan form dan nilai beserta kunci parameter yang akan digunakan untuk menambahkan data pada database melalui web service. Untuk lebih jelasnya lihat kode dibawah ini.

</p> <p style="text-align: justify;"> Tester - add_mhs.php</p> <p style="text-align: justify;">

Tester - add_mhs.php

nim
:
nama
:
kelas
:
thn
:
alamat
:



Setelah itu buka file nya kemudian isi dengan lengkap setelah itu coba untuk submit. Kemudian lihat hasilnya apa ada error atau tidak. Jika ada error, pastikan anda memeriksa field name pada input di form testernya. Jika tidak ada error, maka anda bisa langsung melihatnya melalui web service list_mhs.php.

XML output untuk fungsi merubah data mahasiswa
Untuk merubah data mahasiswa akan diperlukan Key untuk mengakses data mahasiswa yang akan diubah datanya beserta parameter-parameter detail dari data mahasiswa. Ini tidaklah rumit, karena ini telah dibangun sebelumnya. Untuk membangun skrip ini tinggal menggabungkan skrip add_mhs.php dengan detail_mhs.php tapi query MySQL nya saja yang diganti. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama edit_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'],$_POST['nim'],$_POST['nama'],$_POST['kelas'],$_POST['thn'],$_POST['alamat'])){
$link=koneksi_db();
$sql='UPDATE `t_mhs` SET `nim`="'.$_POST['nim'].'",`nama`="'.$_POST['nama'].'",`kelas`="'.$_POST['kelas'].'",`thn`="'.$_POST['thn'].'",`alamat`="'.$_POST['alamat'].'" WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data changed';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Seperti pada add_mhs.php. Skrip ini juga butuh tester untuk pengujiannya. Pada dasarnya tester ini dengan yang add_mhs.php sama, namun yang membedakan adalah pada url action di tag formnya. Ini merupakan hal yang harus digaris bawahi, karena skrip edit_mhs.php ini terdiri dari parameter HTTPPOST dan HTTPGET jadi mau tidak mau harus ada kode yang diedit manual ketika akan menggunakan skrip tester ini. Untuk lebih jelasnya lihat pada kode dibawah ini. Simpan kode dibawah ini dengan tester_edit_mhs.php.

</p> <p style="text-align: justify;"> Tester - edit_mhs.php</p> <p style="text-align: justify;">

Tester - edit_mhs.php

nim
:
nama
:
kelas
:
thn
:
alamat
:


Coba perhatikan pada kode yang digaris bawahi diatas. Kode tersebut menandakan bahwa tester hanya akan merubah data mahasiswa dengan id sama dengan 10108088. Jadi tester ini menggabungkan HTTPGET dan HTTPPOST secara bersamaan. Bagaimana jika id yang tertera tidak ada? berarti dalam tabel t_mhs tidak ada data yang dirubah meskipun hasil pada XML nya adalah data changed. Jadi solusi terbaiknya adalah, pastikan id yang anda definisikan pada skrip tersebut valid. Jika ingin merubah data mhs yang lain, maka Anda cukup untuk mengganti nilai dari parameter id tersebut.

XML output untuk fungsi hapus data mahasiswa
Untuk membangun skrip ini sebenarnya telah sama dengan skrip untuk add_mhs.php. Hanya saja yang membedakan adalah kueri beserta parameter yang dikirimnya. Parameter yang dikirim untuk skrip ini berupa HTTPGET parameter. Jadi tidak perlu tester untuk penggunaan skrip ini. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama rem_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'])){
$link=koneksi_db();
$sql=' DELETE FROM `t_mhs` WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data removed';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>
Untuk pengaksesan skrip ini, caranya sama dengan pemanggilan dari skrip detail_mhs.php.

XML output untuk fungsi pencarian data mahasiswa
Pencarian merupakan salah satu syarat yang harus ada baik dalam web maupun web service. Pembangunan skrip ini sama halnya dengan skrip detail mahasiwa, tapi yang membedakan hanyalah kunci parameter dengan kueri nya saja. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama find_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['q'])){
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE nim LIKE %"'.$_GET['q'].'"% OR name LIKE %"'.$_GET['q'].'"% OR kelas  LIKE %"'.$_GET['q'].'"% OR thn  LIKE %"'.$_GET['q'].'"% OR alamat LIKE %"'.$_GET['q'].'"%;';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Dokumentasi untuk Web Service
Ini merupakan salah satu pekerjaan dari pada pembangun web service disamping membangun kode. Dokumentasi memudahkan para programmer lainnya untuk menggunakan web service yang anda bangun secara mudah. Meskipun para programmer mampu membaca setiap kode yang anda bangun, tapi itu akan menambah beban dan menambah lama waktu pembuatan aplikasi yang memerlukan web service anda. Oleh karena itu, alangkah baiknya anda mendokumentasikan setiap web service yang anda bangun. Secara garis besar, dokumentasi yang anda bangun meliputi logika constrain da restriction kemudian parameter, key, value, data type, beserta output yang dihasilkan. Untuk lebih jelasnya anda bisa mengacu pada contoh dibawah ini.

Web Service API Edit Data Mahasiswa

Sample request http://localhost/backend/edit_mhs.php?id=[valid_nim_mhs]
note : Webservice API will not detected for valid_nim_mhs. Please use the valid identifier.

Required parameter
POST : nim, nama, kelas, tahun, alamat.
GET :id

Sample Respons
if success
1data added
if one or more parameter missing
404one or more parameter needed

Ini merupakan akhir dari salah satu dokumentasi fungsi add_mhs.php, masih ada banyak fungsi yang belum terdokumentasi. Dokumentasi API biasanya disajikan terus menerus sampai semua fungsi yang ada dalam webservice ter-cover. Diharapkan dengan adanya dokumentasi, para programmer yang akan menggunakan web service Anda dapat mengetahui secara garis besar maupun detail kebutuhan apa saja yang mereka harus sediakan.

Kesimpulan
Pembangunan web service ini hanya sebagai gambaran kasar. Web Service ini masih banyak kekurangan, diantaranya kekurang konsistenan untuk key yang dihasilkan XML jika terjadi perubahan struktur pada tabel. Belum adanya batasan keamanan untuk membatasi web service yang dibangun. Batasan ini biasanya berbentuk kode yang disebut dengan AppKey atau token. Dengan adanya token, diharapkan penggunaan web service dapat dimanfaatkan secara terkendali.

Akhir kata, jika anda perlu yang sudah langsung jadi, anda bisa download sample kode-kode diatas beserta sql dump nya di sini.

4 komentar:

  1. om admin, file add_mhs.php tidak ada, terus pas saya coba tidak bisa, malah error... kenapa yah ?

    BalasHapus
  2. Alhamdulillah artikel saya dicopas disini.. :D

    BalasHapus
    Balasan
    1. Anda searching nama anda di google ya? 😂

      Hapus
  3. Membuat Web Service Xml Sederhana Menggunakan Php Dan Mysql ~ Dari Ane Untuk Agan >>>>> Download Now

    >>>>> Download Full

    Membuat Web Service Xml Sederhana Menggunakan Php Dan Mysql ~ Dari Ane Untuk Agan >>>>> Download LINK

    >>>>> Download Now

    Membuat Web Service Xml Sederhana Menggunakan Php Dan Mysql ~ Dari Ane Untuk Agan >>>>> Download Full

    >>>>> Download LINK

    BalasHapus

 

Get this widget!