Skip to main content

koneksi mySql dengan aplikasi android

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 Open-mouthed smile --> Wajib nih meski cuman singkat tutorialnya Smile

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
image
Demikianlah tutorial kali ini semoga bisa bermanfaat buat kawan kawan sekalian. Untuk source projectnya bisa di download di alamat berikut
DOWNLOAD
Tutorial selanjutnya akan membahas tentang membuat login dengan MySQL dan PHP via Android. So Keep Update ya Open-mouthed smile

Comments

Popular posts from this blog

Membuat topologi jaringan menggunakan routing static dengan cisco packet tracer

  Apa yang dimaksud routing static ? Static Routing atau Routing statis adalah sebuah router yang memiliki tabel routing statik yang di setting secara manual oleh para administrator jaringan. Routing static merupakan pengaturan paling sederhana dalam suatu jaringan komputer. Nah, disini kita akan belajar contoh penggunaan dari routing static tersebut. Contohnya seperti yang akan kita lakukan dibawah, selamat belajarr :) Buka aplikasi cisco packet tracer kemudian kita letakkan 2 router, 2 switch dan terdapat 2 PC pada masing-masing router. Pada gambar dibawah, hubungkan PC dengan Switch dan Router dengan Switch. Untuk menghubungkan Router dengan Router kita menggunakan kabel Cross. Pada gambar dibawah terdapat beberapa kab e l untuk menghubungkan sebuah jaringan yang bisa dilihat di cisco packet tracer. Namun untuk menghubungkan perangkat yang berbeda device, contohnya seperti PC dan Switch digunakan kabel Straight, namun jika perangkat sama seperti Router dengan router maka digunakan k

Tipe-Tipe Cewek Berdasarkan Lama Balas Di Chat WA

Cewek atau wanita adalah makhluk Tuhan paling rumit untuk dimengerti dan paling sulit untuk ditebak apa yang ada pada fikirannya . Makhluk yang memiliki slogan “ Cewek Selalu Benar dan Cowok Selalu Salah “  dari sebagian cewek itu adalah salah tapi sebagian besar cewek percaya dengan slogan itu yang membuat nya lebih percaya diri untuk menghukum lawan jenis atau cowok yang sedang memiliki hubungan asmara atau pun tidak tapi setidaknya slogan itu sebagai tameng atau penghalang terbaik untuk wanita agar bebas dari jerat seorang lelaki. Berikutnya slogan “ Cewek itu Rumit “ .. iya kan bener itu . Menurut penulis itu memang benar sampai ada meme yang bertuliskan bahwa trik atau tips untuk mengertiin wanita adalah seperti kamus inggiis-indonesia yang 3 miliar kata .. tebal banget dan panjang banget ..iya kan cewek seperti iitu .. hehehe yang cewek saya minta map ya  :D :D Oke kita bahas tipe cewek berdasarkan lama bales chat nya kepada kita .. ayooo capcussss.. !!! 1.