Android CRUD MySQL

Assalamualaikum wr.wb…

Mungkin langsung saja, kali ini saya akan berbagi sedikit ilmu saya. Kedepannya saya harap bisa mempunyai banyak ilmu sehingga saya bisa membagikan lebih banyak ilmu lagi untuk para pembaca sekalian… amin, walaupun mungkin saya tidak menulis karena kehendak mungkin untuk lari dari hukuman hahaha (just kidding :p becanda… akh).
android crud mysql

www.slideshare.net

Semoga untuk selanjutnya khususnya saya pribadi bisa kembali meluruskan niat, walaupun mungkin ada benarnya juga sebuah statement yang menyatakan “kita bisa karena biasa, kita biasa karena dipaksa” (tapi bukan terpaksa looh yaa :p wkwkw ).

Ok mungkin sudah cukup basa basahnya :v ckckck, next to coding. Hmm berbicara tentang koding entah bagaimana saya juga bingung menjelaskannya, dan jika dijelaskan penuh dalam satu artikel saya khawatir akan kehilangan algoritma sederhananya dan juga sebaliknya jika di jelaskan full coding saya khawatir seseorang bosan membacanya tanpa gambaran visual sesungguhnya bagaimana kode tersebut berjalan.

Nah di bawah postingan sudah saya sediakan bagaimana kode tersebut berjalan, dan untuk kodingan sendiri mungkin tidak saya jelaskan dengan full dalam satu artikel, mungkin lebih efisiennya akan saya jelaskan secara singkatnya per syntax saja, saya harap itu bisa dengan mudah di pahami.

