Mengambil Data MySQL Ke Android Menggunakan PHP
Mengambil Data MySQL Ke Android Menggunakan PHP
Menggunakan PHP
Posted By: icaksamaPosted date: 18 Maret, 2015in: Android37 Comments
Akhirnya sampai juga pada tutorial ini setelah beberapa hari saya mesti berkerja keras mencuri
waktu luang untuk mengisi artikelwebsite icaksama.COM. Semoga ilmu yang saya bagi dapat
bermanfaat untukkaliansemua. Dan pada kesempatan ini saya akan menunjukan cara
membuatwebservice android menggunakan teknik REST.Tutoial ini hanya berkerja untuk
android versi 4 ke atas karena dari pihak android mewajibkan pengambilan data harus
menggunakan kelas turunan dari AsyncTask. Sedangkan dari beberapa tutorial yang beredar di
internet masih menggunakan program untuk versi android 4 ke bawah yang tanpa menggunakan
penurunan kelas AsyncTask sehingga saat aplikasi di pakai pada android versi 4 ke atas tidak
akan berkerja. Alur sistem dari aplikasi yang akan kita buat nanti adalah sebagai berikut :
Dari gambar diatas, kenapa Android harus melalui PHP untuk mengambil data dalam database
MySQL ? Karena Android tidak bisa mengirimkan permintaan data secara langsung ke database
sehingga harus melalui PHP. PHP mengirimkan Query ke database yang kemudian data tersebut
diproses dan ditampilkan dalam format JSON. Format JSON inilah yang akan diterima oleh
android sebagai data yang di ambil dari database. Mari simak lebih lanjut langkah-langkahcara
membuatnya.
Sebelum memulai langkah-langkah dalam tutorial ini, kamuwajib membaca artikelCara
Membuat ListView Android Modifikasikarena tutorialtersebut berhubungan dengan
tutorialini.
Langkah 1
Buat database di MySQL dengan nama cruddbdan buat tabel di dalamnya dengan
namaselecttb kemudian buat nama field dan tipe datanya sebagai berikut :
android : getdata.php
config : koneksi.php
Program getdata.php
Program dibawah ini adalah program yang akan mengambil data dari database MySQL
kemudian memprosesnya dalam format JSON lalu di tampilkan dalam browser. Jika kamu
panggil file ini dalam URL maka akan terlihat data dalam format JSON. Sebenernya android
tidak mengambil data on the fly namun mengambil data yang di tampilkan dalam browser.
<?php
//Memanggil file koneksi.php
include_once '../config/koneksi.php';
//Mengambil data dari tabel selecttb
Program koneksi.php
Program dibawah ini adalah untuk membuka koneksi ke database.
<?php
//Membuka koneksi
mysql_connect("localhost", "root", "");
//Memilih Database
mysql_select_db("cruddb");
?>
Langkah 3
Buat new Project di eclipse. Membuat Android di Eclipse
Silakan baca tutorial sebelumnya pada kategori android agar lebih paham, Selebihnya
kamuharus paham bagaimana menambah program dibawah ini.
Langkah 4
Buat classCustomHttpClient.java lalu isi programnya dibawah ini :
package icaksama.com.icaksamacrud;
import
import
import
import
java.io.BufferedReader;
java.io.InputStreamReader;
java.net.URI;
java.util.ArrayList;
import
import
import
import
import
import
import
import
import
import
org.apache.http.HttpResponse;
org.apache.http.NameValuePair;
org.apache.http.client.HttpClient;
org.apache.http.client.entity.UrlEncodedFormEntity;
org.apache.http.client.methods.HttpGet;
org.apache.http.client.methods.HttpPost;
org.apache.http.conn.params.ConnManagerParams;
org.apache.http.impl.client.DefaultHttpClient;
org.apache.http.params.HttpConnectionParams;
org.apache.http.params.HttpParams;
//class ini digunakan untuk proses client dalam akese ke media internet
public class CustomHttpClient {
public static final int HTTP_TIMOUT=30*1000;
}
public static String executeHttpPost(String
url,ArrayList<NameValuePair> postParameters) throws Exception{
BufferedReader in=null;
try {
HttpClient client=getHttpClient();
HttpPost request=new HttpPost(url);
UrlEncodedFormEntity formEntity=new
UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
HttpResponse response=client.execute(request);
in=new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
StringBuffer sb=new StringBuffer("");
String line="";
String NL=System.getProperty("line.separator");
while ((line=in.readLine())!=null) {
sb.append(line+NL);
}
in.close();
String result=sb.toString();
return result;
}finally{
if (in!=null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static String executeHttpGet(String url) throws Exception{
BufferedReader in=null;
try{
HttpClient client=getHttpClient();
HttpGet request=new HttpGet();
request.setURI(new URI(url));
HttpResponse response=client.execute(request);
in=new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
Langkah 5
Tambahkan program dibawah ini pada MainActivity.java.
package icaksama.com.icaksamacrud;
import
import
import
import
java.io.IOException;
java.util.ArrayList;
java.util.logging.Level;
java.util.logging.Logger;
import
import
import
import
import
org.apache.http.NameValuePair;
org.apache.http.client.ClientProtocolException;
org.json.JSONArray;
org.json.JSONException;
org.json.JSONObject;
import
import
import
import
import
import
import
android.app.ListActivity;
android.app.ProgressDialog;
android.os.AsyncTask;
android.os.Bundle;
android.view.View;
android.widget.ListView;
android.widget.Toast;
MySQL
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Mengeksekusi kelas GetData untuk mengirim permintaan ke
new GetData()
.execute("http://192.168.56.1/IcaksamaCrud/andr
oid/getdata.php");
}
//Method untuk mengeluarkan event saat list di click
@Override
protected void onListItemClick(ListView l, View v, int position, long
id) {
}
super.onPreExecute();
// menampilkan dialog pada saat proses pengambilan data
dari
// internet
this.dialog.setMessage("Loading Data..");
this.dialog.show();
}
@Override
protected void onPostExecute(String result) {
// menutup dialog saat pengambilan data selesai
this.dialog.dismiss();
if (Error != null) {
Toast.makeText(getBaseContext(), "Error
Connection Internet",
Toast.LENGTH_LONG).show();
} else {
try {
// instansiasi kelas JSONObject
jObject = new JSONObject(Content);
// mengubah json dalam bentuk array
JSONArray menuitemArray =
jObject.getJSONArray("select");
bisa di tampung
String[menuitemArray.length()];
String[menuitemArray.length()];
String[menuitemArray.length()];
String[menuitemArray.length()];
menuitemArray.length(); i++) {
kdSelect[i] =
menuitemArray.getJSONObject(i)
lect").toString();
.getString("kdse
Nama[i] =
menuitemArray.getJSONObject(i)
").toString();
.getString("nama
subNama[i] =
menuitemArray.getJSONObject(i)
ama").toString();
"http://192.168.56.1/IcaksamaCrud/gambar/"
menuitemArray.getJSONObject(i)
.getString("subn
Gambar[i] =
+
getString("gambar").toString();
}
// instansiasi class ListAdapter (Buka
class ListAdapter)
ListAdapter(getBaseContext(),
Logger.getLogger(MainActivity.class.getName()).log(
Level.SEVERE, null, ex);
}
}
}
}
}
Jika dilihat pada programdi atas, terdapat IP 192.168.56.1. IP tersebut adalah kata lain dari
localhost.IP tersebut terbentuk karena emulator yang sayagunakan menggunakan virtual
box jadi harus ada ip penghubung ke komputer asli untuk mengakses localhost atau 127.0.0.1.
Sedangkan IP untuk emulator bawaan dari android adalah 10.0.2.2. Jadi sesuaikan penggunaan
IP tersebut sesuai emulatornya. Intinya IP tersebut terhubung ke komputer asli yang memilik
server local XAMPP.IP tersebut dapat diganti menggunakan nama domain jika file php sudah
di upload ke internet. Intinya adalah URL berikut menuju ke file getdata.php.
Ada beberapa kasus saat emulator virtual box mencoba mengkses ke komputer asli
menggunakan IP dan ternyata aksesnya ditolak. Kasus ini disebabkan oleh firewall yang masih
aktif, jadi jika akses IP terblok atau gagal silahkan matikan firewallnya. Bagaimana cara
mengecek IP yang terblok ? Silahkan kamu masuk ke browser emulator lalu masukan IP tersebut.
Jika IP tersebut tidak merespon maka cek kembali IPnya mungkin ada salah penulisan jika tidak
berarti firewall yang membuat IP tidak merespon.
Ada beberapa kelas tambahan lagi sepertiCustomHttpClient.java untuk meminta permintaan
ke internet dengan atau tanpa parameter, DownloadImageTask.java untuk menampilkan gambar
dari internet pada Android, ListAdapter.java untuk memodifikasi ListView.
Kelas diatas bisaberjalan biarpun tanpa menggunakan layout karena telah menuruni kelas
ListActivity.