CRUD database online | PHP | Volley

Kali ini saya akan berbagi ilmu tentang bagaimana melakukan Create, Read, Update, Delete database dengan menggunakan volley networking library. Dengan php sebagai web service, dan json sebagai pertukaran datanya.

Secara garis besar, langkah-langkah yang harus dilakukan adalah:

  1. Membuat database online.
  2. Membuat beberapa file php dan menyimpannya diserver.
  3. Menambahkan beberapa library dan class pendukung.
  4. Mendisain tampilan aplikasi.
  5. Coding time.

Untuk implementasi CRUD database kali ini, saya contohkan untuk memanajemen user account. Jadi terdapat:

  • Create dalam sign up
  • Read dalam login dan find user
  • Update dalam update username dan password user
  • Delete dalam delete user

Berikut adalah demo hasil jadi aplikasi dari tutorial ini:

Membuat Database Online

Saya menggunakan sebuah server gratisan dari 000webhost.com untuk database dan tempat menyimpan file-file phpnya.

  1. Login ke 000webhost.com(Sign Up dulu jika belum punya akun).
  2. Setelah login, klik Create New untuk membuat domain baru.
  3. Setelah itu, kembali ke list domains, dan klik Go to CPanel sesuai dengan domain yang diinginkan.
  4. Masuk ke MySQL untuk membuat sebuah database.
    1
  5. Isi semuanya, diingat-ingat khususnya passwordnya, karena nanti akan kita gunakan. Setelah terisi semua, klik Create database.
    2
  6. Setelah itu, kembali ke CPanel, lalu masuk ke phpMyAdmin, lokasinya disebelahnya MySql persis.
  7. Lalu klik Enter phpMyAdmin pada database yang tadi dibuat.
    3
  8. Waktunya membuat database user accountnya sekarang. Buat table dengan nama User Account, lalu isi kolom-kolomnya seperti gambar dibawah:
    4Gambar yang dibawah adalah potongan gambar disebelah kiri, saya potong biar jelas.
  9. Setelah itu klik save, dan database siap digunakan.

Membuat file-file php

File php disini sebagai jembatan antara aplikasi android dengan server. Menerima request dari aplikasi, mengambil data dari database, dan mengembalikannya ke aplikasi android.

Beberapa file yang akan kita buat:

  1. config.php, untuk menyimpang settingan server, seperti database, user, password, host.
  2. connect.php, untuk menyambungkan ke server dengan settingan dari config.php.
  3. function.php, berisi kumpulan fungsi yang digunakan di main.php.
  4. main.php, menangkap parameter dari aplikasi dan memilih fungsi yang akan digunakan sesuai dengan parameter yang dikirim dari aplikasi.
config.php

Fungsi dari file config.php ini, menyimpan settingan seperti nama user, password, nama server dan nama database. Dibuat terpisah karena untuk mempermudah maintenancenya kedepan, jika ada perubahan nama user, password dll, cukup merubah yang ada difile config.php ini saja.

Jika data diatas belum dicatat atau lupa, bisa dilihat kembali (kecuali password), dari CPanel masuk ke MySQL

5

connect.php

Fungsi dari file connect.php ini, untuk mempersingkat pemanggilan fungsi connect untuk file-file php lainnya. Fungsi connect kedepannya akan dipakai sangat sering sekali, setiap fungsi yang menggunakan fitur database, harus memanggil fungsi ini, jadinya dengan ada file ini, cukup memanggil connect() saja, maka fungsi connect sudah teratasi.

function.php

