0% menganggap dokumen ini bermanfaat (0 suara)
217 tayangan

Mengambil Data MySQL Ke Android Menggunakan PHP

Tutorial ini menjelaskan cara mengambil data dari database MySQL ke aplikasi Android menggunakan PHP sebagai perantara. Langkah-langkahnya meliputi membuat database dan tabel di MySQL, membuat file PHP untuk mengambil dan mengemas data ke format JSON, serta membuat kelas dan method di Android untuk melakukan request ke URL PHP dan memproses data hasil response menjadi array yang dapat ditampilkan di listview.

Diunggah oleh

Nia Aprianti
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
217 tayangan

Mengambil Data MySQL Ke Android Menggunakan PHP

Tutorial ini menjelaskan cara mengambil data dari database MySQL ke aplikasi Android menggunakan PHP sebagai perantara. Langkah-langkahnya meliputi membuat database dan tabel di MySQL, membuat file PHP untuk mengambil dan mengemas data ke format JSON, serta membuat kelas dan method di Android untuk melakukan request ke URL PHP dan memproses data hasil response menjadi array yang dapat ditampilkan di listview.

Diunggah oleh

Nia Aprianti
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

Mengambil Data MySQL ke Android

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 :

BagiankdselectdijadikanPrimary KeydanAuto Increment.


Langkah 2
Membuat file *.php yang akan menjadi perantara dalam pengambilan data. Kita memanfaatkan
XAMPP sebagai server yang akan kita gunakan untuk menyimpan file PHP. File php
tersebutberada dalam folder htdocs di XAMPP. Buat struktur direktorinya menjadi seperti ini :

Berikut ini adalah isi dari tiap foldernya :

android : getdata.php

config : koneksi.php

gambar : data1.png dan data2.png

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

$result = mysql_query("SELECT * FROM selecttb");


//Mengubah data ke array
$rows = array();
while ($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
//Mengubah format data ke JSON
$data = "{select:" . json_encode($rows) . "}";
echo $data;
?>

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;

private static HttpClient mHttpClient;


private static HttpClient getHttpClient(){
if (mHttpClient==null) {
mHttpClient=new DefaultHttpClient();
final HttpParams param=mHttpClient.getParams();
HttpConnectionParams.setConnectionTimeout(param,
HTTP_TIMOUT);
HttpConnectionParams.setSoTimeout(param, HTTP_TIMOUT);
ConnManagerParams.setTimeout(param, HTTP_TIMOUT);
}
return mHttpClient;

}
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()));

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();
}
}
}
}
}

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;

public class <strong>MainActivity </strong>extends ListActivity {


//Array
private
private
private
private

untuk menampung data yang di ambil dari MySQL


String[] kdSelect;
String[] Nama;
String[] subNama;
String[] Gambar;

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) {
}

Toast.makeText(getBaseContext(), "Terpilih " + Nama[position],


Toast.LENGTH_LONG).show();

//Class GetData yang menuruni kelas AsyncTask untuk melakukan requset


data dari internet
private class GetData extends AsyncTask<String, Void, String> {
// Instansiasi class dialog
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
String Content;
String Error = null;
// membuat object class JSONObject yang digunakan untuk
menangkap data

// dengan format json


JSONObject jObject;
// instansiasi class ArrayList
ArrayList<NameValuePair> data = new
ArrayList<NameValuePair>();
@Override
protected String doInBackground(String... params) {
try {
Content = CustomHttpClient.executeHttpPost(
"http://192.168.56.1/IcaksamaCru
d/android/getdata.php",
data);
} catch (ClientProtocolException e) {
Error = e.getMessage();
cancel(true);
} catch (IOException e) {
Error = e.getMessage();
cancel(true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Content;
}
@Override
protected void onPreExecute() {

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()];

// mendeskripsikan jumlah array yang


kdSelect = new
Nama = new
subNama = new
Gambar = new
// mengisi variable array dengan data

yang di ambil dari


Array

// internet yang telah dibuah menjadi


for (int i = 0; i <

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(),

ListAdapter adapter = new


Nama, subNama, Gambar);
setListAdapter(adapter);
} catch (JSONException ex) {

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.

Demikian tutorial kali ini semoga bermanfaat!


Download Projectnyadisini

Anda mungkin juga menyukai