Anda di halaman 1dari 35

1| JSON Volley dan Database MySql

MENGGUNAKAN JSON VOLLEY DAN DATABASE MYSQL

1. Pada Modul Latihan ini kita akan menyimpan data dari form Fragment frg_entry ke database
MySql di Web Server Apache lokal yang telah kita install melalui XAMPP. Untuk
mengintegrasikan java android ke database MySql kita memerlukan sebuah utilities yang dikenal
dengan Volley dengan menggunakan HTTP Request secara Asynchronous. Apa ya maksudnya.
Ga penting banget istilah di awal. Langsung kita coba, rasakan dan definisikan sendiri apa itu
Volley. Sederhana kan...

2. Untuk mendownload paket Volley kita perlu menggunakan aplikasi Git untuk mendownload
paket program volley. Untuk download Git sesuai dengan PC kita apakah 32 bit atau 64 bit dapat
dilakukan dengan mengakses browser dengan URL : https://git-scm.com/download/win. Maka
otomatis akan didownload file instalasi exe untuk Git.

3. Double click file instalasi Git-2.11.0-32-bit.exe untuk mengistall akan muncul form dialog
konfirmasi. Klik Button NEXT.

astimen@gmail.com – http://aflowz.com
2| JSON Volley dan Database MySql

4. Akan ditampilkan konfirmasi lokasi File setup Git pada penyimpanan lokal, ganti dengan D:\Git
karena folder ini akan menjadi setting Git di Android Studio. Klik Button NEXT untuk
melanjutkan.

astimen@gmail.com – http://aflowz.com
3| JSON Volley dan Database MySql

5. Akan ditampilkan konfirmasi komponen yang akan diinstall. Biarkan setting default dan klik
Button NEXT untuk melanjutkan.

6. Akan ditampilkan konfirmasi program shortcut untuk Git. Klik Button NEXT untuk melanjutkan.

astimen@gmail.com – http://aflowz.com
4| JSON Volley dan Database MySql

7. Selanjutnya akan ada pilihan bagaimana menggunakan path Git, biarkan settingan default
melalui DOS Prompt Windows, klik Button NEXT

8. Berikutnya adalah settingan line Git, biarkas settingan default, klin Button NEXT

astimen@gmail.com – http://aflowz.com
5| JSON Volley dan Database MySql

9. Berikutnya ditampilkan Terminal emulator Git, pilih option button “Use Windows default
console windows”. Klik Button NEXT

10. Berikutnya biarkan setting default extra option dan klik Button NEXT untuk melanjutkan

astimen@gmail.com – http://aflowz.com
6| JSON Volley dan Database MySql

11. Berikutnya adalah dialog konfirmasi Experimental Option, biarkan check box disable sesuai
dengan default setting dan klik Button NEXT untuk melanjutkan

12. Selanjutnya akan ditampilkan progress bar installasi, tunggu hingga selesai

astimen@gmail.com – http://aflowz.com
7| JSON Volley dan Database MySql

13. Setelah berhasil selesai akan ditampilkan pilihan check box. Pilih Check Launch Git Bash agar
segera membukan aplikasi Git nya. Klik Button FINISH.

14. Akan dibuka DOS Prompt Git. Ketik Git dan ENTER untuk testing perintah Git akan dimunculkan
otpional perintah dalam DOS Promt nya

astimen@gmail.com – http://aflowz.com
8| JSON Volley dan Database MySql

15. Agar file yang didownload masuk folder windows maka kita menggunakan Windows DOS
Prompt. Klik Button Windows START, ketik di search CMD. Akan ditampilkan CMD Prompt dan
Git CMD, keduanya dapat digunakan karena sama. Klik ENTER

16. Arahkan DOS Prompt ke lokasi C:\ sehingga nanti akan dibuatkan folder otomatis C:\volley

17. Masukan perintah ke Prompt DOS dibawah ini, dan ENTER

git clone https://android.googlesource.com/platform/frameworks/volley

18. Akan ditampilkan proses clonning dengan indikator file dan persentase downloadnya, tunggu
hingga 100%.

astimen@gmail.com – http://aflowz.com
9| JSON Volley dan Database MySql

19. Maka jika dicek di windows explorer akan terbentuk folder volley

20. Dengan terbentuknya folder volley tersebut berarti download paket volley untuk integrasi java
android dengan database MySql selesai dilakukan.