Fungsi dari file function.php ini, berisi fungsi-fungsi yang digunakan dalam file main.php. Terdapat:

  1. function login, dengan 2 parameter, yaitu username dan password. Fungsinya untuk, sistem login. Mengecek username dan password yang ada didatabase, jika username ada, dan passwordnya cocok, maka akan mengambalikan  kode 2, yang artinya sukses untuk projek ini, kode disini tidak standar, jadi mungkin untuk projek lain, kodenya bisa berbeda-beda setiap kondisinya. Selain itu juga, akan mengambilakan pesan, untuk memberitahukan kepada user hasil apa yang didapat.
  2. function signUp, dengan 2 parameter, username dan password. Fungsinya untuk membuat user baru. Sebelum membuat user baru, username yang diinputkan, akan dicek terlebih dahulu didatabase, jika username telah terdaftar, maka akan dikembalikan kode 1, yang artinya gagal untuk membuat user, karena masalah terkait didalam database, untuk konteks ini yaitu username telah terdaftar. Dan jika berhasil, maka akan mengambilakan nilai 2.
  3. function update, dengan 3 parameter, usernameBefore, usernameAfter dan passwordAfter. usernameBefore adalah username yang akan diganti namanya. usernameAfter adalah nama yang baru sebagai pengganti username lama. passwordAfter, sebagai pengganti password lama. Sebelum melakukan penggantian, akan dilakukan pengecekan usernameAfter, apakah sudah terdaftar atau belum, jika belum maka ke proses pengecekan berikutnya.
    • Jika usernameAfter dan passwordAfter kosong, maka tidak akan ada penggantian.
    • Jika usernameAfter kosong, maka akan dilakukan penggantian untuk password.
    • Jika passwordAfter kosong, maka akan dilakukan penggantian untuk username.
    • Jika usernameAfter dan passwordAfter tidak kosong, maka akan dilakukan penggantian username dan password.
  4. function find, dengan 1 parameter, yaitu username. Fungsinya adalah, untuk mengecek username apakah sudah terdaftar didalam database atau belum. Fungsi ini digunakan sebelum melakukan update atau delete.
  5. function delete, dengan 1 parameter, username. Fungsi ini berguna untuk menghapus sebuah username dalam database.
main.php

File main.php ini, adalah file yang dipanggil dalam aplikasi android(Endpoint). Didalam file ini, menerima parameter dari aplikasi berupa tag. Tag ini fungsinya untuk memilih fungsi mana yang akan digunakan.

Menambahkan beberapa library dan class pendukung

Dalam aplikasi ini, dibutuhkan 3 library pendukung, sebagai berikut:

Agar aplikasi ini bisa berjalan normal, usahakan 3 library diatas sama seperti diatas. Sewaktu-waktu library diatas versinya dapat berubah, dan jika perubahannya mengubah nama fungsi, nama variable atau yang lainnya, maka jika menggunakan library terbarunya, projek ini akan ada yang error.

Cara menggunakan 3 library diatas adalah, masuk ke build.gradle didalam file app. Lalu copy kan 3 file diatas, dengan ditambah compile didepannya, seperti gambar berikut:

9

Letakkan class berikut didalam package Utils. Jika belum ada, klik kanan pada nama package>New>Package

CustomRequest.class

Class ini menggantikan fungsi post dari library volley, karena untuk versi yang digunakan diprojek ini, fungsi post tersebut masih terdapat bug. Letakkan class ini didalam package Utils, biar tidak kelihatan berantakan.

Mendisain tampilan aplikasi

Tampilan yang akan kita buat, mempunyai sebuah activity dengan tab navigation. Dan mempunyai 4 sub tampilan, yang menggunakan fragment. Tab ini berfungsi untuk mengubah sub tampilan tadi, sesuai dengan tab yang sudah dipilih. 4 sub tampilan ini terdiri dari, Login, SignUp, Update dan Delete.

6

Diatas adalah file-file yang berada dalam folder res.

styles.xml (versi-21)

styles.xml

fragment_update.xml

fragment_sign_up.xml

fragment_login.xml

fragment_delete.xml

activity_main.xml

Didalam file-file diatas, terdapat beberapa kode yang menggunakan nama package dari projek, jika ingin membuat projek sendiri, maka:

7

Kenapa saya kasih gambar gede diatas, karena sering kali terjadi error jika murni copy paste saja. Dan juga berlaku untuk class javanya. Jika ada error yang isi terdapat heends.volleycrud, rubahlah dengan nama package anda.

Coding Time

Waktunya melangkah ke pembuatan logicnya. Class yang saya buat disini, saya letakkan dalam package-package sesuai dengan fungsinya, agar kelihatan rapi. Seperti ini:

8

Mohon untuk dibuat classnya semua terlebih dahulu, sebelum dicoba dirun, karena ada beberapa class yang bergantung dengan class lainnya.

Package Utils

VolleySingleton.java

Singleton class adalah class yang membatasi initiasi dari suatu class menjadi satu object saja. Volley menggunakan ini, karena dalam membuat newRequestQueue hanya perlu didefinisinikan sekali saja.

VolleyRequest.java

JSONParser.java

CustomRequest.java

Sudah ditampilkan diatas, dibagian class pendukung.

Package Template

Didalam package ini terdapat constanta untuk endpoint dan beberapa query ke server. Kenapa perlu didefinisikan sendiri, karena jika ada perubahan kedepan, cukup mengganti dibagian constanta saja.

Template.java

EndpointAPI.java

Isi dari String ANDEVINDO diatas adalah lokasi file main.php diserver. Rubah bagian diatas, jika menggunakan server sendiri.

