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
ConnectPHPMySQLActivity.java
main.xml
AndroidManifest.xml
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
index.php
config.php
DB_Connect.php
DB_Function.php
Bagian 3 Hasil running aplikasi
File JSON yang dikirim ke android berbentuk
Hasil tampilan pada aplikasi
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
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()); } } } |
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(); } } } |
<?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> |
<?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'); |
<?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"; } ?> |
<?php /** * Database config variables */ define("DB_HOST", "localhost"); define("DB_USER", "root"); define("DB_PASSWORD", ""); define("DB_DATABASE", "tes"); ?> |
<?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(); } } ?> |
<?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} |
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
Comments
Post a Comment
terima kasih telah berpartisipasi pada blog kami