21. Selanjutnya kita akan menginstall volley tersebut kedalam Android Studio kita. Buka Android
Studio.

astimen@gmail.com – http://aflowz.com
10 | J S O N V o l l e y d a n D a t a b a s e M y S q l

22. Klik Menu FileNewImport Module akan muncul Dialog New Modul. Masukkan Source
Directory lokasi Volley C:\Volley dan module name akan otomatis dibuatkan :volley. Klik Button
FINISH untuk melanjutkan.

astimen@gmail.com – http://aflowz.com
11 | J S O N V o l l e y d a n D a t a b a s e M y S q l

23. Biarkan Gradle melakukan proses konfigurasi Volley pada Android Studio dengan menampilkan
progrss bar bawah windows Android Studio.

24. Jika Synchronization gagal (Fail to sync Gradle Project) dan Android Studio meminta untuk install
Build Tools 22.0.1 and Sync Project. Klik link install berwarna biru. Pastikan internet tersambung
dan tunggu hingga component terinstall dan progress bar ...100% Done. Klik Button FINISH pada
Dialog Component Installer.

25. Biarkan Gradle melakukan sync kembali ... tunggu hingga Gradle selesai konfigurasi porject. Jika
masih error jalankan menu BuildClean Project..

astimen@gmail.com – http://aflowz.com
12 | J S O N V o l l e y d a n D a t a b a s e M y S q l

26. Lakukan Sychronisasi manual melalu klik menu FileSychronize. Tunggu prosse synchronisasi
selesai dilakukan.

27. Buka Gradle Scriptbuild.gradle (Module: app). Tambahkan dependencies : compile project
(“:volley”). Perhatikan di project panel android terdapat sebuah folder modul volley diatas
Gradle Scripts.

astimen@gmail.com – http://aflowz.com
13 | J S O N V o l l e y d a n D a t a b a s e M y S q l

28. File lengkap Gradle Script  build.gradle (Module: app) adalah sebagai berikut.

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.example.astimen.myapplication"
minSdkVersion 22
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
debug {
debuggable true
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-
core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.android.support:design:24.2.1'

compile project(":volley")

testCompile 'junit:junit:4.12'
}

29. Jika gagal menjalankan git.exe copy-kan saja git.exe dari folder installer misalhnya
D:\Git\bin\git.exe ke folder volley dalam project. Contohnya ke folder :
C:\Users\astimen\AndroidStudioProjects\MyApplication\volley

30. Jika terjadi pesan kesalahan Git.exe tidak dapat dijalankan maka kita perlu melakukan setting
manual lokasi git.exe tersebut ke setting Android Studio. Klik menu FileSettingsVersion
ControlGit. Akan ditampilkan form settings. Isi Path to Git Executable dengan lokasi folder
ketika mengistal yaitu D:\Git\bin\git.exe.

31. Klik Button Test jika berhasil akan ditampilkan dialog Git Executed Successfully. Klik Button OK
untuk menyimpan hasil settings.

astimen@gmail.com – http://aflowz.com
14 | J S O N V o l l e y d a n D a t a b a s e M y S q l

32. Setelah selesai menginstall JSON volley untuk integrasi dengan database MySql dan PHP dalam
format data JSON, sekarang kita akan membuat tabel dalam database MySQL melalui
phpMyAdmin dan membuat file php menggunakan editor text Notepad++.

33. Buka browser dan pastikan control panel XAMPP berjalan servicenya untuk web server apache
dan database mysql. Jika belum Running click button START untuk kedua service itu. Untuk
menjalankan browser phpMyAdmin klik button ADMIN sejajar MySql.

astimen@gmail.com – http://aflowz.com
15 | J S O N V o l l e y d a n D a t a b a s e M y S q l

34. phpMyAdmin juga dapat dibuka melaui browser dengan alamat http://localhost/phpmyadmin/
atau http://127.0.0.1/phpmyadmin/ jika PC anda ketika instalasi menggunakan port tertentu
karena port 80 nya sudah digunakan aplikasi lain, misalnya 8080 maka URL nya menjadi
http://localhost:8080/phpmyadmin/

35. Klik tab Basisdata (Database). Isi isian database baru dengan aflowz_db dan klik button CREATE
(Ciptakan). Akan dibuat sebuah database baru bernama aflowz_db yang muncul di panel kiri.