Package Interface

VolleyInterface.java

File diatas fungsinya untuk diterapkan diclass-class yang membutuhkan respon dari Volley.

Package Fragment

Berisikan fragment-fragment sebagai sub tampilan dari main activity.

UpdateFragment.java

SignUpFragment.java

LoginFragment.java

DeleteFragment.java

Package Application

MyApplication.java

Class diatas akan dipanggil pertama kali, ketika program running. Dan class diatas, dibutuhkan oleh VolleySingleton class, untuk mendapatkan Context.

Package Adapter

PagerAdapter.java

Class diatas sebagai adapter dari ViewPager yang digunakan untuk mengatur sub tampilan di main activity.

Package Acitivity

MainActivity.java

Terakhir yang paling penting,

AndroidManifest.xml

Jika ingin menggunakan class-class diatas, saya ingatkan kembali, untuk selalu mengecek nama packagenya. Dan juga untuk memperhatikan penggunaan class lain dalam satu class, karena satu class bisa berkaitan dengan class lain.

Setelah dirun, hasilnya seperti berikut:

device-2015-10-09-004051 device-2015-10-09-004257 device-2015-10-09-004338 device-2015-10-09-004400

Aplikasi ini berjalan lancar di:

  1. Android Studio versi 1.4
  2. Gradle versi 1.3
  3. Min SDK versi 11
  4. Compile SDK versi 23
  5. Build Tools versi 23.0.0
  6. Appcompat-v7  versi 23.0.1
  7. Support Design versi 23.0.1
  8. Volley Library versi 1.0.19

Download Sourcecode :

[maxbutton id=”1″ url=”http://www.andevindo.com/?smd_process_download=1&download_id=531″]

Download Apk :

[maxbutton id=”1″ url=”http://www.andevindo.com/?smd_process_download=1&download_id=537″]

Terima kasih kepada:

  1. https://www.iconfinder.com/webalys untuk iconnya
  • untuk nampilkan data gima gan?

    • heendher

      Querynya dengan menggunakan SELECT gan, lalu dilewatkan dengan JSON, setelah itu ditampilkan dilist atau yang lain.

  • sulaiman

    mas, saya ada error

    Error:(36, 30) error: no suitable constructor found for JsonObjectRequest(int,String,<anonymous Listener>,)
    constructor JsonObjectRequest.JsonObjectRequest(String,JSONObject,Listener,ErrorListener) is not applicable
    (actual argument int cannot be converted to String by method invocation conversion)
    constructor JsonObjectRequest.JsonObjectRequest(int,String,JSONObject,Listener,ErrorListener) is not applicable
    (actual and formal argument lists differ in length)

    Kenapa ya ?

    • heendher

      Parameternya ada yg kurang pas itu mas. Kan parameternya minta 5 inputan : int, String, JSONObject, Listener dan Error Listener. Nah punya njenengan sepertinya tidak memasukkan 3 paramater terakhir atau ada yang salah. Bisa dipost codenya mas? bagian yang error aja.

  • Mas, ada tutorialnya ini dalam penerapan di service android gak? saya coba error terus

    • heendher

      Coba googling aja mas, saya juga belum terlalu mengerti soal service. Untuk apa ya menggunakan service?

      • update data secara otomatis ketika ada pembaruan data om

        • heendher

          Pakek Google Cloud Messaging biasanya om. Jadi jika data diserver berubah, kita kabari ke client lewat GCM

  • om tanya lagi nih, kadang muncul no value for error itu kenapa ya?

    • heendher

      Pas dibagian mana tuh?

      • udah fix om,, problem lgi mncul com.android.volley.ParseError: org.json.JSONException: End of input at character 0 of ketika update data

        • heendher

          Ini kayaknya, respon dari server itu blank atau gk ada data json yang ditransfer. Coba cek lagi difile phpnya. Biar enak, bkin 1 buah file php, itu fungsinya buat testing fungsi-fungsi yang ada. Jadi nanti ketahuan, seperti apa file json yang diterima diandroid. CMIIW.

  • Gan mau nanya, ini buat appsnya pake android studio kh?

    • heendher

      Ia gan.

  • Hendrawan Adi Wijaya

    Test Comment

  • Puchai

    mas mau tanya, skrg 000webhost tampilanya baru. untuk menemukan DB_SERVER nya dmn ya?

    • Hendrawan Adi Wijaya

      Masuk ke cpanel dari domainnya, trus ke MySql. Nanti ngambil yang MySQL Host.