Oke, sebelum kita membuat contoh aplikasi sederhana ini, hal-hal yang perlu diketahui oleh pembaca :
- PHP
- MYSQL
- JSON
- Java(Android)
Tentunya kalian semua udah punya eclipse dkk buat develop apps android, oke langsung aja ke contoh programnya
pertama-tama kalian buat dulu kode php-nya di server lokal kalian
disini saya pake WAMP SERVER
oke langkah pertama buat PHP-nya dulu, baru nanti android-nya, tapi terserah kalian sih :p
Simpan difolder htdocs(xampp) atau www yaa(wamp)
Listing koneksi.php
<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "crud_android";
mysql_connect($server, $username, $password);
mysql_select_db($database) or die("Database tidak ada");
?>
nah buat database + tabelnya deh
Database : crud_android
Tabel : mahasiswa.create table mahasiswa( id int(11) not null primary key, nama varchar(100), kelas varchar(100), npm varchar(100) );
oke lanjut, abis itu siapin tambah_data.php
<?php
require_once __DIR__."koneksi.php";
//Siapin dulu JSON-nya
//$json['status'] <- menandakan status insert data, jika 1 maka berhasil, jika 0 maka terjadi kesalahan
//$json['pesan'] <- menandakan pesan apabila dilakukan insert data sukses atau tidak
$json = array();
if(isset($_POST['nama'])&&isset($_POST['kelas'])&&isset($_POST['npm'])){
//insert query
$nama = $_POST['nama'];
$kelas = $_POST['kelas'];
$npm = $_POST['npm'];
$sqlinsert = "insert into mahasiswa(nama, kelas, npm) values ('$nama','$kelas','$npm')";
$hasil = mysql_query($sqlinsert);
if($hasil){
//Kalo query sukses
$json['status'] = 1;
$json['pesan'] = "Data sudah dimasukkan kedalam database";
echo json_encode($json);
}else{
$json['status'] = 0;
$json['pesan'] = "Kesalahan query";
echo json_encode($json);
}
}else{
$json['status'] = 0;
$json['pesan'] = "Lengkapi data anda";
echo json_encode($json);
}
Sesudah itu, kita buat project androidnya :)
klo saya pake lib Android 2.2
File -> New -> Project
Android 2.2
Di activity main kita buat 1 tombol, tombol Tambah data
Main.java
Button tambah = (Button)findViewById(R.id.bTambahData);
tambah.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent i = new Intent(Main.this, TambahData.class);
finish();
startActivity(i);
}
});
Di activity TambahData.java ada 3 widget edit text buat ngisi data ke database
Nama, Kelas, NPM
pas di klik ok, akan melakukan insert data ke database mysql
isi listing kode TambahData.java
package com.list.crud;
import java.io.IOException;
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.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class TambahData extends Activity{
Button kirim;
EditText nama, kelas, npm;
ProgressDialog progress;
JSONParser jsonParser;
String url = "http://10.0.2.2/CRUD/tambah_data.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tambahdata);
kirim = (Button) findViewById(R.id.bKirim);
nama = (EditText) findViewById(R.id.etNama);
kelas = (EditText) findViewById(R.id.etKelas);
npm = (EditText) findViewById(R.id.etNpm);
jsonParser = new JSONParser();
kirim.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
new Tambah().execute();
}
});
}
class Tambah extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progress = new ProgressDialog(TambahData.this);
progress.setMax(100);
progress.setIndeterminate(false);
progress.show();
}
@Override
protected String doInBackground(String... arg0) {
String nm = nama.getText().toString();
String kls = kelas.getText().toString();
String nomor = npm.getText().toString();
List<NameValuePair> value = new ArrayList<NameValuePair>();
value.add(new BasicNameValuePair("nama", nm));
value.add(new BasicNameValuePair("kelas", kls));
value.add(new BasicNameValuePair("npm", nomor));
JSONObject js = null;
try {
js = jsonParser.getObject(url,"POST",value);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
int status = js.getInt("status");
if(status == 1){
Log.i("Sukses", "Produk telah ditambah");
}else{
Log.d("Error", "Gagal menambah produk");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progress.dismiss();
}
}
}
Ini listing kode JSONParser.java
package com.list.crud;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
public class JSONParser {
InputStream is;
String json;
public JSONObject getObject(String url, String method, List<NameValuePair> value) throws IOException {
if(method == "POST"){
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
try {
post.setEntity(new UrlEncodedFormEntity(value));
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(method == "GET"){
DefaultHttpClient client = new DefaultHttpClient();
String param = URLEncodedUtils.format(value, "utf-8");
url += "?" + param;
HttpGet get = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(get);
is = response.getEntity().getContent();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"));
StringBuilder sb = new StringBuilder();
String line;
while((line = reader.readLine())!=null){
sb.append(line+"\n");
}
is.close();
json = sb.toString();
JSONObject object = null;
try {
object = new JSONObject(json);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return object;
}
}
Nah, beres deh, penjelasan listing programnya, pada intinya ketika semua form udah diisi, terus klik tambah maka yang terjadi akan menjalankan kelas yang meng-extend AsyncTask, jika status respon yang dikembalikan adalah 1(Sukses menginsert data baru) maka data baru akan ditambah :)
untuk lebih jelasnya, download aja nih datanya, langsung diimport ke eclipsenya ya :)