36. Klik aflowz_db pada tabel database untuk mulai membuat table.

astimen@gmail.com – http://aflowz.com
16 | J S O N V o l l e y d a n D a t a b a s e M y S q l

37. Kita akan menghubungkan antara form entry di android yaitu fragment frg_entry dengan
database aflowz_db table tbl_user dengan menggunakan class java JSON volley yang sudah kita
install sebelumnya

38. Akan muncul isian nama tabel dan jumlah field yang akan dibuat. Isi nama tabel dengan tbl_user
dan number of columns dengan 8 sesuai jumlah field yang ada di fragment frg_entry. Klik
Button Go untuk memulai pembuatan field.

39. Isilah isian field pada kolom, jenis dan ukuran seperti dibawah ini sesuai struktur tabel berikut.
Klik Button SIMPAN.

No Kolom (Field) Jenis Ukuran


1 id_rec VARCHAR 17
2 user_id VARCHAR 25
3 user_name VARCHAR 50
4 password_1 VARCHAR 15
5 department VARCHAR 25
6 user_sex VARCHAR 15
7 role_admin VARCHAR 15
8 role_user VARCHAR 15

astimen@gmail.com – http://aflowz.com
17 | J S O N V o l l e y d a n D a t a b a s e M y S q l

40. Jika berhasil dibuat maka pada panel kiri akan tampil icon tbl_user dan klik icon tersebut maka
akan ditampilkan struktur data yang telah kita buat untuk tbl_user. Maka kita siap melakukan
coding pada java android dan pembuatan web service PHP bagi JSON volley.

astimen@gmail.com – http://aflowz.com
18 | J S O N V o l l e y d a n D a t a b a s e M y S q l

41. Setelah kita membuat tabel tbl_user di database aflowz_db selanjutnya kita akan menambah
fungsi volley pada event button SAVE onclick pada Fragment frg_entry. Buka frg_entry pada
android studio appjavacomfragmentfrg_entry.java

42. Pada event onPostExecute class myikc terdapat dua buah button onClickListener Button NEW
dan Button SAVE. Pada Buttone NEW kita tambahkan pembuatan id_rec timestamp 17 digit
dengan foramt TTTTBBHHJJMMDDmmm (tahun-bulan-hari-jam-menit-detik-milisecond).
Timestamp 17 digit ini unik karena diperkirakan manusia tidak membuat event pada milisecond
yang sama. Jadi akan menjadi id record yang unik untuk setiap record setiap table.

Button btn_new = (Button) getView().findViewById(R.id.btnNew);


btn_new.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something

Toast.makeText(getActivity(), "Button New Clicked",


Toast.LENGTH_LONG).show();

//---membuat idrec timestamp 17 digit TTTTBBHHJJMMDDmmm


//---Tahun-Bulan-Hari-Jam_Menit-Detik-MiliSecond

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());


int iYear = calendar.get(Calendar.YEAR);
int iMonth = calendar.get(Calendar.MONTH)+1;
int iDay = calendar.get(Calendar.DAY_OF_MONTH);
int iHour = calendar.get(Calendar.HOUR_OF_DAY);
int iMinute = calendar.get(Calendar.MINUTE);
int iSecond = calendar.get(Calendar.SECOND);
int iMiliSecond = calendar.get(Calendar.MILLISECOND);

String siYear = Integer.toString(iYear);


String siMonth = Integer.toString(iMonth);
String siDay = Integer.toString(iDay);
String siHour = Integer.toString(iHour);
String siMinute = Integer.toString(iMinute);
String siSecond = Integer.toString(iSecond);
String siMiliSecond = Integer.toString(iMiliSecond);

if(iMonth<10)
{
siMonth = "0"+ siMonth;
}

if(iDay<10)
{
siDay = "0"+ siDay;
}

if(iHour<10)
{
siHour = "0"+ siHour;
}

astimen@gmail.com – http://aflowz.com
19 | J S O N V o l l e y d a n D a t a b a s e M y S q l

if(iMinute<10)
{
siMinute = "0"+ siMinute;
}

if(iSecond<10)
{
siSecond = "0"+ siSecond;
}

if(iMiliSecond<100)
{
if(iMiliSecond<10)
{
siMiliSecond = "00"+ siMiliSecond;
}
else
{
siMiliSecond = "0"+ siMiliSecond;
}
}

String idrec = siYear + siMonth + siDay + siHour + siMinute +


