Untuk membuat aplikasi android studio agar terhubung dengan database, kita membutuhkan yang namanya REST API (Representional State Transfer). Adalah suatu arsitektur komunikasi data menggunakan protokol HTTP untuk menerima dan merespon (request dan response) data.
Gampangannya, API itu sebagai jembatan yang menghubungkan aplikasi dengan aplikasi lainnya. Nah, pada tutorial kali ini kita akan membuat API menggunakan bahasa PHP. Jadi pada kasus ini kita akan menghubungkan Android dengan
PHP sebagai server sidenya,
GET
POST
PUT
DELETE
Menyiapkan Database
Sebelum masuk ke dalam tahap pembuatan API server dan Aplikasi Android di android studio. Pertama – tama mari kita siapkan database beserta table yang akan kita gunakan di tutorial kali ini.
Buatlah sebuah database baru dengan nama db_siswa.
Kemudian execute SQL di bawah untuk membuat table baru bernama tb_siswa beserta data2nya.
-- phpMyAdmin SQL Dump
-- version 4.5.2
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Feb 05, 2020 at 04:46 AM
-- Server version: 5.5.64-MariaDB-1ubuntu0.14.04.1
-- PHP Version: 5.6.23
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `db_siswa`
--
-- --------------------------------------------------------
--
-- Table structure for table `tb_siswa`
--
CREATE TABLE `tb_siswa` (
`noinduk` int(5) NOT NULL,
`nama` varchar(50) DEFAULT NULL,
`alamat` varchar(100) DEFAULT NULL,
`hobi` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tb_siswa`
--
INSERT INTO `tb_siswa` (`noinduk`, `nama`, `alamat`, `hobi`) VALUES
(1, 'Alfansyah', 'Jalan Merdeka', 'Bermain Bola'),
(2, 'Wawan Aja', 'Jalan Kebenaran', 'Mancing');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
ADD UNIQUE KEY `noinduk` (`noinduk`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
MODIFY `noinduk` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Kalau sudah, maka table tb_siswa sudah terisi dengan 2 data dan struktur seperti berikut :
Membuat API Server
Kalau tadi sudah dijelaskan apa itu Restful API. Maka, mari langsung kita buat saja API Servernya. API server merupakan direktori yang diletakkan di web server untuk menaruh endpoint / api yang akan kita buat.
Disini saya menamai direktori saya api-kompikaleng. Kemudian buat 5 file php dengan nama (sesuai gambar di atas) antara lain :
koneksi.php
, untuk mengatur koneksi PHP kita ke database MySQL
getData.php, berisi API Select data dari database.
tambahSiswa.php, berisi API untuk menambahkan data ke database.
deleteSiswa.php, berisi API untuk menghapus data dari database.
updateSiswa.php, berisi API untuk melakukan update data di database.
Di koneksi.php kita mendeklarasikan hostname,username,password, dan database kita. Sesuaikan dengan konfigurasi phpmyadmin / mysql kalian ya. Tetapi, untuk variabel database tetap diisi db_siswa.
getData.php
include('koneksi.php');
//jangan lupa untuk include koneksi.php
$sql = "SELECT * FROM tb_siswa";
$query = mysqli_query($conn,$sql);
if(mysqli_num_rows($query) > 0){
while($row = mysqli_fetch_object($query)){
$data['status'] = true;
$data['result'][] = $row;
// $data2 = respond(true, $row);
}
}else{
$data['status'] = false;
$data['result'][] = "Data not Found";
}
print_r(json_encode($data));
?>
Di getData.php berfungsi untuk mengambil / select data yang ada di table tb_siswa kemudian encode sebagai json. Bagi kalian yang sudah pernah mencoba query sql dasar seharusnya tidak bingung ya dengan query di atas.
tambahSiswa.php
include('koneksi.php');
$nama = $_POST['nama']; //menangkap nama dari post
$noinduk = $_POST['noinduk']; //menangkap noinduk dari post
$alamat
= $_POST['alamat'];//menangkap alamat dari post
$hobi = $_POST['hobi'];//menangkap hobi dari post
if(!empty($nama) && !empty($noinduk)){
$sqlCheck = "SELECT COUNT(*) FROM tb_siswa WHERE noinduk='$noinduk' AND nama='$nama'";
$queryCheck = mysqli_query($conn,$sqlCheck);
$hasilCheck = mysqli_fetch_array($queryCheck);
if($hasilCheck[0] == 0){
$sql = "INSERT INTO tb_siswa (nama,noinduk,alamat,hobi)
VALUES('$nama','$noinduk','$alamat','$hobi')";
$query = mysqli_query($conn,$sql);
if(mysqli_affected_rows($conn) > 0){
$data['status'] = true;
$data['result'] = "Berhasil";
}else{
$data['status'] = false;
$data['result'] = "Gagal";
}
}else{
$data['status'] = false;
$data['result'] = "Gagal, Data Sudah Ada";
}
}
else{
$data['status'] = false;
$data['result'] = "Gagal, Nomor Induk dan
Nama tidak boleh kosong!";
}
print_r(json_encode($data));
?>
Sesuai namanya, di api tambahSiswa.php berfungsi untuk menambah data siswa ke database. Data siswa yang diperoleh (noinduk,nama,alamat,dan hobi) berasal dari aplikasi android yang akan kita buat setelah ini.
deleteSiswa.php
include('koneksi.php');
$noinduk = $_POST['noinduk'];
if(!empty($noinduk)){
$sql = "DELETE FROM tb_siswa
WHERE noinduk='$noinduk' ";
$query = mysqli_query($conn,$sql);
$data['status'] = true;
$data['result'] = 'Berhasil';
}else{
$data['status'] = false;
$data['result'] = 'Gagal';
}
print_r(json_encode($data));
?>
Api ini berfungsi untuk menghapus data siswa dari table tb_siswa.
updateSiswa.php
include('koneksi.php');
$nama =
$_POST['nama'];
$noinduk = $_POST['noinduk'];
$alamat = $_POST['alamat'];
$hobi = $_POST['hobi'];
if(!empty($nama) && !empty($noinduk)){
$sql = "UPDATE tb_siswa set nama='$nama', alamat='$alamat', hobi='$hobi' WHERE noinduk='$noinduk' ";
$query = mysqli_query($conn,$sql);
if(mysqli_affected_rows($conn) > 0){
$data['status'] = true;
$data['result'] = "Berhasil";
}else{
$data['status'] = false;
$data['result'] = "Gagal";
}
}else{
$data['status'] = false;
$data['result'] = "Gagal, Nomor Induk dan Nama tidak boleh kosong!";
}
print_r(json_encode($data));
?>
Api ini berfungsi untuk mengupdate / memperbarui data siswa dari table tb_siswa.
Yap, sampai sini ke-lima API kita sudah berhasil dibuat dan artinya API server kita sudah siap!. Artinya juga, kita bisa
lanjut masuk ke dalam tahap selanjutnya di android studio. Sekarang, buka android studio kalian.
Buat Projek di android studio
API server sudah siap!.
Buatlah sebuah projek baru di Android Studio.
Beri nama terserah deh.
Siapkan Dependencies / Libraries
Aplikasi android kali ini kita akan menggunakan library untuk berbagai keperluan, antara lain.
RecyclerView, sebagai wadah untuk data.
CardView,
sebagai wadah view recyclerview.
Rengwuxian EditText , library untuk mempercantik tampilan EditText.
Fast Android Networking, library untuk mengatur segala HTTP request (GET dan POST) yang akan digunakan untuk mengakses API Server yang sudah kita buat tadi .
Masuk ke build.gradle, kemudian masukkan kode di bawah kemudian Sync Now untuk mendownload dependencies ke dalam projek.
Silahkan berkreasi sesuai selera kalian tetapi perlu diingat untuk menyesuaikan penamaan
ID dari TextView dan ImageView yang ada.
Buat RecyclerViewAdapter
Untuk menampilkan data di RecyclerView, kita memerlukan sebuah adapter. Adapter ini berfungsi untuk menghubungkan data yang masuk , ke dalam templaterv.xml yang sudah kita buat tadi.
Data yang ada di adapter ini berasal dari ActivityMain yang didapat dari API yang sudah kita buat.
.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.show();
return false;
}
});
}
@Override
public int getItemCount() {
return array_noinduk.size();
}
}
Sebelumnya, Sesuaikan http://192.168.168.11/api-funtechsy/ dengan direktori API Server kalian. Kode di atas kita mengakses API deleteSiswa.php melalui fungsi onLongClickListener dari CardView. Itu artinya jika kita menekan lama cardview maka akan muncul notif untuk menghapus data / tidak.
Activity_Main.java
Di activity main ini kita akan mengatur hampir sebagian besar komponen yang ada di aplikasi ini.
Di Activity_Main.java kita akan mengakses API getData.php menggunakan Fast Android Networking kemudian mempassing datanya ke adapter untuk ditampilkan.
Sebelumnya, jangan lupa sesuaikan http://192.168.168.11/api-funtechsy dengan API Server kalian.
Bisa diliat di Activity_Main.java kita mengambil data melalui fungsi getData() yang mengakses API getData.php menggunakan library FAN dan kemudian data arraynya dioper ke adapter untuk ditampilkan.
Buat Activity_Add.java
Buatlah
activity baru dengan cara Klik kanan pada nama package -> New ->Activity -> Empty Activity.
Beri nama Activity_Add.
Setelah membuat Activity_Add.java, maka akan otomatis terbuat layout baru bernama activity_add.xml.
Layout
Kali
ini kita akan buat layoutnya, buka activity_add.xml kemudian isi dengan script seperti berikut :
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id==R.id.menu_back){
this.finish();
}
return super.onOptionsItemSelected(item);
}
}
Pada script di atas kita mengambil nilai nama,noinduk,alamat, dan hobi dari edit
text setelah kita melakukan klik pada button submit. Kemudian memanggil fungsi validasi data sebelum dikirim kan ke API lewat fungsi kirimData()
Oh iya, jangan lupa untuk mengubah link API server sesuai dengan API server kalian ya.
Buat Activity_Edit.java
Setelah kita membuat Activity_Add untuk mengatur proses tambah data, saatnya kita membuat activity edit untuk mengatur proses ubah data (Dalam kasus ini data siswa).
New -> Activity -> Empty Activity.
.
Layout
Kalau sudah, pertama kita akan buat layoutnya terlebih dahulu.
.setPositiveButton("Kembali", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = getIntent();
setResult(RESULT_OK,i);
Activity_Edit.this.finish();
}
})
.show();
}else{
new AlertDialog.Builder(Activity_Edit.this)
.setMessage("Gagal Mengupdate Data")
.setCancelable(false)
.setPositiveButton("Kembali", new DialogInterface.OnClickListener() {
@Override
public void
onClick(DialogInterface dialog, int which) {
Intent i = getIntent();
setResult(RESULT_CANCELED,i);
Activity_Edit.this.finish();
}
})
.show();
}
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onError(ANError anError) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_back,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id==R.id.menu_back){
this.finish();
}
return super.onOptionsItemSelected(item);
}
}
Hampir sama seperti tambah data, kita menangkap nilai dari nama,noinduk,alamat,dan hobi setelah kita melakukan klik pada button submit yang kemudian dilanjutkan dengan fungsi validasi
data sebelum dipost ke API.
Sampai sini, aplikasi kita sudah selesai. Silahkan build dan Run Aplikasi.
Hasil Aplikasi :
Bagi kalian kaum rebahan yang suka jalan instan, saya sudah siapkan source code lengkapnya kok, tenang.