Tutorial Retrofit Android Insert Data Ke Server Menggunakan PHP dan MySQL (Localhost)

Pada postingan postingan sebelumnya, saya membuat contoh/proses input atau insert selalu menggunakan data dummy apiary, artinya tidak ada data yang masuk, apiary digunakan untuk men testing proses yang kita buat di mobile sudah benar apa belum.

Biasanya pada tutorial yang saya buat menggunakan apiary hanya terfocus untuk menjelasakan masalah GET POST data menggunakan retrofit. Tidak berisi file PHP.

Nah, kali ini saya akan memposting tentang cara input data menggunakan Android. Database menggunakan MySQL (Localhost/phpMyAdmin) dan server nya dibuat menggunakan PHP.

Untuk transfer data ke server, di Android saya menggunakan library retrofit 2.0. Retrofit akan membantu kita untuk mengirimkan data ke database.

Di file PHP, saya menggunakan PDO sebagai cara untuk mengkoneksikan file php yang dibuat ke database MySQL.

Membuat Database MySQL

Hal pertama yang harus kita lakukan adalah membuat database. Kalian bisa membuat database MySQL dimanapun, contohnya di HeidiSQL, MySQL Server ataupun PhpMyAdmin.

Pada contoh kasus ini, saya menggunakan PhpMyAdmin untuk membuat database (karena kebetulan tidak punya HeidiSQL).

1. Masuk ke localhost/phpmyadmin (usakan xampp kalian sudah aktif)

2. Maka kalian akan masuk ke page seperti Gambar 1 dibawah ini. Untuk membuat database, pilih New (seperti yang di warnai kuning pada Gambar 1)

Gambar 1

3. Setelah itu, tuliskan nama databasenya, dan pilih type nya. Lihat Gambar 2 dibawah ini

Gambar 2

Buat nama databasenya dengan nama : loginphpandroid
Jenis bahasanya pilih : utf8_general_ci

4. Setelah databasenya jadi, sekarang buat Table, cara membuat Table lihat pada Gambar 3 dibawah ini

Gambar 3

Untuk membuat Tabel baru, silakan klik new pada Gambar 3 (yang diwarnai kuning), kemudian kalian akan bawa ke page untuk menulis nama Table nya.

5. Untuk menuliskan nama Table, silakan lihat Gambar 4 dibawah ini

Gambar 4

Penjelasan untuk Gambar 4 :

  • Beri nama untuk tablenya : Food
  • Pilih jumlah attribute (kolom) yang ada pada table Food
  • Kemudian pilih Go

6.  Setelah Table nya sudah siap, sekarang buat attribute-attribute yang ada pada table Food. Lihat Gambar 5 dibawah ini

Gambar 5

Pejelasan Gambar 5 :

  • Beri nama untuk attrubte pertama sebagai idfood, tipenya INT
  • Set idfood sebagai Primary Key
  • Karena idfood adalah primary key, maka checklist A_I (Auto Increment)
  • Beri nama untuk attribute kedua sebagai foodname, tipenya VARCHAR
  • Beri nama untuk attirute ketiga sebagai foodqty, tipenya INT
  • Jika sudah selesai semua, pilih Save


Oke sekarang database sudah siap digunakan tinggal focus di  kodingan antara Android dan PHP.

Kodingan di PHP

Di project PHP yang saya buat, terdapat beberapa class PHP. Diantara file – file PHP tersebut saya tempatkan di package yang berbeda. Untuk lebih jelas tentang struktur folder project PHP yang saya buat, silakan lihat Gambar 6 dibawah ini

Gambar 6

NB : Yang di coret dengan gari hitam adalah Display data PHP PDO dan form HTML insert data akan dibahas pada postingan selanjutnya.

1. Connection.php

File ini digunakan untuk menghubungkan project php yang dibuat ke database. Jika sudah terhubung maka akan gampang untuk menginput data dari Mobile ataupun dari Form HTML. Kodingan lengkapnya bisa dilihat dibawah ini :

2. InsertFood.php

Baca juga : Perbedaan konesi database antara MySQL, MySQLi dan PDO Secara Singkat

File ini digunakan untuk menginput data ke Database. Data yang didapat beragam, bisa jadi berasal form inputan dengan HTML ataupun menggunakan Mobile. Namun dalam kasus ini, data didapat dari Mobile, khusunya Android. Kodingan lengkapnya bisa dilihat di bawah ini :

Perhatikan! ada beberapa kode yang perlu saya jelaskan :

$response = array()

 

Kode diatas dibuat untuk menyimpan response dalam bentuk json.

//cek is the row was inserted or not 
if($sqlInsert){     
    //success inserted     
    $response["success"] = 1;     
    $response["message"] = "Food successful inserted!";
    echo json_encode($response);
}else{     
    //failed inserted     
    $response["success"] = 0;     
    $response["message"] = "Failed while insert data";
    echo json_encode($response);}

Kode diatas akan mengecek, apakah inputan ke database sudah berhasil apa belum, jika sudah berhasil, response yang akan dibuat adalah :

  • success = 1
  • message = Food successful inserted!

Ketika dilakukan json_encode($response), maka tampilan jsonnya akan seperti ini :

{“success”:1,”message”:”Food successful inserted!”}

Jika inputan diatas tidak berhasil, maka response yang akan dibuat adalah :

  • success = 0
  • message = “Failed while insert data”