siSecond + siMiliSecond;

EditText etIdRec = (EditText)


getView().findViewById(R.id.txtIdRec);
etIdRec.setText(idrec);

}
});

43. Kode diatas menjelaskan pemanfaatan Calendar yang diambil integer setiap unit waktu,
mengkonversinya menuadi variable string, melengkapi dengan string 0 jika dibawah 10 untuk
dua digit tanggal dan bulan serta tiga digit miliscond. Jika Button NEW diklik maka pada isian
id_rec akan dibuatkan id timestamp sebanyak 17 digit. Contohnya : 20170105113233859

44. Selanjunya kita akan membuat code program untuk Button SAVE dengan code program
memanfaatkan JSON Volley yang dapat mengirimkan data dengan metode POST kesebuah page
PHP yang kita simpan di lokal webserver XAMPP dengan URL Address
http://localhost/aflowz/volleySimpan.php yang jika diakses dari Emulator menggunakan URL
http://10.0.2.2/aflowz/volleySimpan.php

Button btn_save = (Button) getView().findViewById(R.id.btnSave);


btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something

Toast.makeText(getActivity(), "Button Save Clicked",


Toast.LENGTH_LONG).show();

EditText etIdRec = (EditText)


getView().findViewById(R.id.txtIdRec);

astimen@gmail.com – http://aflowz.com
20 | J S O N V o l l e y d a n D a t a b a s e M y S q l

final String dtxtIdrec=etIdRec.getText().toString();

EditText etUserId = (EditText)


getView().findViewById(R.id.txtUserId);
final String dtxtUserId=etUserId.getText().toString();

final String dtxtUserName = ((EditText)


getView().findViewById(R.id.txtUserName)).getText().toString();
final String dtxtPassword = ((EditText)
getView().findViewById(R.id.txtPassword)).getText().toString();
final String dtxtPassword2 = ((EditText)
getView().findViewById(R.id.txtPassword2)).getText().toString();
final String dspnDepartment = ((Spinner)
getView().findViewById(R.id.spnDepartment)).getSelectedItem().toString();

final int drbSex = ((RadioGroup)


getView().findViewById(R.id.rgSex)).getCheckedRadioButtonId();
final RadioButton rbSex = ((RadioButton)
getView().findViewById(drbSex));
final String sdrbSex = rbSex.getText().toString();

final Boolean bolRoleAdmin=((CheckBox)


getView().findViewById(R.id.cbxAdmin)).isChecked();
final Boolean bolRoleUser=((CheckBox)
getView().findViewById(R.id.cbxUser)).isChecked();

final String sbolRoleAdmin = bolRoleAdmin.toString();


final String sbolRoleUser = bolRoleUser.toString();