Back to topic, well… secara konsep sangat sederhana (walaupun kodingan sebenarnya banyak amat -_- ). Kita membangun sebuah database dan mengurai nya menjadi json menggunakan php dan dengan android kita panggil php nya untuk melakukan CRUD pada database yang telah kita sediakan. Inti dari prosesnya kita menggunakan android mengeksekusi file php untuk melakukan berbagai aksi terkait pada database. Next to real coding…



    Membuat database
    buat database bernama pendaftaran, dalam pendaftaran ada tabel pendaftaran juga dengan beberapa kolom berisi pendaftaran id, nama, email, kapan dibuat dan kapan di update. Jika selesai membuat database bernama pendaftaran mungkin untuk lebih jelasnya bisa menggunakan kode sql sebagai berikut.
    untuk membuat database pendaftaran:
    CREATE DATABASE pendaftaran;
    1
       
    CREATE DATABASE pendaftaran;

    untuk membuat kolom kolom yang diperlukan:
    CREATE TABLE pendaftaran( pid int(11) primary key auto_increment, name varchar(100) not null, email varchar(30) not null, description text, created_at timestamp default now(), updated_at timestamp );
    1
    2
    3
    4
    5
    6
    7
    8
       
    CREATE TABLE pendaftaran(
    pid int(11) primary key auto_increment,
    name varchar(100) not null,
    email varchar(30) not null,
    description text,
    created_at timestamp default now(),
    updated_at timestamp
    );

    Beberapa file php yang di butuhkan

    Seperti yang saya ketikkan sebelumnya bahwa kita membutuhkan file php untuk membuat serangkaian operasi pada database, kita akan membuat beberapa file php biasa terkait pembuatan, penghapusan , baca data, dan beberapa file php variabel sebagai koneksi ke database MySQL. Ok penjelasan singkatnya saya cantumkan pada kodingan sebagai komentar.Pertama beberapa file php pendukung koneksi database sebagai berikut:
    db_config.php
    /* * properti untuk konek ke db */ define('DB_USER', "root"); // db user define('DB_PASSWORD', ""); // db password define('DB_DATABASE', "pendaftaran"); // nama db define('DB_SERVER', "localhost"); // db server
    1
    2
    3
    4
    5
    6
    7
    8
       
    /*
    * properti untuk konek ke db
    */
    
    define('DB_USER', "root"); // db user
    define('DB_PASSWORD', ""); // db password
    define('DB_DATABASE', "pendaftaran"); // nama db
    define('DB_SERVER', "localhost"); // db server

    db_connect.php
    <?php /** * konek db dulu */ class DB_CONNECT { //konstruktor function __construct() { // konek database $this->connect(); } // destructor function __destruct() { // putuskan koneksi $this->close(); } function connect() { // import properti database untuk koneksi require_once __DIR__ . '/db_config.php'; // konek ke db mysql $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error()); // select database $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error()); // return return $con; } function close() { // putus koneksi mysql_close(); } } ?>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
       
    <?php
    
    /**
    * konek db dulu
    */
    class DB_CONNECT {
    //konstruktor
        function __construct() {
            // konek database
            $this->connect();
        }
    
        // destructor
        function __destruct() {
            // putuskan koneksi
            $this->close();
        }
    
        function connect() {
            // import properti database untuk koneksi
            require_once __DIR__ . '/db_config.php';
    
            // konek ke db mysql
            $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
    
            // select database
            $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
    
            // return
            return $con;
        }
    
        function close() {
            // putus koneksi
            mysql_close();
        }
    
    }
    
    ?>

    Selanjutnya, kita buat php basic untuk melakukan operasi CRUD seperti membuat data baru, membaca data, memperbarui data, dan menghapus data.
    untuk membuat/manambah data baru kita buat php berikut.
    create_pendaftaran.php
    <?php /* * Buat pendaftaran baru */ $response = array(); // cek form if (isset($_POST['name']) &amp;&amp; isset($_POST['email']) &amp;&amp; isset($_POST['description'])) { $name = $_POST['name']; $email = $_POST['email']; $description = $_POST['description']; // include db connect require_once __DIR__ . '/db_connect.php'; // konekin db $db = new DB_CONNECT(); // insert ke db $result = mysql_query("INSERT INTO pendaftaran(name, email, description) VALUES('$name', '$email', '$description')"); // cek data udah masuk belum if ($result) { // kalo sukses $response["success"] = 1; $response["message"] = "Pendaftaran anda berhasil"; // echoing JSON response echo json_encode($response); } else { // fkalo gagal $response["success"] = 0; $response["message"] = "Gagal, silahkan coba lagi"; // echoing JSON response echo json_encode($response); } } else { $response["success"] = 0; $response["message"] = "Required file"; // echoing JSON response echo json_encode($response); } ?>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
       
    <?php
    
    /*
    * Buat pendaftaran baru
    */
    
    $response = array();
    
    // cek form
    if (isset($_POST['name']) &amp;&amp; isset($_POST['email']) &amp;&amp; isset($_POST['description'])) {
    
        $name = $_POST['name'];
        $email = $_POST['email'];
        $description = $_POST['description'];
    
        // include db connect
        require_once __DIR__ . '/db_connect.php';
    
        // konekin db
        $db = new DB_CONNECT();
    
        // insert ke db
        $result = mysql_query("INSERT INTO pendaftaran(name, email, description) VALUES('$name', '$email', '$description')");
    
        // cek data udah masuk belum
        if ($result) {
            // kalo sukses
            $response["success"] = 1;
            $response["message"] = "Pendaftaran anda berhasil";
    
            // echoing JSON response
            echo json_encode($response);
        } else {
            // fkalo gagal
            $response["success"] = 0;
            $response["message"] = "Gagal, silahkan coba lagi";
    
            // echoing JSON response
            echo json_encode($response);
        }
    } else {
        $response["success"] = 0;
        $response["message"] = "Required file";
    
        // echoing JSON response
        echo json_encode($response);
    }
    ?>

    Selanjutnya untuk get / mengambil dan membaca detail data pada database sebagai berikut.
    get_all_pendaftaran.php
    <?php /* * kode untuk tampilak semua entry , pada halaman home */ $response = array(); // include db connect class require_once __DIR__ . '/db_connect.php'; // ckonekin ke db $db = new DB_CONNECT(); // get by pendaftaran $result = mysql_query("SELECT *FROM pendaftaran") or die(mysql_error()); // cek if (mysql_num_rows($result) > 0) { // looping hasil // pendaftaran node $response["pendaftaran"] = array(); while ($row = mysql_fetch_array($result)) { $pendaftaran = array(); $pendaftaran["pid"] = $row["pid"]; $pendaftaran["name"] = $row["name"]; $pendaftaran["email"] = $row["email"]; $pendaftaran["description"] = $row["description"]; $pendaftaran["created_at"] = $row["created_at"]; $pendaftaran["updated_at"] = $row["updated_at"]; // masukan pendaftaran pada $response array_push($response["pendaftaran"], $pendaftaran); } // sukses $response["success"] = 1; // echo JSON response echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "Tidak ada data yang ditemukan"; echo json_encode($response); } ?>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
       
    <?php
    
    /*
    * kode untuk tampilak semua entry , pada halaman home
    */
    
    $response = array();
    
    // include db connect class
    require_once __DIR__ . '/db_connect.php';
    
    // ckonekin ke db
    $db = new DB_CONNECT();
    
    //  get by pendaftaran
    $result = mysql_query("SELECT *FROM pendaftaran") or die(mysql_error());
    
    // cek
    if (mysql_num_rows($result) > 0) {
        // looping hasil
        // pendaftaran node
        $response["pendaftaran"] = array();
    
        while ($row = mysql_fetch_array($result)) {
            $pendaftaran = array();
            $pendaftaran["pid"] = $row["pid"];
            $pendaftaran["name"] = $row["name"];
            $pendaftaran["email"] = $row["email"];
            $pendaftaran["description"] = $row["description"];
            $pendaftaran["created_at"] = $row["created_at"];
            $pendaftaran["updated_at"] = $row["updated_at"];
    
            // masukan pendaftaran pada $response
            array_push($response["pendaftaran"], $pendaftaran);
        }
        // sukses
        $response["success"] = 1;
    
        // echo JSON response
        echo json_encode($response);
    } else {
        $response["success"] = 0;
        $response["message"] = "Tidak ada data yang ditemukan";
    
        echo json_encode($response);
    }
    ?>

    Oke, sekarang buat script php untuk memperbarui data pada database sebagaimana berikut.
    update_pendaftaran.php
    <?php /* * syntax untuk update form pendaftaran */ // array JSON response $response = array(); if (isset($_POST['pid']) &amp;&amp; isset($_POST['name']) &amp;&amp; isset($_POST['email']) &amp;&amp; isset($_POST['description'])) { $pid = $_POST['pid']; $name = $_POST['name']; $email = $_POST['email']; $description = $_POST['description']; // include db connect require_once __DIR__ . '/db_connect.php'; // konek ke db $db = new DB_CONNECT(); // update pendaftaran by pendaftaran id (PID) $result = mysql_query("UPDATE pendaftaran SET name = '$name', email = '$email', description = '$description' WHERE pid = $pid"); // cek data sudah masuk apa belum if ($result) { // kalo sukses $response["success"] = 1; $response["message"] = "Data anda berhasil di perbarui"; // echo JSON response echo json_encode($response); } else { } } else { $response["success"] = 0; $response["message"] = "Required missing data"; // echoJSON response echo json_encode($response); } ?>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
       
    <?php
    
    /*
    * syntax untuk update form pendaftaran
    */
    
    // array JSON response
    $response = array();
    
    if (isset($_POST['pid']) &amp;&amp; isset($_POST['name']) &amp;&amp; isset($_POST['email']) &amp;&amp; isset($_POST['description'])) {
    
        $pid = $_POST['pid'];
        $name = $_POST['name'];
        $email = $_POST['email'];
        $description = $_POST['description'];
    
        // include db connect
        require_once __DIR__ . '/db_connect.php';
    
        // konek ke db
        $db = new DB_CONNECT();
    
        // update pendaftaran by pendaftaran id (PID)
        $result = mysql_query("UPDATE pendaftaran SET name = '$name', email = '$email', description = '$description' WHERE pid = $pid");
    
        // cek data sudah masuk apa belum
        if ($result) {
            // kalo sukses
            $response["success"] = 1;
            $response["message"] = "Data anda berhasil di perbarui";
    
            // echo JSON response
            echo json_encode($response);
        } else {
    
        }
    } else {
        $response["success"] = 0;
        $response["message"] = "Required missing data";
    
        // echoJSON response
        echo json_encode($response);
    }
    ?>

    Terakhir syntax php untuk menghapus data pada database, delete_pendaftaran.php

    <?php /* * kode untuk menghapus data pendaftar */ $response = array(); if (isset($_POST['pid'])) { $pid = $_POST['pid']; // include db connect class require_once __DIR__ . '/db_connect.php'; // konekin ke db $db = new DB_CONNECT(); // update by pendaftaran id (PID) $result = mysql_query("DELETE FROM pendaftaran WHERE pid = $pid"); // cek aksi if (mysql_affected_rows() > 0) { // jika sukses $response["success"] = 1; $response["message"] = "Data berhasil di hapus"; // echoing JSON response echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "Tidak ada data yang tersedia"; // echo no users JSON echo json_encode($response); } } else { $response["success"] = 0; $response["message"] = "Required missing file"; // echoing JSON response echo json_encode($response); } ?>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
       
    <?php
    
    /*
    * kode untuk menghapus data pendaftar
    */
    
    $response = array();
    
    if (isset($_POST['pid'])) {
        $pid = $_POST['pid'];
    
        // include db connect class
        require_once __DIR__ . '/db_connect.php';
    
        // konekin ke db
        $db = new DB_CONNECT();
    
        // update by pendaftaran id (PID)
        $result = mysql_query("DELETE FROM pendaftaran WHERE pid = $pid");
    
        // cek aksi
        if (mysql_affected_rows() > 0) {
            // jika sukses
            $response["success"] = 1;
            $response["message"] = "Data berhasil di hapus";
    
            // echoing JSON response
            echo json_encode($response);
        } else {
            $response["success"] = 0;
            $response["message"] = "Tidak ada data yang tersedia";
    
            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        $response["success"] = 0;
        $response["message"] = "Required missing file";
    
        // echoing JSON response
        echo json_encode($response);
    }
    ?>







Okeh sip, sector clear ?? akhir rampung juga, kodingan php nya maksudnya :v ckckck. Ok next real android coding… Pertama seperti biasa kita buat project baru dulu untuk langkah – langkah sederhananya klik file pada menu bar pilih new lalu klik android project, untuk penamaan class kita pakai standart  aja, next isi nama class dengan MainActivity dan isi layout activity nya dengan activity_main. Setelah selesai hmm… jika sudah ada konsep kebelakangnya, sebaiknya kita daftarkan dulu class class yang akan kita buat di AndroidManifest.xml, owh ya berhubung kita juga membutuhkan koneksi untuk mengambil data pada database jangan lupa kita juga sematkan izin akses internetnya, oke daripada menerka nerka langsung coding aja…

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="id.creatorb.bukutamu" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:configChanges="keyboardHidden|orientation" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- Detail pendaftar yang mengisi pada buku tamu kesuluruhan--> <activity android:name=".SemuaBukuTamu" android:label="Data Buku Tamu" > </activity> <!-- Tambah entry pendaftar pada bukutamu --> <activity android:name=".TambahBukuTamu" android:label="Tambah Buku Tamu" > </activity> <!-- Edit Pendaftar --> <activity android:name=".EditBukuTamu" android:label="Edit Buku Tamu" > </activity> </application> <!-- hak akses internet --> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
   
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="id.creatorb.bukutamu"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:configChanges="keyboardHidden|orientation"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Detail pendaftar yang mengisi pada buku tamu kesuluruhan-->
        <activity
            android:name=".SemuaBukuTamu"
            android:label="Data Buku Tamu" >
        </activity>

        <!-- Tambah entry pendaftar pada bukutamu -->
        <activity
            android:name=".TambahBukuTamu"
            android:label="Tambah Buku Tamu" >
        </activity>

        <!-- Edit Pendaftar -->
        <activity
            android:name=".EditBukuTamu"
            android:label="Edit Buku Tamu" >
        </activity>
    </application>

    <!--  hak akses internet -->
    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

Oke setelah class sudah terdaftar semua, kita lanjutkan pembuatan project sesuai class yang telah kita daftarkan sebelumnya, untuk pertama kita buat layout untuk home / dashboard nya dimana dalam layout tersebut memiliki dua tombol, tombol tambah data untuk menambah entri baru dan lihat data untuk melihat data yang tersedia pada database, sebelum beranjak lebih jauh mengenai proses pengambilan data yang ada pada database, kita buat layout seperti yang saya ketikan tadi, oke kita menuju pada folder res > layout dan kita buat activity_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:gravity="center_horizontal" android:background="#4169E1"> <TextView android:id="@+id/tvJudul" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Asynctask" android:gravity="center" android:textColor="#FFFFFF" android:textStyle="bold" android:textSize="35dp"/> <!-- dashboard menu memiliki dua tombol --> <!-- tombol untuk melihat data --> <Button android:id="@+id/btnLihatData" android:layout_width="200dp" android:layout_height="50dp" android:text="Lihat Data" android:textColor="#FFFFFF" android:background="#00BFFF" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="20dp"/> <!-- tombol untuk membuat data --> <Button android:id="@+id/btnBuatData" android:layout_width="200dp" android:layout_height="50dp" android:text="Tambah Data" android:background="#00BFFF" android:textColor="#FFFFFF" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="10dp"/> </LinearLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
   
<?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:gravity="center_horizontal"
    android:background="#4169E1">

    <TextView
        android:id="@+id/tvJudul"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Asynctask"
     android:gravity="center"
        android:textColor="#FFFFFF"
        android:textStyle="bold"
        android:textSize="35dp"/>

    <!--  dashboard menu memiliki dua tombol -->

    <!--  tombol untuk melihat data -->
    <Button android:id="@+id/btnLihatData"
    android:layout_width="200dp"
    android:layout_height="50dp"
        android:text="Lihat Data"
        android:textColor="#FFFFFF"
        android:background="#00BFFF"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_marginTop="20dp"/>

    <!--  tombol untuk membuat data -->
    <Button android:id="@+id/btnBuatData"
    android:layout_width="200dp"
    android:layout_height="50dp"
        android:text="Tambah Data"
        android:background="#00BFFF"
        android:textColor="#FFFFFF"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_marginTop="10dp"/>

</LinearLayout>

next layout telah kita buat selanjutnya kita menuju pada proses nya, masuk folder src > id.creatorb.bukutamu > (buat class) nah disinilah kita menyimpan proses / controlernya. Untuk Pertama kita buat file java bernama MainActivity.java
package id.creatorb.bukutamu; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity{ Button btnLihatData; Button btnBuatData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // tombol lihat data dan buat data btnLihatData = (Button) findViewById(R.id.btnLihatData); btnBuatData = (Button) findViewById(R.id.btnBuatData); // event dari lihat data btnLihatData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // jalankan activity dari SemuaBukuTamu Intent i = new Intent(getApplicationContext(), SemuaBukuTamu.class); startActivity(i); } }); // jalankan activity untuk melihat BukuTamu btnBuatData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Jalankan class TambahBukuTamu untuk menambah entri Intent i = new Intent(getApplicationContext(), TambahBukuTamu.class); startActivity(i); } }); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
   
package id.creatorb.bukutamu;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity{

    Button btnLihatData;
    Button btnBuatData;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // tombol lihat data dan buat data
        btnLihatData = (Button) findViewById(R.id.btnLihatData);
        btnBuatData = (Button) findViewById(R.id.btnBuatData);

        // event dari lihat data
        btnLihatData.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // jalankan activity dari SemuaBukuTamu
                Intent i = new Intent(getApplicationContext(), SemuaBukuTamu.class);
                startActivity(i);

            }
        });

        // jalankan activity untuk melihat BukuTamu
        btnBuatData.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Jalankan class TambahBukuTamu untuk menambah entri
                Intent i = new Intent(getApplicationContext(), TambahBukuTamu.class);
                startActivity(i);

            }
        });
    }
}

