Membuat aplikasi android dengan php dan mysql

Posting kali ini, kita mencoba membuat aplikasi client server berbasis Android dan menghubungkan dengan database MySQL. Client-server ? Ya…. Kita akan membuat aplikasi Android yang datanya akan disimpan pada sebuah server. Bisa local (localhost) atau di internet.

Mengapa kita harus menympan data di database,  bukankah di Android memiliki database untuk menyimpan data ?. Sebenarnya Android memiliki fasilitas untuk menyimpan data yaitu:

  1. Shared preferences. Terdiri dari key dan value data. Model ini biasanya untuk menyimpan settingan (pengaturan) sebuah aplikasi.
  2. File. Fasilitas ini juga dapat menyimpan data sama halnya dengan Shared Preferences, hanya saja data disimpan ke dalam bentuk file. Misalnya: txt, xml atau bentuk file lainnya
  3. SQLite Database. Fasilitas ini cukup idel untuk menyimpan data yang lumayan banyak. Berbeda halnya dengan no 1 dan 2 di atas yang biasanya untuk menyimpan data yang sedikit seperti pengaturan. Dengan SQLite, kita dapat melakukan query dan table-table  seperti halnya database pada umumnya.

Untuk mempelajari ketiga fasilitas di atas, silakan klik  http://developer.android.com/training/basics/data-storage/index.html.

Ketiga fasilitas di atas menyimpan data pada ponsel pengguna (client). Nah, bagaimana jika ingin data itu selalu update dan dapat mengaksesnya siapa saja dan dimana saja (anyone, anytime and anywhere)?. Itulah alasanya mengapa kita memerlukan sebuah server dalam hal ini MySQL.

Aplikasi yang akan kita bangun tergambar seperti berikut:

Membuat aplikasi android dengan php dan mysql

Android, PHP, MySQL

Berdasarkan gambar di atas, ponsel Android akan melakukan request (get/post) ke server melalui internet. Cara ini juga sama jika ingin aplikasi berada pada localhost. Selanjutnya web server (dalam hal ini PHP), akan memproses request dari Android dan akan melakukan query ke database (MySQL). Jadi, akan ada tiga hal yang harus kita lakukan:

OK….. langsung saja

1. Membuat database MySQL

Database: latihan_android

Table: mahasiswa (id, nim, nama, telp, alamat)

create database latihan_android;
use latihan_android;