if(dtxtIdrec.trim().length()==0)
{
pesandialog("Entrian Id Record tidak boleh kosong
...!");
etIdRec.requestFocus();

}
else if(dtxtUserId.trim().length()==0)
{
pesandialog("Entrian User Id tidak boleh kosong
...!");
etUserId.requestFocus();

else if(dtxtUserName.trim().length()==0)
{
pesandialog("Entrian User Name tidak boleh kosong
...!");
((EditText)
getView().findViewById(R.id.txtUserName)).requestFocus();

else if(dtxtPassword.trim().length()==0)
{
pesandialog("Entrian Password tidak boleh kosong
...!");

astimen@gmail.com – http://aflowz.com
21 | J S O N V o l l e y d a n D a t a b a s e M y S q l

((EditText)
getView().findViewById(R.id.txtPassword)).requestFocus();

}
else if(dtxtPassword2.trim().length()==0)
{
pesandialog("Entrian Password kedua tidak boleh
kosong ...!");
((EditText)
getView().findViewById(R.id.txtPassword2)).requestFocus();

//pengecekan password satu dan dua

if(!dtxtPassword.equals(dtxtPassword2))
{
pesandialog("Password dan Pasword2 tidak sama ...!");
((EditText)
getView().findViewById(R.id.txtPassword2)).requestFocus();
}

//------volley

final String REGISTER_URL =


"http://10.0.2.2/aflowz/volleySimpan.php";

final String KEY_ID_REC = "id_rec";


final String KEY_USER_ID = "user_id";
final String KEY_USER_NAME = "user_name";
final String KEY_PASSWORD = "password";
final String KEY_DEPARTMENT = "department";
final String KEY_USER_SEX = "user_sex";
final String KEY_ROLE_ADMIN = "role_admin";
final String KEY_ROLE_USER = "role_user";

StringRequest stringRequest = new


StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getActivity(),"Server : "
+ response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError
error) {
Toast.makeText(getActivity(),"Server :" +
error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String,
String>();
params.put(KEY_ID_REC,dtxtIdrec);
params.put(KEY_USER_ID,dtxtUserId);
params.put(KEY_USER_NAME, dtxtUserName);

astimen@gmail.com – http://aflowz.com
22 | J S O N V o l l e y d a n D a t a b a s e M y S q l

params.put(KEY_PASSWORD, dtxtPassword);
params.put(KEY_DEPARTMENT, dspnDepartment);
params.put(KEY_USER_SEX, sdrbSex);
params.put(KEY_ROLE_ADMIN, sbolRoleAdmin);
params.put(KEY_ROLE_USER, sbolRoleUser);

return params;
}

};

RequestQueue requestQueue =
Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);

//-------------

}
});

}
}

45. Pertama kita menambah deklarasi final di code pengambilan isi texbox, spinner, checkbox dan
radio button, agar dapat dimasukan kedalam parameter yang dikirim :

EditText etIdRec = (EditTextgetView().findViewById(R.id.txtIdRec);


final String dtxtIdrec=etIdRec.getText().toString();
...

46. Kedua kita mendefinisikan URL php target yang akan menangkap data yang kita kirimkan yaitu
vollehSimpan.php.

final String REGISTER_URL = "http://10.0.2.2/aflowz/volleySimpan.php";

47. Ketiga kita mendefinisikan key field yang akan kita kirimkan melalui http POST ke
volleySimpan.php sesuai dengan nama field di database yang telah kita buat. Gunakan juga
deklarasi final karena akan menjadi variable parameter volley httpRequest

final String KEY_ID_REC = "id_rec";


final String KEY_USER_ID = "user_id";
final String KEY_USER_NAME = "user_name";
final String KEY_PASSWORD = "password";
final String KEY_DEPARTMENT = "department";
final String KEY_USER_SEX = "user_sex";
final String KEY_ROLE_ADMIN = "role_admin";
final String KEY_ROLE_USER = "role_user";

astimen@gmail.com – http://aflowz.com
23 | J S O N V o l l e y d a n D a t a b a s e M y S q l

48. Keempat kita mendefinisikan fungsi volley untuk request POST ke URL yang telah kita
definisikan, membuat pesan TOAST jika response berhasil dan jika response server web php
error. Disetting juga parameter params tempat menyimpan nilai yang sudah kita isi di form
frg_entry sesuai dengan KEY FIELD masing masing dan terakhir kite melakukan register antrian
(queue) agar volley mengirimkan data tersebut.

StringRequest stringRequest = new StringRequest(Request.Method.POST,


REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getActivity(),"Server : " + response,
Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(),"Server :" + error.toString(),
Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put(KEY_ID_REC,dtxtIdrec);
params.put(KEY_USER_ID,dtxtUserId);
params.put(KEY_USER_NAME, dtxtUserName);
params.put(KEY_PASSWORD, dtxtPassword);
params.put(KEY_DEPARTMENT, dspnDepartment);
params.put(KEY_USER_SEX, sdrbSex);
params.put(KEY_ROLE_ADMIN, sbolRoleAdmin);
params.put(KEY_ROLE_USER, sbolRoleUser);

return params;
}

};

RequestQueue requestQueue = Volley.newRequestQueue(getContext());


requestQueue.add(stringRequest);

49. Selanjutnya kita buka editor Notepad++ untuk membuat page php volleySimpan.php di server
web locak folder root\htdocs\aflowz\volleySimpan.php dengan code php sbb :

<?php

//-------------database

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'aflowz_db';

astimen@gmail.com – http://aflowz.com
24 | J S O N V o l l e y d a n D a t a b a s e M y S q l

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Could not connect: ' . mysql_error());
mysql_select_db($dbname);

//----------------------

if($_SERVER['REQUEST_METHOD']=='POST'){

$id_rec = $_POST['id_rec'];
$user_id = $_POST['user_id'];
$user_name = $_POST['user_name'];
$password = $_POST['password'];
$department = $_POST['department'];
$user_sex = $_POST['user_sex'];
$role_admin = $_POST['role_admin'];
$role_user = $_POST['role_user'];

$zsql = "";
$zsql = $zsql."insert into tbl_user values(";
$zsql = $zsql."'".$id_rec."',";
$zsql = $zsql."'".$user_id."',";
$zsql = $zsql."'".$user_name."',";
$zsql = $zsql."'".$password."',";
$zsql = $zsql."'".$department."',";
$zsql = $zsql."'".$user_sex."',";
$zsql = $zsql."'".$role_admin."',";
$zsql = $zsql."'".$role_user."')";

$result = mysql_query($zsql);

if($result){
echo "Successfully Registered";
}else{
echo "Could not register";

}
}
else
{
echo 'error';
}

//-------close database
mysql_close($conn);

?>

astimen@gmail.com – http://aflowz.com
25 | J S O N V o l l e y d a n D a t a b a s e M y S q l

50. Definisikan hosting, database, user dan password serta koneksi database. Buat kontrol if jika
akses tersebut berupa request server POST maka ditangkap nilai parameter dengan sintax :

$id_rec = $_POST['id_rec'];
$user_id = $_POST['user_id'];
...
51. Selanutnya buat action query insert untuk memasukan data tersebut ke tabel tbl_user
$zsql = "";
$zsql = $zsql."insert into tbl_user values(";
$zsql = $zsql."'".$id_rec."',";
$zsql = $zsql."'".$user_id."',";
$zsql = $zsql."'".$user_name."',";
$zsql = $zsql."'".$password."',";
$zsql = $zsql."'".$department."',";
$zsql = $zsql."'".$user_sex."',";
$zsql = $zsql."'".$role_admin."',";
$zsql = $zsql."'".$role_user."')";

$result = mysql_query($zsql);

if($result){
echo "Penyimpanan User Berhasil";
}else{
echo "Penyimpanan User Gagal";

52. Jika bernilai true maka akan dikirimkan pesan keberhasilan dan jika gagal juga dibuatkan pesan
penyimpanan gagal yang nanti akan ditampilkan di TOAST nya android frg_entry.

StringRequest stringRequest = new StringRequest(Request.Method.POST,


REGISTER_URL,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
Toast.makeText(getActivity(),"Server : " + response,
Toast.LENGTH_LONG).show();

}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(),"Server :" + error.toString(),
Toast.LENGTH_LONG).show();
}