Setelah proses pengambilan data dibuat kita buat tampilan dan proses untuk menampilkan nya, seperti biasa untuk pertama kita buat layout nya dulu, tapi kali ini kita memakai dua layout. Dimana satu untuk tampil berupa menu pada list dan yang kedua menampilkan single detail datanya. Oke untuk list_pendaftaran.xml sebagai berikut:
<?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="wrap_content" android:orientation="vertical" android:background="#4169E1" > <TextView android:id="@+id/pid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> <!-- Nama yang muncul pada layout home --> <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="6dip" android:paddingLeft="6dip" android:textSize="17dip" android:textStyle="bold" android:textColor="#FFFFFF" /> </LinearLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
   
<?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="wrap_content"
    android:orientation="vertical"
    android:background="#4169E1" >

    <TextView
        android:id="@+id/pid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <!-- Nama yang muncul pada layout home -->
    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="17dip"
        android:textStyle="bold"
        android:textColor="#FFFFFF" />

</LinearLayout>

dan untuk detail nya, semua_bukutamu.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:background="#4169E1"> <!-- list view tampilkan data dengan id list di list view (@android:id/list) --> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   
<?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:background="#4169E1">

    <!-- list view tampilkan data dengan id list di list view (@android:id/list) -->
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

Sekarang kita buat class baru bernama SemuaBukuTamu.java kita akan memanggil semua data melalui file php yang kita buat tadi get_all_pendaftaran.php menggunakan teknik asynctask guna menjalankan proses di background. Jika berhasil mendapat json pada data di database maka akan di masukan pada listview, namun jika tidak ada data yang ditemukan maka akan di alihkan menuju TambahBukuTamu.java oke kodingan untuk SemuaBukuTamu.java sebagai berikut.
package id.creatorb.bukutamu; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.http.NameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class SemuaBukuTamu extends ListActivity { // Progress Dialog private ProgressDialog pDialog; // buat json object JSONParser jParser = new JSONParser(); ArrayList<HashMap<String, String>> bukutamuList; // url untuk get semua buku tamu private static String url_semua_bukutamu = "http://10.0.2.2/pendaftaran/get_all_pendaftaran.php"; // JSON Node private static final String TAG_SUCCESS = "success"; private static final String TAG_PENDAFTARAN = "pendaftaran"; private static final String TAG_PID = "pid"; private static final String TAG_NAME = "name"; // pendaftaran JSONArray JSONArray pendaftaran = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.semua_bukutamu); // Hashmap untuk ListView bukutamuList = new ArrayList<HashMap<String, String>>(); // Loading pendaftarans in Background Thread new LoadSemuaBukuTamu().execute(); // Get listview ListView lv = getListView(); // select single bukutamu // Jalankan tampilan edit buku tamu lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // dapatkan nilai dari list pendaftaran String pid = ((TextView) view.findViewById(R.id.pid)).getText() .toString(); // Memulai aktifitas baru Intent in = new Intent(getApplicationContext(), EditBukuTamu.class); // kirimkan pid ke activity selanjutnya in.putExtra(TAG_PID, pid); // memulai activity baru dengan bbrapa kembalian response startActivityForResult(in, 100); } }); } // response dari edit bukutamu @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // jika kode hasil sama dengan 100 if (resultCode == 100) { // maka diterima // ketika user ngedit atau menghapus data // reload screen Intent intent = getIntent(); finish(); startActivity(intent); } } /** * Background Async Task untuk menampilkan semua daftar bukutamu menggunakan http request * */ class LoadSemuaBukuTamu extends AsyncTask<String, String, String> { /** * sebelum melakukan thread di background maka jalankan progres dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(SemuaBukuTamu.this); pDialog.setMessage("Mohon tunggu, Loading Data..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * dapetkan semua entri pendaftaran bukutamu dari get url di background * */ protected String doInBackground(String... args) { // Buat Parameter List<NameValuePair> params = new ArrayList<NameValuePair>(); // ambil json dari url JSONObject json = jParser.makeHttpRequest(url_semua_bukutamu, "GET", params); // cek logcat untuk response dari json Log.d("Semua Buku Tamu: ", json.toString()); try { // cek jika tag success int success = json.getInt(TAG_SUCCESS); if (success == 1) { // data ditemukan // ambil array dari bukutamu pendaftaran = json.getJSONArray(TAG_PENDAFTARAN); // tampilkan perulangan semua entri pendaftaran for (int i = 0; i < pendaftaran.length(); i++) { JSONObject c = pendaftaran.getJSONObject(i); // simpan pada variabel String id = c.getString(TAG_PID); String name = c.getString(TAG_NAME); // buat new hashmap HashMap<String, String> map = new HashMap<String, String>(); // key => value map.put(TAG_PID, id); map.put(TAG_NAME, name); // masukan HashList ke ArrayList bukutamuList.add(map); } } else { // jika tidak ada data // maka jalankan tambahkan buku tamu Intent i = new Intent(getApplicationContext(), TambahBukuTamu.class); // tutup semua proses sebelumnya i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } } catch (JSONException e) { e.printStackTrace(); } return null; } /** * jika pekerjaan di belakang layar selesai maka hentikan progress dialog * **/ protected void onPostExecute(String file_url) { // hentikan progress ketika semua data didapat pDialog.dismiss(); // perbarui screen runOnUiThread(new Runnable() { public void run() { /** * perbarui json ke arraylist * */ ListAdapter adapter = new SimpleAdapter( SemuaBukuTamu.this, bukutamuList, R.layout.list_pendaftaran, new String[] { TAG_PID, TAG_NAME}, new int[] { R.id.pid, R.id.name }); // perbarui list pendaftaran setListAdapter(adapter); } }); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
   
package id.creatorb.bukutamu;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class SemuaBukuTamu extends ListActivity {

    // Progress Dialog
    private ProgressDialog pDialog;

    // buat json object
    JSONParser jParser = new JSONParser();

    ArrayList<HashMap<String, String>> bukutamuList;

    // url untuk get semua buku tamu
    private static String url_semua_bukutamu = "http://10.0.2.2/pendaftaran/get_all_pendaftaran.php";

    // JSON Node
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PENDAFTARAN = "pendaftaran";
    private static final String TAG_PID = "pid";
    private static final String TAG_NAME = "name";

    // pendaftaran JSONArray
    JSONArray pendaftaran = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.semua_bukutamu);

        // Hashmap untuk ListView
        bukutamuList = new ArrayList<HashMap<String, String>>();

        // Loading pendaftarans in Background Thread
        new LoadSemuaBukuTamu().execute();

        // Get listview
        ListView lv = getListView();

        // select single bukutamu
        // Jalankan tampilan edit buku tamu
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // dapatkan nilai dari list pendaftaran
                String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                        .toString();

                // Memulai aktifitas baru
                Intent in = new Intent(getApplicationContext(),
                        EditBukuTamu.class);
                // kirimkan pid ke activity selanjutnya
                in.putExtra(TAG_PID, pid);

                // memulai activity baru dengan bbrapa kembalian response

                startActivityForResult(in, 100);
            }
        });

    }

    // response dari edit bukutamu
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // jika kode hasil sama dengan 100
        if (resultCode == 100) {
            // maka diterima
            // ketika user ngedit atau menghapus data
            // reload screen
            Intent intent = getIntent();
            finish();
            startActivity(intent);
        }

    }

    /**
     * Background Async Task untuk menampilkan semua daftar bukutamu menggunakan http request
     * */
    class LoadSemuaBukuTamu extends AsyncTask<String, String, String> {

        /**
         * sebelum melakukan thread di background maka jalankan progres dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(SemuaBukuTamu.this);
            pDialog.setMessage("Mohon tunggu, Loading Data...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * dapetkan semua entri pendaftaran bukutamu dari get url di background
         * */
        protected String doInBackground(String... args) {
            // Buat Parameter
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // ambil json dari url
            JSONObject json = jParser.makeHttpRequest(url_semua_bukutamu, "GET", params);

            // cek logcat untuk response dari json
            Log.d("Semua Buku Tamu: ", json.toString());

            try {
                // cek jika tag success
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // data ditemukan
                    // ambil array dari bukutamu
                    pendaftaran = json.getJSONArray(TAG_PENDAFTARAN);

                    // tampilkan perulangan semua entri pendaftaran
                    for (int i = 0; i < pendaftaran.length(); i++) {
                        JSONObject c = pendaftaran.getJSONObject(i);

                        // simpan pada variabel
                        String id = c.getString(TAG_PID);
                        String name = c.getString(TAG_NAME);

                        // buat new hashmap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // key => value
                        map.put(TAG_PID, id);
                        map.put(TAG_NAME, name);

                        // masukan HashList ke ArrayList
                        bukutamuList.add(map);
                    }
                } else {
                    // jika tidak ada data
                    // maka jalankan tambahkan buku tamu
                    Intent i = new Intent(getApplicationContext(),
                            TambahBukuTamu.class);
                    // tutup semua proses sebelumnya
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * jika pekerjaan di belakang layar selesai maka hentikan progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // hentikan progress ketika semua data didapat
            pDialog.dismiss();
            // perbarui screen
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * perbarui json ke arraylist
                     * */
                    ListAdapter adapter = new SimpleAdapter(
                            SemuaBukuTamu.this, bukutamuList,
                            R.layout.list_pendaftaran, new String[] { TAG_PID,
                                    TAG_NAME},
                            new int[] { R.id.pid, R.id.name });
                    // perbarui list pendaftaran
                    setListAdapter(adapter);
                }
            });

        }

    }
}

