Anda di halaman 1dari 7

Aplikasi Android JSON Mengambil Data dari Web Database PHP MySQL

Penulis ingin sharing pengetahuan untuk membuat Aplikasi Android untuk Mengakses Data
dalam Bentuk JSON dari Web PHP dengan Database MySQL. Sebelum ini koleksi kode program
milik penulis masih terpisah-pisah. Kali ini penulis berhasil kumpulkan menjadi sebuah contoh
program lengkap untuk mengambil data dari Server Web PHP MySQL menggunakan JSON
kemudian diikuti dengan Menambahkan Data dari Aplikasi Android ke Web PHP MySQL
tersebut dengan Metode POST. Mengupdat data dengan Metode POST juga. dan Menghapus
data kita coba pakai Method GET.
Karena aplikasi ini cukup panjang. Penulis membagi menjadi 4 bagian :
1. Mengambil Data JSON dari PHP MySQL
2. Menambahkan Data ke PHP MySQL menggunakan POST.
3. Mengedit / update Data ke PHP MySQL menggunakan Method POST.
4. Menghapus Data di PHP MySQL dengan Metode GET.
Sedangkan source code program yang penulis sharing dan bisa didownload di bawah sudah
lengkap keempat bagian tersebut. Silakan didownload.
Pada artikel ini kita bahas bagian pertama yaitu Mengambil Data JSON dari PHP MySQL :
Pada Web PHP MySQL buka localhost/phpmyadmin, buat database `db` dan buatlah tabel `kota`
di dalamnya dengan perintah SQL sebagai berikut :
CREATE TABLE IF NOT EXISTS `kota` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nama` varchar(200) DEFAULT NULL,
`latitude` varchar(100) DEFAULT NULL,
`longitude` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `kota` (`id`, `nama`, `latitude`, `longitude`) VALUES
(1, 'Yogyakarta', '111111', '222222'),
(2, 'Semarang', '333333', '444444'),
(3, 'Solo', '5555555', '6666666'),
(4, 'Magelang', '7777777', '8888888');

Kemudian pada folder htdocs dalam hal ini kita buat di /xampp/htdocs/json/daftarkota.php, kita
buat file PHP untuk mengambil data di database MySQL dan menampilkan dalam format JSON.
kode programnya sebagai berikut :
<?php

$link = mysql_connect('localhost', 'root', '') or die('Cannot connect to the


DB');
mysql_select_db('db', $link) or die('Cannot select the DB');
$query = "SELECT * FROM kota";
$result = mysql_query($query, $link) or die('Errorquery:

'.$query);

$rows = array();
while ($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
$data = "{kota:".json_encode($rows)."}";
echo $data;
?>

Kemudian sambungkan dahulu komputer tempat server PHP MySQL berada dengan suatu
jaringan sehingga IP Address nya aktif. Klik Start, Search ketik "cmd", pada perintah DOS
ketikkan perintah ipconfig sebagai berikut sehingga didapatkan IP Address komputer yang akan
digunakan dalam kode program Android untuk koneksi ke server web

Kemudian kita masuk ke Project Android. Buka Eclipse, buat project Android Baru.
Program utama kita letakkan di MainActivity
MainActivity.java
package com.amijaya.androidphpmysqljson;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import
import
import
import
import
import
import

org.apache.http.HttpResponse;
org.apache.http.client.HttpClient;
org.apache.http.client.methods.HttpGet;
org.apache.http.impl.client.DefaultHttpClient;
org.json.JSONArray;
org.json.JSONException;
org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;

import
import
import
import
import
import
import
import
import
import
import

android.content.DialogInterface;
android.content.Intent;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.ListView;
android.widget.Toast;
android.widget.AdapterView.OnItemClickListener;

// http://cariprogram.blogspot.com
// nuramijaya@gmail.com
public class MainActivity extends Activity {
private JSONObject jObject;
private String jsonResult ="";
private String url = "http://192.168.43.150/json/daftarkota.php";
private String url2 = "http://192.168.43.150/json/delkota.php";
String[] daftarid;
String[] daftarnama;
String[] daftarlatitude;
String[] daftarlongitude;
Menu menu;
public static MainActivity ma;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ma=this;
RefreshList();

public void RefreshList() {


try {
jsonResult = getRequest(url);
jObject = new JSONObject(jsonResult);
JSONArray menuitemArray = jObject.getJSONArray("kota");
daftarid = new String[menuitemArray.length()];
daftarnama = new String[menuitemArray.length()];
daftarlatitude = new String[menuitemArray.length()];
daftarlongitude = new String[menuitemArray.length()];
for (int i = 0; i < menuitemArray.length(); i++)
{
daftarid[i] = menuitemArray.getJSONObject(i).getString("id").toString();
daftarnama[i] =
menuitemArray.getJSONObject(i).getString("nama").toString();
daftarlatitude[i] =
menuitemArray.getJSONObject(i).getString("latitude").toString();
daftarlongitude[i] =

menuitemArray.getJSONObject(i).getString("longitude").toString();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ListView ListView01 = (ListView)findViewById(R.id.ListView01);
ListView01.setAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1, daftarnama));
ListView01.setSelected(true);
ListView01.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
final String selectionid = daftarid[arg2];
final String selectionnama = daftarnama[arg2];
final String selectionlatitude = daftarlatitude[arg2];
final String selectionlongitude = daftarlongitude[arg2];
final CharSequence[] dialogitem = {"Edit", "Delete"};
AlertDialog.Builder builder = new
AlertDialog.Builder(MainActivity.this);
builder.setTitle("Pilih ?");
builder.setItems(dialogitem, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0 :
/*Intent i = new Intent(getApplicationContext(), EditActivity.class);
i.putExtra("id", selectionid);
i.putExtra("nama", selectionnama);
i.putExtra("latitude", selectionlatitude);
i.putExtra("longitude", selectionlongitude);
startActivity(i);*/
break;
case 1 :
/*getRequest(url2 + "?id=" + selectionid);
RefreshList();
*/
break;
}
}
});
}});

builder.create().show();
((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated();

}
/**
* Method untuk Mengirimkan data ke server
*/
public String getRequest(String Url){
String sret="";

HttpClient client = new DefaultHttpClient();


HttpGet request = new HttpGet(Url);
try{
HttpResponse response = client.execute(request);
sret =request(response);
}catch(Exception ex){
Toast.makeText(this,"Gagal "+sret, Toast.LENGTH_SHORT).show();
}
return sret;
}
/**
* Method untuk Menerima data dari server
*/
public static String request(HttpResponse response){
String result = "";
try{
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null){
str.append(line + "\n");
}
in.close();
result = str.toString();
}catch(Exception ex){
result = "Error";
}
return result;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
menu.add(0, 1, 0, "Tambah").setIcon(android.R.drawable.btn_plus);
menu.add(0, 2, 0, "Refresh").setIcon(android.R.drawable.ic_menu_rotate);
menu.add(0, 3, 0,
"Exit").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
//Intent i = new Intent(MainActivity.this, AddActivity.class);
//startActivity(i);
return true;
case 2:
RefreshList();
return true;
case 3:
finish();
return true;
}

return false;

}
}

Kemudian tampilannya kita pakai saja tampilan default kemudian ditambah satu buah ListView
dengan nama ListView01 :
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Android JSON PHP MySQL"
/>
<ListView android:id="@+id/ListView01" android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>

Android Manifest perlu ditambahkan permisson untuk melakukan koneksi ke Internet :


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.androidphpmysqljson"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--activity android:name=".AddActivity"
android:label="@string/app_name">
</activity>
<activity android:name=".EditActivity"
android:label="@string/app_name">
</activity-->
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

Hasilnya

Project selengkapnya silakan didownload disini :


https://docs.google.com/open?id=0B4i1FYc_4RXzN2NOb29kYUcycW8
Semoga bermanfaat, Selamat Coding.

Anda mungkin juga menyukai