53. Run App dan biarkan Gradle melakukan building aplikasi dan instalasi file APK ke emulator
Android.

astimen@gmail.com – http://aflowz.com
26 | J S O N V o l l e y d a n D a t a b a s e M y S q l

54. Tap menu Data Entry. Klik Button New maka akan dibuatkan 17 digit timestamp id record. Isi
isian Fragment frg_entry sesuai dengan data user yang akan dikirimkan ke webserver lokal. Jika
berhasil akan muncul pesan TOAST Server: Penyimpanan User Berhasil.

55. Jika kita bukan database aflowz_db dan tbl_user melalui phpMyAdmin maka akan terlihat data
yang telah kita entri telah masuk kedalam database.

astimen@gmail.com – http://aflowz.com
27 | J S O N V o l l e y d a n D a t a b a s e M y S q l

56. Untuk membuat password tidak terlihat oleh user lain maka dapat ditambahkan di
volleySimpan.php fungsi md5.

$zsql = "";
$zsql = $zsql."insert into tbl_user values(";
$zsql = $zsql."'".$id_rec."',";
$zsql = $zsql."'".$user_id."',";
$zsql = $zsql."'".$user_name."',";
$zsql = $zsql."'".md5($password)."',";
$zsql = $zsql."'".$department."',";
$zsql = $zsql."'".$user_sex."',";
$zsql = $zsql."'".$role_admin."',";
$zsql = $zsql."'".$role_user."')";

57. Simpan sekali lagi maka record kedua passwordnya akan dienkripsi dengan model md5.

58. Selamat mencoba temen dan tetap semangat ....

59. Kode lengkap di Fragment frg_entry.java adalah sbb :

package com.example.astimen.myapplication.fragment;

import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;

astimen@gmail.com – http://aflowz.com
28 | J S O N V o l l e y d a n D a t a b a s e M y S q l

import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.astimen.myapplication.MainActivity;
import com.example.astimen.myapplication.R;