Berhubung selanjutnya akan di alihkan menuju TambahBukuTamu.java maka sebaiknya kita buat layout nya terlebih dahulu, dengan bentuk form yang mempunyai beberapa inputan berisi nama,email,bio / deskripsi nya. Oke kodingannya seperti ini.

tambah_bukutamu.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#4169E1"> <!-- Nama --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Nama" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input Name --> <EditText android:id="@+id/inputName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:singleLine="true"/> <!-- Email --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Email" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input Email --> <EditText android:id="@+id/inputEmail" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:singleLine="true"/> <!-- Bio --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Bio" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input bio --> <EditText android:id="@+id/inputDesc" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:lines="4" android:gravity="top"/> <!-- Button Kirim bukutamu --> <Button android:id="@+id/btnCreatePendaftaran" android:layout_width="200dp" android:layout_height="50dp" android:text="Kirim" android:background="#00BFFF" android:textColor="#FFFFFF" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="20dp"/> </LinearLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#4169E1">

    <!-- Nama -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Nama"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input Name -->
    <EditText android:id="@+id/inputName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:singleLine="true"/>

    <!-- Email -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Email"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input Email -->
    <EditText android:id="@+id/inputEmail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:singleLine="true"/>

    <!-- Bio -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Bio"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input bio -->
    <EditText android:id="@+id/inputDesc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:lines="4"
        android:gravity="top"/>

   <!-- Button Kirim bukutamu -->
    <Button android:id="@+id/btnCreatePendaftaran"
    android:layout_width="200dp"
    android:layout_height="50dp"
        android:text="Kirim"
        android:background="#00BFFF"
        android:textColor="#FFFFFF"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_marginTop="20dp"/>