CREATE TABLE IF NOT EXISTS `mahasiswa` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nim` varchar(11) NOT NULL,
 `nama` varchar(100) NOT NULL,
 `telp` varchar(50) NOT NULL,
 `alamat` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;

--
-- Dumping data for table `mahasiswa`
--

INSERT INTO `mahasiswa` ( `nim`, `nama`, `telp`, `alamat`) VALUES
( '2222', 'aaaa', '0801', 'Alamat 1'),
( '1111', 'bbbb', '0802', 'Alamat 2'),
( '2222', 'cccc', '0803', 'Alamat 3'),
( '3333', 'dddd', '0804', 'Alamat 4'),
( '1111', 'eeee', '0805', 'Alamat 5'),
( '2222', 'ffff', '0806', 'Alamat 6'),
( '3333', 'gggg', '0807', 'Alamat 7'),
( '4444', 'hhhh', '0808', 'Alamat 8'),
( '5555', 'iiii', '0809', 'Alamat 9');

2. Membuat script PHP

Database sudah selesai, selanjutnya adalah membuat script server side. Koq kita butuh script server side, Kita kan belajar Android (Java) ? … Sebenarnya Android tidak dapat berkomunikasi langsung dengan MySQL untuk memanipulasi database. Untuk itu, kita membutuhkan script server side misalnya ASP, JSP atau PHP untuk bisa menjadi “jembatan” antara Android dengan MySQL. Jadi, Android hanya memberika perintah (request) ke PHP dan PHP lah yang akan melaksanakan query ke MySQL.

Pada posting ini, kita membuat 5 (lima) file PHP.

1. index.php : sebagai file index dan hanya berisi HTML

2. connection.php: sebagai file koneksi ke database

3. select_all.php: untuk melakukan query select all, mengabil seluruh data dari table Mahasiswa

4. submit_mahasiswa.php : untuk memproses simpan dan update

5. delete_mahasiswa.php: untuk menghapus (delete) data mahasiswa

Semua file di atas diletakkan dalam direktori “android”. c:/xampp/htdocs/android. (sesuaikan dengan direktori server Anda).

index.php

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

connection.php

<?php

/*silakan sesuaikan dengan konfigurasi server Anda*/
$conn = mysql_connect('localhost', 'root', 'xxxxx') or die(mysql_error());
$db = mysql_select_db('latihan_android') or die(mysql_error());
?>

select_all.php

<?php

/*reply data dalam JSON */

include('connection.php');
$query = 'select * from mahasiswa';
$result = mysql_query($query) or die(mysql_error());

$data = array();
while($row = mysql_fetch_object($result)){
   $data['mahasiswa'][]= $row;
}
echo json_encode($data);
?>

submit_mahasiswa.php

<?php

/**jika id = 0,maka akan dilakukan insert, jika tidak update berdasarkan id */
include('connection.php');

$id = (int)$_POST['id'];
$nim = $_POST['nim'];
$nama = $_POST['nama'];
$telp = $_POST['telp'];
$alamat = $_POST['alamat'];

$query = 'insert into mahasiswa (nim, nama, telp, alamat) values ("'.$nim.'", "'.$nama.'", "'.$telp.'", "'.$alamat.'")';
if($id > 0){
   $query = 'update mahasiswa set nama = "'.$nama.'", nim = "'.$nim.'", telp = "'.$telp.'", alamat = "'.$alamat.'" where id = '.$id;
}
mysql_query($query) or die(mysql_error());

?>

delete_mahasiswa.php

<?php

/**menghapus mahasiswa berdasarkan id*/
include('connection.php');
$id = (int)$_GET['id'];
$query = 'delete from mahasiswa where id = '.$id;
$result = mysql_query($query) or die(mysql_error());
if(mysql_affected_rows() > 0){
    echo 'deleted id = '.$id;
}else{
    echo 'NOT founnd id = '.$id;
}
?>

Script PHP sudah selesai dan selanjutnya membuat aplikasi inti yaitu Android. Ada baiknya, sebelum membuat aplikasi android, kita test dulu apakah script PHP sudah bisa diakses dari emulator.

Caranya mudah, cukup buka browser dari emulator (AVD), dan bukalah url http://10.0.2.2/android/index.php

10.0.2.2 adalah host default untuk mengakses server local.

Membuat aplikasi android dengan php dan mysql

Index

Jika direktori dan file nya benar, server aktif dan MySQL aktif, maka tampilannya seperti gambar di atas, berari emulator sudah dapat mengakses localhost dan kita siap untuk membuat aplikasi Android.

3. Membuat aplikasi Android

Buatlah project Android seperti gambar berikut:

Membuat aplikasi android dengan php dan mysql

create

Pada project ini, kita membuat aplikasi dengan Min Requirement SDK adalah API 11 (Honeycomb) . Karena di aplikasi ini memiliki Action Bar (Action Bar hanya tersedia pada API 11 ke atas).

Secara default, Eclipse akan membuat 1 Activity dan 1 layout (MainActivity.java dan activity_main.xml).

a. Membuat object Mahasiswa

Yang pertama kita lakukan adalah membuat object Mahasiswa. Yha…. Mahasiswa, karena table yang dibuat sebelumnya adalah mahasiswa. Class Mahasiswa sangat membantu kita memanipulasi object. Salah satunya adalah konsep Object Relational Mapping (ORM) yang menggunakan object yang sama untuk memetakan table pada database.

Mahasiswa.java

package org.pizaini.mahasiswaonline.entities;

public class Mahasiswa {
 private Integer id;
 private String nim;
 private String nama;
 private String telp;
 private String alamat;

 public Mahasiswa() {
 super();
 }

public Mahasiswa(Integer id, String nim, String nama, String telp,
 String alamat) {
 super();
 this.id = id;
 this.nim = nim;
 this.nama = nama;
 this.telp = telp;
 this.alamat = alamat;
 }

public Integer getId() {
 return id;
 }

public void setId(Integer id) {
 this.id = id;
 }

public String getNim() {
 return nim;
 }

public void setNim(String nim) {
 this.nim = nim;
 }

public String getNama() {
 return nama;
 }

public void setNama(String nama) {
 this.nama = nama;
 }

public String getTelp() {
 return telp;
 }

public void setTelp(String telp) {
 this.telp = telp;
 }

public String getAlamat() {
 return alamat;
 }

public void setAlamat(String alamat) {
 this.alamat = alamat;
 }

}

b. Membuat class ServerRequest

Class ini akan kita gunakan berkomunikasi / melakukan request ke server. Pada class ini, kita membuat dua buah request, yaitu GET dan POST.

ServerRequest.java

package org.pizaini.mahasiswaonline.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.pizaini.mahasiswaonline.entities.Mahasiswa;
import android.util.Log;

public class ServerRequest {
 private final static String TAG = "ServerRequest";
 private final String serverUri = "http://10.0.2.2/android";
 public static final String urlSelectAll = "select_all.php";
 public static final String urlDelete = "delete_mahasiswa.php";
 public static final String urlSubmit = "submit_mahasiswa.php";

 public ServerRequest() {
super();
 }

/** Mengirimkan GET request */
public String sendGetRequest(String reqUrl){
 HttpClient httpClient;
 HttpGet httpGet = new HttpGet(serverUri+"/"+reqUrl);
 InputStream is = null;
 StringBuilder stringBuilder = new StringBuilder();
 try {
     HttpParams params = new BasicHttpParams();
     HttpConnectionParams.setConnectionTimeout(params, 3000);
     HttpConnectionParams.setSoTimeout(params, 3000);
     httpClient = new DefaultHttpClient(params);
     Log.d(TAG, "executing...");
     HttpResponse httpResponse = httpClient.execute(httpGet);
     StatusLine status = httpResponse.getStatusLine();
     if(status.getStatusCode() == HttpStatus.SC_OK && httpResponse != null){
        /** mengambil response string dari server */
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String line = null;
        while((line = reader.readLine()) != null){
           stringBuilder.append(line+"\n");
        }
       is.close();
    }
 } catch (Exception e) {
    Log.d(TAG, e.getMessage());
 }

 return stringBuilder.toString();
 }

/** Mengirimkan POST request */
 public int sendPostRequest(Mahasiswa mahasiswa, String url){
     int replyCode = 99;
     HttpClient httpClient;
     HttpPost post = new HttpPost(this.serverUri+"/"+url);
     /** menambahkan parameter ke dalam request */
     List<NameValuePair> value = new ArrayList<NameValuePair>();
     value.add(new BasicNameValuePair("id", mahasiswa.getId().toString()));
     value.add(new BasicNameValuePair("nim", mahasiswa.getNim()));
     value.add(new BasicNameValuePair("nama", mahasiswa.getNama()));
     value.add(new BasicNameValuePair("telp", mahasiswa.getTelp()));
     value.add(new BasicNameValuePair("alamat", mahasiswa.getAlamat()));

     try {
        HttpParams params = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(params, 3000);
        HttpConnectionParams.setSoTimeout(params, 3000);
        httpClient = new DefaultHttpClient(params);
        post.setEntity(new UrlEncodedFormEntity(value));
        Log.d(TAG, "executing post...");
        HttpResponse httpResponse = httpClient.execute(post);
        StatusLine status = httpResponse.getStatusLine();
        if(status.getStatusCode() == HttpStatus.SC_OK){
           Log.d(TAG, "submitted sucessfully...");
           replyCode = status.getStatusCode();
        }
     } catch (IOException e) {
        Log.d(TAG, e.getMessage());
     }
 return replyCode;
 }
}

MainActivity akan kita gunakan untuk menampilkan ListView nama mahasiswa dan NIM. Seperti berikut:

Membuat aplikasi android dengan php dan mysql

ListView

c. Ubah layout activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity" >

<ListView
 android:id="@+id/listview_main"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:dividerHeight="1dp"
 android:layout_margin="5dp" >
 </ListView>

</RelativeLayout>

d. Tambahkan layout baru list_row.xml

Layout ini adalah custom ListView agar dapat menampilhan Nama dan NIM mahasiswa dalam ListView.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_margin="5dp"
 >

<TextView
 android:id="@+id/text_nama"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_alignParentTop="true"
 android:text="@string/app_name"
 android:typeface="sans"
 android:textColor="@android:color/background_dark"
 android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
 android:id="@+id/text_nim"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:text="@string/app_name"
 android:textColor="@android:color/background_dark"
 android:layout_below="@+id/text_nama"/>

</RelativeLayout>

e. Membuat List Adapter

Untuk menampilkan custom ListView, kita membutuhkan sebuah adapter yang inherit kepada BaseAdapter. ListAdapterMahasiswa juga meng-implements Filterable yang berguna saat melakukan pencarian. LisBerikut adalah potongan source code nya:

ListAdapterMahasiswa.java

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

0

f. Edit MainActivity.java

MainActivity adalah class utama memiliki fitur:

– Menampilkan custom ListView

– Memiliki Option Menu yang ditampilkan pada Action Bar (Search dan New)

– Search View untuk melakukan filter (pencarian)

– ListView yang dapat diklik (clickable ListView)

– ListView yang dapat di long-click. Long clik akan menampilkan Contextual Action Bar (CAB) untuk Edit dan Delete.

Pada saat MainActivity dijalankan, Activity akan melakukan request ke server melalui AsyncTask.

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

1

Activity akan memanggil class ServerRequest untuk mengirimkan GET requets.

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

2

Response dari request ini adalah JSON (JavaScript Object Notation). Url yang direquest http://10.0.2.2/android/select_all.php. Atau dapat dilihat melalui browser localhost http://localhost/android/select_all.php.

JSON Response:

{"mahasiswa":[
{"id":"29","nim":"2222","nama":"aaaa","telp":"0801","alamat":"Alamat 1"},
{"id":"30","nim":"1111","nama":"bbbb","telp":"0802","alamat":"Alamat 2"},
{"id":"31","nim":"2222","nama":"cccc","telp":"0803","alamat":"Alamat 3"},
{"id":"32","nim":"3333","nama":"dddd","telp":"0804","alamat":"Alamat 4"},
{"id":"33","nim":"1111","nama":"eeee","telp":"0805","alamat":"Alamat 5"},
{"id":"34","nim":"2222","nama":"ffff","telp":"0806","alamat":"Alamat 6"},
{"id":"35","nim":"3333","nama":"gggg","telp":"0807","alamat":"Alamat 7"},
{"id":"36","nim":"4444","nama":"hhhh","telp":"0808","alamat":"Alamat 8"},
{"id":"37","nim":"5555","nama":"iiii","telp":"0809","alamat":"Alamat 9"}
]}

Response JSON ini akan diproses sesuai dengan object nya. Berdasarkan response JSON di atas, terlihat bahwa object JSON terdiri dari “mahasiswa”. Dan “mahasiswa” memiliki JSON Array.

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

3

Berikut adalah Source code lengkap MainActivity.java

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

4

g. Membuat Form Mahasiswa

Buatlah sebuah activity (FormMahasiswa.java) dengan layout activity_form_mahasiswa.xml. Layout ini terdiri dari TextView dan EditText untuk input data Mahasiswa (nama, nim, telp dan alamat). Form Mahasiswa kita gunakan untuk insert dan delete.

activity_form_mahasiswa.xml

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

5

FormMahasiswa.java
Berikut adalah activity untuk menampilkan form Mahasiswa.

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

6

h. Membuat Detail Mahasiswa

Detail Mahasiswa berfungsi untuk menampilkan data lengkap. Karena pada ListView yang ditampilkan hanya NIM dan Nama.

activity_detail_mahasiswa.xml

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

7

Activity DetailMahasiswa berguna untuk menampilkan data mahasiswa dengan layout activity_detail_mahasiswa.xml.

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

8

i. Menambahkan Permission

Tambahkan permission ada AndroidManifest.xml

<html>
<head>
 <title>Index Android</title>
</head>
<body>
 <h3>Index Android</h3>
</body>
</html>

9

Berikut adalah screenshot aplikasinya:

Membuat aplikasi android dengan php dan mysql

Main Activity

Membuat aplikasi android dengan php dan mysql

Show Contextual Action Bar (CAD) on long-press List View

Membuat aplikasi android dengan php dan mysql

Form Mahasiswa

Membuat aplikasi android dengan php dan mysql

Detail Mahasiswa

Membuat aplikasi android dengan php dan mysql

Delete Confirmation

Silakan DOWNLOAD SOURCE LENGKAP (Eclipse Project dan PHP)

Silakan DOWNLOAD APK FILE nya untuk Android 3.0 (Honeycomb) atau yang terbaru.

GitHub project: BelajarAndroid.

Sekian posting hari ini, semoga dapat membahas lebih detail pada posting yang akan datang. semoga bermanfaat. Terima kasih.

Bagaimana cara menghubungkan android dengan database MySQL?

Cara Menghubungkan Aplikasi Android ke Database MySQL.
Pastikan Windows-nya sudah terinstal Java..
Silakan download RDC Server-nya di sini. Kemudian ekstrak ke mana saja boleh..
Buka config.properties. Lalu sesuaikan config database-nya, seperti JdbcUrl, User, Password. Untuk lainnya (sementara) abaikan saja..

Langkah langkah pembuatan aplikasi berbasis Android?

Cara membuat aplikasi Android dengan Android Studio bisa ditempuh dalam delapan langkah, yaitu:.
Buat Project di Android Studio..
Pilih jenis project..
Konfigurasi project Android..
Membuat interface di View..
Membuat interface di ViewGroup..
Request Data Analyzer..
Menampilkan data menggunakan RecylerView..
Menampilkan dataset..

Apa bahasa pemrograman yang digunakan untuk pembuatan aplikasi Android?

Bahasa Pemrograman Java Salah satu penyebabnya yaitu karena jutaan aplikasi android dibuat menggunakan bahasa pemrograman android. Untuk membuat aplikasi android menggunakan bahasa pemrograman java kita bisa menggunakan tools atau IDE : Android Studio (IDE resmi yang didukung penuh oleh google)