import java.sql.Date;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.TimeZone;

/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link frg_entry.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link frg_entry#newInstance} factory method to
* create an instance of this fragment.
*/
public class frg_entry extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

// TODO: Rename and change types of parameters


private String mParam1;
private String mParam2;

private OnFragmentInteractionListener mListener;

public frg_entry() {
// Required empty public constructor
}

/**

astimen@gmail.com – http://aflowz.com
29 | J S O N V o l l e y d a n D a t a b a s e M y S q l

* Use this factory method to create a new instance of


* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment frg_entry.
*/
// TODO: Rename and change types and number of parameters
public static frg_entry newInstance(String param1, String param2) {
frg_entry fragment = new frg_entry();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

new myikc().execute();

// Inflate the layout for this fragment


return inflater.inflate(R.layout.fragment_frg_entry, container,
false);

// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;

astimen@gmail.com – http://aflowz.com
30 | J S O N V o l l e y d a n D a t a b a s e M y S q l

} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}

@Override
public void onDetach() {
super.onDetach();
mListener = null;
}

/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be
communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
*
"http://developer.android.com/training/basics/fragments/communicating.html
"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}

class myikc extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();

protected String doInBackground(String... args) {

return null;
}

protected void onPostExecute(String file_url) {

Button btn_new = (Button) getView().findViewById(R.id.btnNew);


btn_new.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something

astimen@gmail.com – http://aflowz.com
31 | J S O N V o l l e y d a n D a t a b a s e M y S q l

Toast.makeText(getActivity(), "Button New Clicked",


Toast.LENGTH_LONG).show();

//---membuat idrec timestamp 17 digit


TTTTBBHHJJMMDDmmm
//---Tahun-Bulan-Hari-Jam_Menit-Detik-MiliSecond

Calendar calendar =
Calendar.getInstance(TimeZone.getDefault());
int iYear = calendar.get(Calendar.YEAR);
int iMonth = calendar.get(Calendar.MONTH)+1;
int iDay = calendar.get(Calendar.DAY_OF_MONTH);
int iHour = calendar.get(Calendar.HOUR_OF_DAY);
int iMinute = calendar.get(Calendar.MINUTE);
int iSecond = calendar.get(Calendar.SECOND);
int iMiliSecond = calendar.get(Calendar.MILLISECOND);

String siYear = Integer.toString(iYear);


String siMonth = Integer.toString(iMonth);
String siDay = Integer.toString(iDay);
String siHour = Integer.toString(iHour);
String siMinute = Integer.toString(iMinute);
String siSecond = Integer.toString(iSecond);
String siMiliSecond = Integer.toString(iMiliSecond);

if(iMonth<10)
{
siMonth = "0"+ siMonth;
}

if(iDay<10)
{
siDay = "0"+ siDay;
}

if(iHour<10)
{
siHour = "0"+ siHour;
}

if(iMinute<10)
{
siMinute = "0"+ siMinute;
}

if(iSecond<10)
{
siSecond = "0"+ siSecond;
}

if(iMiliSecond<100)

astimen@gmail.com – http://aflowz.com
32 | J S O N V o l l e y d a n D a t a b a s e M y S q l

{
if(iMiliSecond<10)
{
siMiliSecond = "00"+ siMiliSecond;
}
else
{
siMiliSecond = "0"+ siMiliSecond;
}
}

String idrec = siYear + siMonth + siDay + siHour +


siMinute + siSecond + siMiliSecond;

EditText etIdRec = (EditText)


getView().findViewById(R.id.txtIdRec);
etIdRec.setText(idrec);

}
});

Button btn_save = (Button)


getView().findViewById(R.id.btnSave);
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something

Toast.makeText(getActivity(), "Button Save Clicked",


Toast.LENGTH_LONG).show();

EditText etIdRec = (EditText)


getView().findViewById(R.id.txtIdRec);
final String dtxtIdrec=etIdRec.getText().toString();

EditText etUserId = (EditText)


getView().findViewById(R.id.txtUserId);
final String dtxtUserId=etUserId.getText().toString();

final String dtxtUserName = ((EditText)


getView().findViewById(R.id.txtUserName)).getText().toString();
final String dtxtPassword = ((EditText)
getView().findViewById(R.id.txtPassword)).getText().toString();
final String dtxtPassword2 = ((EditText)
getView().findViewById(R.id.txtPassword2)).getText().toString();
final String dspnDepartment = ((Spinner)
getView().findViewById(R.id.spnDepartment)).getSelectedItem().toString();