</LinearLayout>

Setelah layout tambah atau dalam konsep sebenarnya adalah insert ke database, sekarang kita buat prosesnya atau dalam oop lebih dikenal dengan controlernya. Alurnya kita membaca data yang sebelumnya telah di input di from tambah_bukutamu.xml kemudian mengirimkan POST melalui file php create_pendaftaran.php jika sukses maka mengirimkan kembalian saat listview melakukan pembaharuan daftar.

TambahBukuTamu.java
package id.creatorb.bukutamu; 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.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; /** * @author creatorb * */ public class TambahBukuTamu extends Activity { // Progress Dialog private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); EditText inputName; EditText inputEmail; EditText inputDesc; // url to membuat pendaftaran / bukutamu baru private static String url_tambah_pendaftaran = "http://10.0.2.2/pendaftaran/create_pendaftaran.php"; private static final String TAG_SUCCESS = "success"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tambah_bukutamu); // Edit Text inputName = (EditText) findViewById(R.id.inputName); inputEmail = (EditText) findViewById(R.id.inputEmail); inputDesc = (EditText) findViewById(R.id.inputDesc); // button untuk buat pendaftaran baru Button btnCreatePendaftaran = (Button) findViewById(R.id.btnCreatePendaftaran); // event jika di klik btnCreatePendaftaran.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // jalankan buat pendaftaran di background new CreateNewpendaftaran().execute(); } }); } /** * Background Async Task untuk membuat buku tamu baru * */ class CreateNewpendaftaran extends AsyncTask<String, String, String> { /** * tampilkan progress dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(TambahBukuTamu.this); pDialog.setMessage("Sedang membuat pendaftaran..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * buat bukutamu baru * */ protected String doInBackground(String... args) { String name = inputName.getText().toString(); String email = inputEmail.getText().toString(); String description = inputDesc.getText().toString(); // parameter List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name", name)); params.add(new BasicNameValuePair("email", email)); params.add(new BasicNameValuePair("description", description)); // json object JSONObject json = jsonParser.makeHttpRequest(url_tambah_pendaftaran, "POST", params); // cek respon di logcat Log.d("Create Response", json.toString()); // cek tag success try { int success = json.getInt(TAG_SUCCESS); if (success == 1) { // sukses buat pendaftaran Intent i = new Intent(getApplicationContext(), SemuaBukuTamu.class); startActivity(i); // tutup screen finish(); } else { // jika gagal } } catch (JSONException e) { e.printStackTrace(); } return null; } /** * jika proses selesai maka hentikan progress dialog * **/ protected void onPostExecute(String file_url) { pDialog.dismiss(); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
   
package id.creatorb.bukutamu;

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.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

/**
* @author creatorb
*
*/

public class TambahBukuTamu extends Activity {

    // Progress Dialog
    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();
    EditText inputName;
    EditText inputEmail;
    EditText inputDesc;

    // url to membuat pendaftaran / bukutamu baru
    private static String url_tambah_pendaftaran = "http://10.0.2.2/pendaftaran/create_pendaftaran.php";

    private static final String TAG_SUCCESS = "success";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tambah_bukutamu);

        // Edit Text
        inputName = (EditText) findViewById(R.id.inputName);
        inputEmail = (EditText) findViewById(R.id.inputEmail);
        inputDesc = (EditText) findViewById(R.id.inputDesc);

        // button untuk buat pendaftaran baru
        Button btnCreatePendaftaran = (Button) findViewById(R.id.btnCreatePendaftaran);

        // event jika di klik
        btnCreatePendaftaran.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // jalankan buat pendaftaran di background
                new CreateNewpendaftaran().execute();
            }
        });
    }

    /**
     * Background Async Task untuk membuat buku tamu baru
     * */
    class CreateNewpendaftaran extends AsyncTask<String, String, String> {

        /**
         * tampilkan progress dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(TambahBukuTamu.this);
            pDialog.setMessage("Sedang membuat pendaftaran...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * buat bukutamu baru
         * */
        protected String doInBackground(String... args) {
            String name = inputName.getText().toString();
            String email = inputEmail.getText().toString();
            String description = inputDesc.getText().toString();

            // parameter
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name", name));
            params.add(new BasicNameValuePair("email", email));
            params.add(new BasicNameValuePair("description", description));

            // json object
            JSONObject json = jsonParser.makeHttpRequest(url_tambah_pendaftaran,
                    "POST", params);

            // cek respon di logcat
            Log.d("Create Response", json.toString());

            // cek tag success
            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // sukses buat pendaftaran
                    Intent i = new Intent(getApplicationContext(), SemuaBukuTamu.class);
                    startActivity(i);

                    // tutup screen
                    finish();
                } else {
                    // jika gagal
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * jika proses selesai maka hentikan progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
        }

    }
}