Sehingga ketika dilakukan print json_encode($response), maka akan tampil json seperti dibawah ini :

{“success”:0,”message”:”Failed while insert data”}

Respon json tersebut akan digunakan di mobile, dan akan dimunculkan dalam Toast sesuai dengan statusnya sebagai tanda sudah berhasil atau gagal dalam proses input data.

Kodingan di Android

Disini saya menggunakan Retrofit 2.0 sebagai kendaraan untuk dapat menginput data dari android ke server

1. Library

Seperti biasa compile beberapa library dibawah ini :

//add the following libraries 
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2'

2. Android Manifest

Di AndroidManifest tambahkan user permission untuk internet, seperti dibawah ini :

<uses-permission android:name="android.permission.INTERNET"/>

3. Layout

Beberapa layout yang digunakan adalah :

  • activity_main.xml
  • popup_insert_food.xml

Buat layout activity_main.xml, kemudian paste kode dibawah ini :

Kemudian buat layout popup_insert_food.xml. Layout ini berisi dua buah edit text untuk foodname dan foodqty. Nantinya layout ini muncul dalam bentuk popup. Paste kode dibawah ini :

4. Class Java

Ada beberapa class java yang butuhkan agar bisa melakukan input ke database, antara lain :

  • ApiService.java
  • ApiClient.java
  • LoggingInterceptors.java
  • InsertFoodResponseModel.java
  • MainActivity.java

Buat interface ApiService.java. Interface ini berisi method yang akan digunakan untuk mengirim data ke server. Kode lengkapnya seperti dibawah ini :


Selanjutnya, buat class ApiClient.java. Class ini berisi URL target yang akan digunakan. Dan juga di class ini akan di inisialisasi Retrofit. Kode lengkapsnya seperti dibawah ini :


Perhatian URL nya, 192.168.43.147 adalah IP dari komputer saya. Sedangkan AndroidPhpLogin adalah folder awal project yang berada di dalam localhost (htdocs). Kalian bisa mengganti URL tersebut dengan alamat server kalian sendiri.

Buat class InsertFoodResponseModel.java. Class ini digunakan untuk menampung respon json dari server (Lihat jsonnya pada penjelasan kodingan php). Paste kode dibawah ini :

Buat class LoggingInterceptors.java. Class ini digunakan untuk melihat proses dari hasil input data ke server.

Kenapa menggukan class ini? Karena diretrofit kita agak mengalami kesulitan dalam melihat hasil proses input nya, terutama URL dan JSON nya. Kalian bisa lihat hasilnya di logcat. Kode lengkap dari LoggingInterceptors.java adalah seperti dibawah ini :

Yang terakhir adalah MainActivity.java. Semua proses dan class-class diatas akan disatukan di class ini. Kode lengkapnya ada dibawah ini :


Demikian beberapa langkah yang dapat saya sampaikan tentang cara meng input data dari Android ke Database menggunakan Server yang dibuat dari Native PHP.

Jika ada yang kurang jelas dari penjelasan diatas, silakan langsung saja ditanyakan. Terimakasih.

Silakan download projectnya dibawah ini :

(Visited 332 times, 8 visits today)

Related Posts

About The Author

  • Izin bertanya mas, pernah ngalamin error seperti ini?

    "java.lang.IllegalStateException:Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $"

  • gan ane mau tanya, file yang .php itu disimpan dimana ya?

  • di C -> Xampp -> Htdoc -> folder project kamu -> file .php

    Pada saat agan buat project pertama kali di IDE, arahin ke htdoc penyimpanan projectnya.

  • This comment has been removed by the author.

  • Gan maaf mau tanya, ko saya error terus ya tiap buat class java baru?
    terus errornya pasti di bagian package sama import

    package com.example.ghiffari.androidphplogin.utils;
    package com.example.ghiffari.androidphplogin.models;
    package com.example.ghiffari.androidphplogin.clients;
    package com.example.ghiffari.androidphplogin.apiservices;
    Kan yg saya defaultnya com.example.ghiffari.androidphplogin;
    Nah tiap ditambah utils, models, clients sama apiservices itu jadi error.

    import com.example.ghiffari.androidphplogin.models.InsertFoodResponseModel;
    import com.example.ghiffari.androidphplogin.utils.LoggingInterceptor;
    nah ini jg sama, kalai misal ditambah models atau utils jadi error.

    Kenapa ya gan?

  • Ada banyak kemungkinan mas,

    1. Build version tools nya gak cocok/error. Misalnya mase menggunakan buildTools versi 25.00, coba aja downgrade ke versi 23

    2. Bisa jadi ada library yang gak cocok dengan build version yg digunakan.

    3. Bisa jadi proses buildnya tidak sempurna saat membuat project/file baru.

    4. Coba searching di stackoverflow mas, kali aja nemu yg pasti.

    Kalo saya dulu masalahnya pada point 1.

  • budi aman prasetyo

    Tutorial sangat bagus sekali, (Y)

    Kalau menggunakan Volley ada tutorial’y

    kalau ada di share mas (Y)

    terima kasih (Y)

    • Oke kang Budi. Nanti saya share tentang Volley.

      • budi aman prasetyo

        Oke, Terima kasih,(Y)

        saya tunggu (Y)

Berlangganan Artikel

Untuk mendaftarkan tutorial pemrograman terbaru dari putuguna[dot]com, silakan tuliskan email kalian dibawah ini