Anda di halaman 1dari 13

Membangun Koneksi PHP MySQL dengan Android

2/23/2013 02:47:00 PM Android, Networking, Tutorial 13 comments

Salam Developer, kali ini kita akan membahas tentang bagaimana membangun koneksi antara
PHP MySQl dengan aplikasi yang kita buat di platform Android. Koneksi yang akan kita bangun
ini menggunakan JSON. Untuk lebih jelasnya mengenai apa itu JSON bisa dibuka pada link
berikut.
Untuk persiapan, tool tool yang kita butuhkan adalah
1. Apache Web Server dan mySQL bisa pake XAMPP download disini > XAMPP
2. Eclipse dan Android SDK > versi yang saya gunakan disini ada 2.3.3 Ginggerbeard
3. Notepad++ atau Dreamweaver terserah mau pake yang mana untuk edit file PHP
4. Kopi/Susu + roti bakar

--> Wajib nih meski cuman singkat tutorialnya

Bagian 1 Buat Project Baru pada android


Setelah membuat project baru buat class baru bernama JSONParser.java(disini saya
menggunakan package dan main class saya sendiri, so jika anda copas perhatikan hal tersebut
OK).
JSONParser.java

package com.eepis.android;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;

import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONListfromURL(String
url,List<NameValuePair> params){
//initialize
InputStream is = null;
String result = "";
JSONObject jArray = null;
//http post
try{
DefaultHttpClient httpclient = new
DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new
UrlEncodedFormEntity(params));
HttpResponse response =
httpclient.execute(httppost);
HttpEntity entity = response.getEntity();

is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection
"+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new
InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result
"+e.toString());
}
//try parse the string to a JSON object
try{
jArray = new JSONObject(result);
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return jArray;
}
public JSONObject getJSONFromUrl(String url,
List<NameValuePair> params) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new
DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new
UrlEncodedFormEntity(params));

HttpResponse httpResponse =
httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new
InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Log.e("JSON", json);
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " +
e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " +
e.toString());
}
// return JSON String
return jObj;
}
public void SendJSONToURL(String

url,List<NameValuePair> params){
//http post
try{
DefaultHttpClient httpclient = new
DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new
UrlEncodedFormEntity(params));
httpclient.execute(httppost);
}catch(Exception e){
Log.e("log_tag", "Error in http connection
"+e.toString());
}
}
}

ConnectPHPMySQLActivity.java

package com.eepis.android;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ConnectPHPMySQLActivity extends Activity
implements OnClickListener{
//Deklarasi variabel yang digunakan
private JSONParser jsonParser;

private static String ServerURL = "http://10.0.2.2/tes/";


/alamat lokasi file untuk menangkap/mengirim JSON
private static String pesan_tag = "pesan";
TextView makanan,minuman;
Button
lihat;
EditText pesan;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Deklarasi Object di XML Layout
makanan=(TextView)findViewById(R.id.txt1);
minuman=(TextView)findViewById(R.id.txt2);
lihat=(Button)findViewById(R.id.btn1);
lihat.setOnClickListener(this);
pesan=(EditText)findViewById(R.id.edit1);
}
@Override
public void onClick(View v) {
//Memanggil class JSONParser
jsonParser = new JSONParser();
List<NameValuePair> params = new
ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag",
pesan_tag));
params.add(new BasicNameValuePair("id",
pesan.getText().toString()));
//Mengirim parameter yang akan di tangkap server
JSONObject json =
jsonParser.getJSONFromUrl(ServerURL, params);
try {
makanan.setText(json.getString("makanan"));
minuman.setText(json.getString("minuman"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

main.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Pilihan Menu"
android:layout_marginTop="10dp"
android:textSize="25dp" />
<EditText
android:id="@+id/edit1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Isi antara 1-5" />
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Lihat Data"/>
<TextView
android:id="@+id/txt1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Makanan"
android:layout_marginTop="10dp"
android:textSize="25dp" />
<TextView
android:id="@+id/txt2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Minuman"
android:layout_marginTop="10dp"
android:textSize="25dp"/>
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>


<manifest
xmlns:android="http://schemas.android.com/apk/res/android
"
package="com.eepis.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".ConnectPHPMySQLActivity" >
<intent-filter >
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission
android:name="android.permission.INTERNET" />
</manifest>

Bagian 2 Buat API yang menghandle request dari Android


Pada server side kita membuat API yang menangkap Http-Post yang kita kirim via android dan
mengembalikannya ke kita dalam bentuk JSON
SQL file

CREATE TABLE IF NOT EXISTS `pesanan` (


`id` int(2) NOT NULL AUTO_INCREMENT,
`makanan` varchar(15) NOT NULL,
`minuman` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

AUTO_INCREMENT=4 ;
INSERT INTO `pesanan` (`id`, `makanan`, `minuman`)
VALUES
(1, 'nasi goreng', 'milkshake'),
(2, 'nasi campur', 'es jeruk'),
(3, 'martabak', 'jus alpukat');

index.php

<?php
/**
File ini untuk menghandle API Request
hasilnya di encoda dalam bentuk JSON
/**
* check for POST request
*/
if (isset($_POST['tag']) && $_POST['tag'] != '') {
// Tag
$tag = $_POST['tag'];
// Database Handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// Response--> data yang akan dikembalikan
$response = array("tag" => $tag, "success" => 0);
if ($tag == 'pesan') {
$id = $_POST['id'];
$list=$db->getData($id);
$response = $list;
if($list!=false) {
$response["success"] = 1;
echo json_encode($response);
}
else{
$response["success"] = 0;
echo json_encode($response);
}
}

else {
echo "Invalid Request";
}
} else {
echo "Access Denied";
}
?>

config.php

<?php
/**
* Database config variables
*/
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "tes");
?>

DB_Connect.php

<?php
class DB_Connect {
// constructor
function __construct() {
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {

require_once 'include/config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER,
DB_PASSWORD);
// selecting database
mysql_select_db(DB_DATABASE);
// return database handler
return $con;
}
// Closing database connection
public function close() {
mysql_close();
}
}
?>

DB_Function.php

<?php
class DB_Functions {
private $db;
//put your code here
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->db = new DB_Connect();
$this->db->connect();
}
// destructor
function __destruct() {
}

public function getData($id) {


$result=mysql_query("SELECT * FROM pesanan
WHERE id='$id'");
$result=mysql_fetch_assoc($result);
if ($result != null) {
return $result;
}
else{
return false;
}
}
}
?>

Bagian 3 Hasil running aplikasi


File JSON yang dikirim ke android berbentuk
{"id":"2","makanan":"nasi campur","minuman":"es
jeruk","success":1}
Hasil tampilan pada aplikasi

Anda mungkin juga menyukai