Sebelumnya pada class SemuaBukuTamu.java di salah satu layoutnya maksud saya list_pendaftaran ada proses untuk menjalankan EditBukuTamu.java jika ada salah satu item di list yang di pilih user. Oleh karena sekarang kita buat layout untuk edit_bukutamu terlebih dahulu, untuk form nya bisa di samain dengan form saat tambah_bukutamu namun dengan tambahan beberapa tombol untuk pembaruan dan penghapusan data.

edit_bukutamu.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#4169E1" > <!-- Nama --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Nama" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input Name --> <EditText android:id="@+id/inputName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:singleLine="true"/> <!-- Email --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Email" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input Email --> <EditText android:id="@+id/inputEmail" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:singleLine="true"/> <!-- Bio --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Bio" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="10dip" android:textSize="17dip"/> <!-- Input bio --> <EditText android:id="@+id/inputDesc" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:layout_marginBottom="15dip" android:lines="4" android:gravity="top"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- Button simpan bukutamu --> <Button android:id="@+id/btnSave" android:layout_width="200dp" android:layout_height="50dp" android:text="Simpan" android:layout_weight="1" android:background="#00BFFF" android:textColor="#FFFFFF" android:layout_marginLeft="50dp" android:layout_marginRight="5dp" android:layout_marginTop="10dp"/> <!-- Button hapus bukutamu --> <Button android:id="@+id/btnDelete" android:layout_width="200dp" android:layout_height="50dp" android:text="Hapus" android:layout_weight="1" android:background="#00BFFF" android:textColor="#FFFFFF" android:layout_marginLeft="10dp" android:layout_marginRight="50dp" android:layout_marginTop="10dp"/> </LinearLayout> </LinearLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#4169E1" >

    <!-- Nama -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Nama"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input Name -->
    <EditText android:id="@+id/inputName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:singleLine="true"/>

    <!-- Email -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Email"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input Email -->
    <EditText android:id="@+id/inputEmail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:singleLine="true"/>

    <!-- Bio -->
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Bio"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textSize="17dip"/>

    <!-- Input bio -->
    <EditText android:id="@+id/inputDesc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:lines="4"
        android:gravity="top"/>

    <LinearLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <!-- Button simpan bukutamu -->
    <Button android:id="@+id/btnSave"
    android:layout_width="200dp"
    android:layout_height="50dp"
        android:text="Simpan"
        android:layout_weight="1"
        android:background="#00BFFF"
        android:textColor="#FFFFFF"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="10dp"/>

    <!-- Button hapus bukutamu -->
    <Button android:id="@+id/btnDelete"
    android:layout_width="200dp"
    android:layout_height="50dp"
        android:text="Hapus"
        android:layout_weight="1"
        android:background="#00BFFF"
        android:textColor="#FFFFFF"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="50dp"
        android:layout_marginTop="10dp"/>
    </LinearLayout>

</LinearLayout>

Selesai membuat model, lanjut kita buat controlernya. mungkin sedikit penjalasan tambahan dikarenakan dalam class ini akan di gabung beberapa proses komplit. Sebelumnya pendaftaran id / pid di baca dari intent yang dikirim dari listview. Permintaan dikirimkan oleh get_pendaftaran_details.php, setelah dapet data dalam bentuk json maka di parsing diuraikan pada form layout edit_bukutamu.xml . Nah barulah setelah masuk pada field yang telah ada maka disediakan tombol pembaharuan dan penghapusan data dimana permintaannya dikirim melalui http request, file php update_pendaftaran.php dan delete_pendaftaran.php yang sebelumnya kita buat. Pengerjaannya dilakukan di background jadi setelah proses selesai maka halaman akan refresh dengan tampilan user interface yang telah di perbarui.