final int drbSex = ((RadioGroup)


getView().findViewById(R.id.rgSex)).getCheckedRadioButtonId();

astimen@gmail.com – http://aflowz.com
33 | J S O N V o l l e y d a n D a t a b a s e M y S q l

final RadioButton rbSex = ((RadioButton)


getView().findViewById(drbSex));
final String sdrbSex = rbSex.getText().toString();

final Boolean bolRoleAdmin=((CheckBox)


getView().findViewById(R.id.cbxAdmin)).isChecked();
final Boolean bolRoleUser=((CheckBox)
getView().findViewById(R.id.cbxUser)).isChecked();

final String sbolRoleAdmin = bolRoleAdmin.toString();


final String sbolRoleUser = bolRoleUser.toString();

if(dtxtIdrec.trim().length()==0)
{
pesandialog("Entrian Id Record tidak boleh kosong
...!");
etIdRec.requestFocus();

}
else if(dtxtUserId.trim().length()==0)
{
pesandialog("Entrian User Id tidak boleh kosong
...!");
etUserId.requestFocus();

else if(dtxtUserName.trim().length()==0)
{
pesandialog("Entrian User Name tidak boleh kosong
...!");
((EditText)
getView().findViewById(R.id.txtUserName)).requestFocus();

else if(dtxtPassword.trim().length()==0)
{
pesandialog("Entrian Password tidak boleh kosong
...!");
((EditText)
getView().findViewById(R.id.txtPassword)).requestFocus();

}
else if(dtxtPassword2.trim().length()==0)
{
pesandialog("Entrian Password kedua tidak boleh
kosong ...!");
((EditText)
getView().findViewById(R.id.txtPassword2)).requestFocus();

astimen@gmail.com – http://aflowz.com
34 | J S O N V o l l e y d a n D a t a b a s e M y S q l

//pengecekan password satu dan dua

if(!dtxtPassword.equals(dtxtPassword2))
{
pesandialog("Password dan Pasword2 tidak sama
...!");
((EditText)
getView().findViewById(R.id.txtPassword2)).requestFocus();
}

//------volley

final String REGISTER_URL =


"http://10.0.2.2/aflowz/volleySimpan.php";

final String KEY_ID_REC = "id_rec";


final String KEY_USER_ID = "user_id";
final String KEY_USER_NAME = "user_name";
final String KEY_PASSWORD = "password";
final String KEY_DEPARTMENT = "department";
final String KEY_USER_SEX = "user_sex";
final String KEY_ROLE_ADMIN = "role_admin";
final String KEY_ROLE_USER = "role_user";

StringRequest stringRequest = new


StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getActivity(),"Server :
" + response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError
error) {
Toast.makeText(getActivity(),"Server
:" + error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new
HashMap<String, String>();
params.put(KEY_ID_REC,dtxtIdrec);
params.put(KEY_USER_ID,dtxtUserId);
params.put(KEY_USER_NAME, dtxtUserName);
params.put(KEY_PASSWORD, dtxtPassword);
params.put(KEY_DEPARTMENT, dspnDepartment);
params.put(KEY_USER_SEX, sdrbSex);
params.put(KEY_ROLE_ADMIN, sbolRoleAdmin);
params.put(KEY_ROLE_USER, sbolRoleUser);

astimen@gmail.com – http://aflowz.com
35 | J S O N V o l l e y d a n D a t a b a s e M y S q l

return params;
}
};

RequestQueue requestQueue =
Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);

//-------------

}
});

}
}

void pesandialog(String pesan){


DialogInterface.OnClickListener dialogClickListener = new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which){
switch (which){
case DialogInterface.BUTTON_POSITIVE:
Toast.makeText(getActivity(), "Isi kembali entrian
yang kosong ...", Toast.LENGTH_LONG).show();
break;
case DialogInterface.BUTTON_NEGATIVE:
break;

}
}

};

AlertDialog.Builder builder = new


AlertDialog.Builder(getView().getContext());
builder
.setTitle("AflowZ")
.setMessage(pesan)
.setCancelable(false)
.setPositiveButton("OK",dialogClickListener)
.show();

_______

astimen@gmail.com – http://aflowz.com

Anda mungkin juga menyukai