EditBukuTamu.java
package id.creatorb.bukutamu; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; 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 EditBukuTamu extends Activity { //properti dari edit_bukutamu EditText txtName; EditText txtEmail; EditText txtDesc; EditText txtCreatedAt; Button btnSave; Button btnDelete; String pid; // Progress Dialog private ProgressDialog pDialog; // buat class json parser JSONParser jsonParser = new JSONParser(); // url untuk halaman single dari bukutamu private static final String url_pendaftaran_details = "http://10.0.2.2/pendaftaran/get_pendaftaran_details.php"; // url untuk pembaharuan buku tamu private static final String url_update_pendaftaran = "http://10.0.2.2/pendaftaran/update_pendaftaran.php"; // url untuk menghapus buku tamu private static final String url_delete_pendaftaran = "http://10.0.2.2/pendaftaran/delete_pendaftaran.php"; // node node json private static final String TAG_SUCCESS = "success"; private static final String TAG_PENDAFTARAN = "pendaftaran"; private static final String TAG_PID = "pid"; private static final String TAG_NAME = "name"; private static final String TAG_EMAIL = "email"; private static final String TAG_DESCRIPTION = "description"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_bukutamu); // beberapa tombol untuk menyimpan dan menghapus btnSave = (Button) findViewById(R.id.btnSave); btnDelete = (Button) findViewById(R.id.btnDelete); // get semua daftar buku tamu dari intent Intent i = getIntent(); // get daftar buku tamu dari intent by pendaftaran id (pid) pid = i.getStringExtra(TAG_PID); // get komplit pendaftaran dari thread di background new GetPendaftaranDetails().execute(); // event untuk tombol simpan btnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // mulai pekerjaan di background untuk pembaharuan data new SavePendaftaranDetails().execute(); } }); // event jika tombol delete di klik btnDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // di background menjalankan penghapusan daftar yg dipilih new Deletependaftaran().execute(); } }); } /** * jalankan get semua pendaftaran di background * */ class GetPendaftaranDetails extends AsyncTask<String, String, String> { /** * jika memulai get activity maka jalankan progress dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(EditBukuTamu.this); pDialog.setMessage("Mengambil Data..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * mulai jalankan get semua daftar dan jalankan di background * */ protected String doInBackground(String... params) { // pembaharuan ui dari thread yg dijalankan runOnUiThread(new Runnable() { public void run() { // Cek tag success int success; try { // buat paramater List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("pid", pid)); // get detail dari daftar menggunakan http request JSONObject json = jsonParser.makeHttpRequest( url_pendaftaran_details, "GET", params); // cek log kita dg json response Log.d("Single pendaftaran Details", json.toString()); // tag success json success = json.getInt(TAG_SUCCESS); if (success == 1) { // sukses mendapat detail daftar JSONArray pendaftaranObj = json .getJSONArray(TAG_PENDAFTARAN); // JSON Array // get objek daftar pertama dari json array JSONObject pendaftaran = pendaftaranObj.getJSONObject(0); // temukan daftar menggunakan pid txtName = (EditText) findViewById(R.id.inputName); txtEmail = (EditText) findViewById(R.id.inputEmail); txtDesc = (EditText) findViewById(R.id.inputDesc); // tampilkan di edit text txtName.setText(pendaftaran.getString(TAG_NAME)); txtEmail.setText(pendaftaran.getString(TAG_EMAIL)); txtDesc.setText(pendaftaran.getString(TAG_DESCRIPTION)); }else{ // pid tidak ditemukan } } catch (JSONException e) { e.printStackTrace(); } } }); return null; } /** * jika pekerjaan di background selesai maka hentikan progress yg berjalan * **/ protected void onPostExecute(String file_url) { // hentikan progress dialog untuk get pDialog.dismiss(); } } /** * async task untuk menyimpan pendaftaran * */ class SavePendaftaranDetails extends AsyncTask<String, String, String> { /** * jika proses di background akan berjalan maka tampilkan progress dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(EditBukuTamu.this); pDialog.setMessage("Menyimpan data ..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * menyimpan data * */ protected String doInBackground(String... args) { // get pembaharuan data dari edit text yg di input user String name = txtName.getText().toString(); String email = txtEmail.getText().toString(); String description = txtDesc.getText().toString(); // buat parameter List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(TAG_PID, pid)); params.add(new BasicNameValuePair(TAG_NAME, name)); params.add(new BasicNameValuePair(TAG_EMAIL, email)); params.add(new BasicNameValuePair(TAG_DESCRIPTION, description)); // kirim data pembaharuan melalui http request JSONObject json = jsonParser.makeHttpRequest(url_update_pendaftaran, "POST", params); // cek tag success json try { int success = json.getInt(TAG_SUCCESS); if (success == 1) { // sukses di perbaharui Intent i = getIntent(); // jika sukses maka kirimkan kode 100 setResult(100, i); finish(); } else { // jika tidak maka gagal } } catch (JSONException e) { e.printStackTrace(); } return null; } /** * jika pekerjaan di background selesai maka hentikan progress dialog * **/ protected void onPostExecute(String file_url) { // hentikan progress dialog untuk menympan data pDialog.dismiss(); } } /***************************************************************** * Background Async Task untuk menghapus data * */ class Deletependaftaran extends AsyncTask<String, String, String> { /** * sebelum pekerjaan di mulai di background maka jalankan progress dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(EditBukuTamu.this); pDialog.setMessage("Penghapusan data..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * hapus data * */ protected String doInBackground(String... args) { // cek tag success int success; try { // buat paramater List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("pid", pid)); // get details data menggunakan http request JSONObject json = jsonParser.makeHttpRequest( url_delete_pendaftaran, "POST", params); // cek log json response Log.d("Hapus Data", json.toString()); // json success tag success = json.getInt(TAG_SUCCESS); if (success == 1) { // data pendaftaran berhasil di hapus // kirimkan kode 100 Intent i = getIntent(); // jika pendaftaran / entri menuju buku tamu berhasil setResult(100, i); finish(); } } catch (JSONException e) { e.printStackTrace(); } return null; } /** * jika proses di belakang layar selesai maka hentikan progress dialog yg berjalan * **/ protected void onPostExecute(String file_url) { // hentikan progress dialog untuk penghapusan pDialog.dismiss(); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
   
package id.creatorb.bukutamu;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
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 EditBukuTamu extends Activity {

//properti dari edit_bukutamu
    EditText txtName;
    EditText txtEmail;
    EditText txtDesc;
    EditText txtCreatedAt;
    Button btnSave;
    Button btnDelete;

    String pid;

    // Progress Dialog
    private ProgressDialog pDialog;

    // buat class json parser
    JSONParser jsonParser = new JSONParser();

    // url untuk halaman single dari bukutamu
    private static final String url_pendaftaran_details = "http://10.0.2.2/pendaftaran/get_pendaftaran_details.php";

    // url untuk pembaharuan buku tamu
    private static final String url_update_pendaftaran = "http://10.0.2.2/pendaftaran/update_pendaftaran.php";

    // url untuk menghapus buku tamu
    private static final String url_delete_pendaftaran = "http://10.0.2.2/pendaftaran/delete_pendaftaran.php";

    // node node json
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PENDAFTARAN = "pendaftaran";
    private static final String TAG_PID = "pid";
    private static final String TAG_NAME = "name";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_DESCRIPTION = "description";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_bukutamu);

        // beberapa tombol untuk menyimpan dan menghapus
        btnSave = (Button) findViewById(R.id.btnSave);
        btnDelete = (Button) findViewById(R.id.btnDelete);

        // get semua daftar buku tamu dari intent
        Intent i = getIntent();

        // get daftar buku tamu dari intent by pendaftaran id (pid)
        pid = i.getStringExtra(TAG_PID);

        // get komplit pendaftaran dari thread di background
        new GetPendaftaranDetails().execute();

        // event untuk tombol simpan
        btnSave.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // mulai pekerjaan di background untuk pembaharuan data
                new SavePendaftaranDetails().execute();
            }
        });

        // event jika tombol delete di klik
        btnDelete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // di background menjalankan penghapusan daftar yg dipilih
                new Deletependaftaran().execute();
            }
        });

    }

    /**
     * jalankan get semua pendaftaran di background
     * */
    class GetPendaftaranDetails extends AsyncTask<String, String, String> {

        /**
         * jika memulai get activity maka jalankan progress dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(EditBukuTamu.this);
            pDialog.setMessage("Mengambil Data...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * mulai jalankan get semua daftar dan jalankan di background
         * */
        protected String doInBackground(String... params) {

            // pembaharuan ui dari thread yg dijalankan
            runOnUiThread(new Runnable() {
                public void run() {
                    // Cek tag success
                    int success;
                    try {
                        // buat paramater
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("pid", pid));

                        // get detail dari daftar menggunakan http request
                        JSONObject json = jsonParser.makeHttpRequest(
                                url_pendaftaran_details, "GET", params);

                        // cek log kita dg json response
                        Log.d("Single pendaftaran Details", json.toString());

                        // tag success json
                        success = json.getInt(TAG_SUCCESS);
                        if (success == 1) {
                            // sukses mendapat detail daftar
                            JSONArray pendaftaranObj = json
                                    .getJSONArray(TAG_PENDAFTARAN); // JSON Array

                            // get objek daftar pertama dari json array
                            JSONObject pendaftaran = pendaftaranObj.getJSONObject(0);

                            // temukan daftar menggunakan pid
                            txtName = (EditText) findViewById(R.id.inputName);
                            txtEmail = (EditText) findViewById(R.id.inputEmail);
                            txtDesc = (EditText) findViewById(R.id.inputDesc);

                            // tampilkan di edit text
                            txtName.setText(pendaftaran.getString(TAG_NAME));
                            txtEmail.setText(pendaftaran.getString(TAG_EMAIL));
                            txtDesc.setText(pendaftaran.getString(TAG_DESCRIPTION));

                        }else{
                            // pid tidak ditemukan
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

            return null;
        }

        /**
         * jika pekerjaan di background selesai maka hentikan progress yg berjalan
         * **/
        protected void onPostExecute(String file_url) {
            // hentikan progress dialog untuk get
            pDialog.dismiss();
        }
    }

    /**
     * async task untuk menyimpan pendaftaran
     * */
    class SavePendaftaranDetails extends AsyncTask<String, String, String> {

        /**
         * jika proses di background akan berjalan maka tampilkan progress dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(EditBukuTamu.this);
            pDialog.setMessage("Menyimpan data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * menyimpan data
         * */
        protected String doInBackground(String... args) {

            // get pembaharuan data dari edit text yg di input user
            String name = txtName.getText().toString();
            String email = txtEmail.getText().toString();
            String description = txtDesc.getText().toString();

            // buat parameter
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair(TAG_PID, pid));
            params.add(new BasicNameValuePair(TAG_NAME, name));
            params.add(new BasicNameValuePair(TAG_EMAIL, email));
            params.add(new BasicNameValuePair(TAG_DESCRIPTION, description));

            // kirim data pembaharuan melalui http request
            JSONObject json = jsonParser.makeHttpRequest(url_update_pendaftaran,
                    "POST", params);

            // cek tag success json
            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // sukses di perbaharui
                    Intent i = getIntent();
                    // jika sukses maka kirimkan kode 100
                    setResult(100, i);
                    finish();
                } else {
                    // jika tidak maka gagal
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * jika pekerjaan di background selesai maka hentikan progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // hentikan progress dialog untuk menympan data
            pDialog.dismiss();
        }
    }

    /*****************************************************************
     * Background Async Task untuk menghapus data
     * */
    class Deletependaftaran extends AsyncTask<String, String, String> {

        /**
         * sebelum pekerjaan di mulai di background maka jalankan progress dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(EditBukuTamu.this);
            pDialog.setMessage("Penghapusan data...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * hapus data
         * */
        protected String doInBackground(String... args) {

            // cek tag success
            int success;
            try {
                // buat paramater
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("pid", pid));

                // get details data menggunakan http request
                JSONObject json = jsonParser.makeHttpRequest(
                        url_delete_pendaftaran, "POST", params);

                // cek log json response
                Log.d("Hapus Data", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    // data pendaftaran berhasil di hapus
                    // kirimkan kode 100
                    Intent i = getIntent();
                    // jika pendaftaran / entri menuju buku tamu berhasil
                    setResult(100, i);
                    finish();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * jika proses di belakang layar selesai maka hentikan progress dialog yg berjalan
         * **/
        protected void onPostExecute(String file_url) {
            // hentikan progress dialog untuk penghapusan
            pDialog.dismiss();

        }

    }
}

Oke terakhir, file JSONParser yang berfungsi untuk mendapatkan json dari url, dimana class JSONParser ini mendukung pengiriman http POST maupun permintaan GET method.

JSONParser.java
package id.creatorb.bukutamu; 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; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // konstruktor public JSONParser() { } // function megririmkan permintaan melalui url // menggunakan http post ataupun get method public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // buat http reuest try { // cek request method if(method == "POST"){ // request method nya POST // 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(); }else if(method == "GET"){ // request method nya GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); 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(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // parse string ke json objek try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // kembalian string json return jObj; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
   
package id.creatorb.bukutamu;

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;

import android.util.Log;

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// konstruktor
public JSONParser() {

}

// function megririmkan permintaan melalui url
// menggunakan http post ataupun get method
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {

// buat http reuest
try {

// cek request method
if(method == "POST"){
// request method nya POST
// 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();

}else if(method == "GET"){
// request method nya GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse = httpClient.execute(httpGet);
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();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// parse string ke json objek
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// kembalian string json
return jObj;

}
}



Oke,alhamdulillah selesai. Jika alurnya telah anda ikuti step by step, insyallah anda akan bisa membuat CRUD Android dengan MySQL. Ribet ya? nggak kok hanya sedikit lebih banyak kodingan nya aja :v hahahah. Hmm, anyway…berhenti menerka nerka bagaimana kode tersebut berjalan, karena disini saya juga melampirkan video demonya. So happy watching…

Cara membuat aplikasi Android CRUD pada database MySQL

Dan jangan khawatir, jika anda online di warnet dan tidak mempunyai banyak waktu untuk mengikuti tutorial, karena saya juga menyediakan source code nya untuk di pelajari di rumah.

Download Source Code On  MyGithub

Done, Ok dev…mungkin sampai disini dulu tutorial kali ini. Semoga lebih bisa membantu untuk mempermudah dalam mempelajarinya, dan semoga juga saya bisa memberi tutorial lagi di lain waktu, amin.

./creatorb



sumber : http://pondokprogrammer.com/android-crud-mysql/

Tidak ada komentar:

Posting Komentar

Pages