Android PHP dan MYSQL Database bagian 1

Android PHP dan MYSQL Database bagian 1 - Hallo sahabat Kumpulan Aplikasi Android Tercanggih Pilihan Yang Paling Berguna, Pada Artikel yang anda baca kali ini dengan judul Android PHP dan MYSQL Database bagian 1, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.

Judul : Android PHP dan MYSQL Database bagian 1
link : Android PHP dan MYSQL Database bagian 1

Baca juga


Android PHP dan MYSQL Database bagian 1

Bagaimana aplikasi Android bisa berkomunikasi dengan Mysql database?

Pertanyaan di atas banyak bergentayangan di internet. Jawaban_nya bervariasi sesuai dengan pengalaman orang yang menjawabnya. Di sini saya hanya ingin ikut meramaikan dan ingin melanjutkan percakapan tentang hal tesebut karena menurut saya hal itu adalah sangat penting sebagai basis untuk berkiprah dalam dunia develop aplikasi android.

Banyak developer yang ingin mejawab pertanyaan tsb, tapi jawaban-nya tak ada yang singkat tapi semuanya  panjang dan berliku karena memang develop aplikasi memakan waktu panjang dan dengan jalan yang penuh liku. Itulah indahnya kalau mau jadi developer, selalu ada tantangan setiap saat.
Saya akan mencoba menjelaskan-nya sebisa saya dan sesingkat mungkin. Semoga ada yang lain akan menambahkan-nya.
Untuk menjawab pertanyaan di atas, saya harus membuat sebuah kasus atau skenario untuk sebuah aplikasi yang sangat singkat, sehingga coding-nya nanti juga akan lebih singkat untuk bisa di telusuri.... developing tak ada yang singkat, kawan...

Kasus yang saya pakai sebagai contoh adalah sebuah forum kecil yang sifatnya sbb:
  1. Registrasi dulu sebelum bisa jadi anggota 
  2. Aplikasi akan menolak meregistrasi dengan nama yang sama
  3. Hanya anggota, yang bisa membaca dan bisa menulis komentar
  4. Setelah jadi anggota harus login dulu sebelum bisa membaca komentar
  5. Pasang kotak utk isi username dan password di halaman login
  6. Di halaman login juga ada tombol 'Registrasi' utk yg belum registrasi
  7. Beri peringatan jikalau login dengan username dan password yang salah
  8. Setelah sukses login bawalah anggota ke halaman komentar
  9. Bubuhkan tombol 'Isi Komentar' untuk mengisi komentar
  10. Bubuhkan tempat untuk tulis 'Judul Komentar' dan 'Isi Komentar
  11. Bubuhkan tombol 'Kirim Komentar' untuk bisa kirim komentar 
  12. Beri peringatan jika 'Judul Komentar' dan 'Isi Komentar'  kosong
    Dari daftar tersebut di atas kita bisa mengambil kesimpulan, halaman apa saja yang di butuhkan untuk aplikasi ini.  Di android, sebuah halaman biasanya di representasikan dengan sebuah 'activity' yang cara kerjanya di renda oleh sebuah 'class java'.
    Di lihat dari sifat aplikasi tersebut di atas maka kita akan membutuhkan beberapa halaman atau 'activity atau class, antara lain:

    • Halaman Login
    • Halaman Registrasi
    • Halaman Baca Komentar
    • Halaman Tambah  Komentar
    • Halaman JSON 
    Halaman JSON
    Kita tambahkan halaman JSON (Javascript Object Notation)
    JSON adalah language independent artinya ia di mengerti oleh hampir semua bahasa programan sehingga ia sangat cocok menjadi jembatan antara  bahasa program yang berbeda. JSON-lah yang akan bertanggung jawab agar aplikasi-nya dinamik dan responsive, misalnya memberi peringatan kepada pengguna jikalau mereka masukan password dan username yang salah dll
    Silahkan baca tentang json di http://en.wikipedia.org/wiki/JSON

    Halaman Login
    Halaman login akan ada tempat untuk isi username, password. dan dua buah tombol satunya tombol Login dan yang lain-nya adalah tombol Registrasi.
    Ketika tekan tombol login tanpa password maka aplikasi memberikan peringatan kepada pengguna agar mengisi password dan usernamenya. Demikian juga ketika tekan tombol Registrasi tanpa username dan password.

    Halaman Baca Komentar
    User yang login dengan benar langsung di antar ke halaman Baca Komentar dan pada bagian bawah halaman komentar ada tombol Tambah Komentar agar pengguna bisa ikut berkomentar. Aplikasi akan menolak untuk submit komentar yang kosong dengan memberikan warning.

    Halaman-halaman tersebut (terkecuali JSON) akan di bangun di dua sisi. Di sisi klien akan di bangun menggunakan java(android) dan di sisi server akan di bangun menggunakan PHP. (alasan-nya karena PHP teman baik dengan MYSQL).

    Apa saja yang di perlukan untuk membangun aplikasi seperti ini
    • Server
    • Android dan Eclipse
    • PHP dan Mysql
    Server
    Jikalau sudah ada server bayaran, silahkan atur Mysql database-nya disana. Tapi kalau tak bisa bayar server, saya rekomendasikan untuk download server yang free dari internet untuk di pasang di komputer sendiri. Di internet bergentayangan server seperti WAMP ada juga XAMPP. Silahkan pilih menurut selera masing2. Walaupun sudah ada server bayaran, namun untuk develop ada baiknya install server di komputer sendiri agar semua server side code bisa di coba tanpa harus selalu konek ke internet.
    Saya akan membicarakan tentang server pada kesempatan lain... semoga

    Android dan Eclipse
    Download Android dan Eclipse .. free loh...

    PHP dan Mysql
    Hampir semua server bisa PHP dan Mysql.
    Saya berasumsi bahwa anda membaca tutorial ini karena ingin melihat cara kerja aplikasi android, sehingga saya tidak meng-elaborasi lebih jauh tentang PHP, MYSQL dan yang lain-nya. Tapi kalau ingin membaca PHP dan MYSQL silahkan kesana dahulu dengan tekan link yang sudah saya sediakan di atas.

    Kembali ke daftar sifat-sifat aplikasi di atas...... Halaman pertama yang harus di bangun tentunya adalah halaman 'Login' ...Kode halaman Login ini akan di representasikan dengan dua buah halaman yaitu sebuah halaman di sisi klien dan sebuah halaman di sisi server. Di sisi server saya beri nama login_nya.php  di bangun dengan php, dan di sisi klien dengan nama ClassUtkLogIn.java  di bangun pakai java. Semua server side script dalam hal ini adalah halaman PHP harus di simpan di dalam sebuah folder dengan nama sesuka hati, tapi di dalam contoh disini saya menamakan folder-nya mysql_android.
    Di server XAMPP folder mysql_android tersebut di masukan lagi di dalam folder htdocs, Sedangkan di server lain mungkin di simpan di dalam folder bernama www atau public_html dan lain-lain. Mohon baca petunjuk server-nya

    Tapi... sebelum itu buatlah terlebih dahulu databasenya di server dengan nama tampung_data saya sengaja menamakan_nya demikian karena semua data akan di tampung disana, baik data pengguna maupun data komentarnya.
    Di dalam database tampung_data tersebut, masukan dua buah table, satunya dengan nama 'tempat_komentar' untuk menampung komentar dengan isi sbb:

    CREATE TABLE tempat_komentar
    (
    komentar_id int(11) UNIQUE AUTO_INCREMENT,
    username_nya varchar(64),
    judul_komentar varchar(120),
    isi_komentar varchar(255)
    )

    dan table 'anggota' untuk menampung keterangan tentang anggota sbb:

    CREATE TABLE anggota
    (
    anggota_id int(11) UNIQUE AUTO_INCREMENT,
    username_nya varchar(64) UNIQUE,
    password_nya varchar(120),

    )

    Berikut adalah isi dari login_nya.php yang harus di simpan di server sebagai server side code


     <?php
    //©Vik Sintus Projects
    //pasang halaman konfigurasi_nya.php agar
    //bisa konek
    require("/konfigurasi_nya.php");

    if (!empty($_POST)) {

    if (empty($_POST['username_nya']) || empty($_POST['password_nya'])) {


    // kalau 'username' dan 'password' kosong
    // JSON menjawab agar pengguna tahu apa yg terjadi

    $jawaban_nya["berhasil"] = 0;
    $jawaban_nya["tampilkan_pesan"] = "Masukan NamaUser dan PasswordNya!.";

    // metode die() akan matikan halaman dan tidak
    // mengeksekusi kode2 selanjutnya, dan juga akan
    // memperlihatkan parameter2, yaitu JSON data yang
    // akan di parsing oleh android
    die(json_encode($jawaban_nya));
    }
    // ambil info dari user berdasarkan username.
    $query = "
    SELECT
    anggota_id,
    username_nya,
    password_nya
    FROM anggota
    WHERE
    username_nya = :username
    ";

    $parameter_nya = array(
    ':username' => $_POST['username_nya']
    );

    try {
    $statement_nya = $db->prepare($query);
    $result = $statement_nya->execute($parameter_nya);
    }
    catch (PDOException $ex) {
    // utk percobaan, bisa saja menggunaka metode die();
    //atau pakai cara berikut untuk menampilkan data dari JSON
    $jawaban_nya["berhasil"] = 0;
    $jawaban_nya["tampilkan_pesan"] = "DatabaseNya salah. Di coba lagi yah!";
    die(json_encode($jawaban_nya));

    }

    //bikin satu variable utk priksa kebenaran login dan
    //di inisialisasikan dengan false.
    $validasi_identitas = false;

    //tarik semua parameter pada 'query' di atas dengan
    //metode fetch()
    $row = $statement_nya->fetch();
    if ($row) {
    //kalau passwordnya di encrypt, maka di lakukan di sini tapi
    //saya bukan ahli encrypt, silahkan baca2 tentang encrypt,
    //disini saya hanya berkepentingan utk
    //menjalankan script ini sejajar dengan java (android) sehingga
    //saya hanya membandingkan password yg di input dan
    //password yg ada di database
    if ($_POST['password_nya'] === $row['password_nya']) {
    $login_nya_ok = true;
    }
    }

    // kalau login-nya berhasil, orangnya di antar ke halaman users
    // kalau tidak, tampilkan pesan gagal dan tunjukan form lagi
    if ($login_nya_ok) {
    $jawaban_nya["berhasil"] = 1;
    $jawaban_nya["tampilkan_pesan"] = "LoginNya Berhasil!";
    die(json_encode($jawaban_nya));
    } else {
    $jawaban_nya["berhasil"] = 0;
    $jawaban_nya["tampilkan_pesan"] = "LoginNya Gagal!";
    die(json_encode($jawaban_nya));
    }
    }
    else {
    ?>
    <h1>Login</h1>
    <form action="login_nya.php" method="post">
    Username:<br />
    <input type="text" name="username" placeholder="username" />
    <br /><br />
    Password:<br />
    <input type="password" name="password" placeholder="password" value="" />
    <br /><br />
    <input type="submit" value="Login" />
    </form>
    <a href="registrasi.php">Register</a>
    <?php
    }

    ?>
    Saya sisipkan penjelasan dalam kode di atas, silahkan telusuri... mereka yang jago PHP pasti tidak asing dengan kode di atas
    Di baris pertama ia minta 'require("/konfigurasi_nya.php");' maka berikut adalah isi dari konfigurasi_nya.php
    <?php 
    // ©Vik Sintus Projects
    // 4 variable berikut harus cocok dengan yang ada di database
    $username = "root";
    $password = "";
    $host = "localhost";
    $dbname = "tampung_komentar";

    // pakai utf8 agar databasenya bisa muat banyak jenis karakter seperti
    // huruf dan agka
    // silahkan baca2 tentang utf8 di
    // http://en.wikipedia.org/wiki/UTF-8
    $pakai_utf8 = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

    // bagi mereka yang pintar PHP tentunya tak asing dengan try/catch
    // Metode tersebut di pakai utk menangkap kesalahan pada kode yg
    // bersifat object oriented,
    // pertama di eksekusi dalam 'try' dan kalau memukan kesalahan maka akan
    // berhenti eksekusi dan melompat ke 'catch' dengan sebuah pesan agar
    // pengguna tak garuk2 kepala
    // Silahkan baca2 tentang exceptions di
    // http://us2.php.net/manual/en/language.exceptions.php
    try
    {
    // statement dalam wilayah 'try' ini membukan koneksi ke datbase menggunakan
    // PDO library
    // PDO di design utk menyediakan flexible interface antara PHP dengan
    // banyak jenis database servers.
    // silahkan baca2 tentang PDO di
    // http://us2.php.net/manual/en/class.pdo.php
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $pakai_utf8);
    }
    catch(PDOException $eksepsinya)
    {
    // jika ada kesalahan saat buka koneksi ke database maka
    // akan terperangkap disini dan berhenti eksekusi dan
    // menunjukan pesan (apanya yg salah)
    // Kalau utk produksi mungkin tak perlu output $eksepsinya->getMessage().
    // agar tak mudah di mainkan oleh orang nakal.

    die("Koneksi ke database Gagal: " . $eksepsinya->getMessage());
    }

    // berikut adalah konfigurasi PDO mengeluarkan exception ketika
    // menemukan kesalahan dalam kode, agar bisa di pakai utk
    // try/catch
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // berikut adalah konfigurasi PDO utk melihat barisan data(rows) di
    // dalam database menggunakan 'associative array'
    // maksudnya array akan ada 'string indexes', dimana isi
    // string me-representasikan nama kolom di database .
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    // get_magic_quotes_gpc sudah wafat tapi jaga kemungkinan jikalau
    // ada manusia yg masih pakai PHP tua bangka (PHP 5.3 kebawah) maka
    // kode berikut adalah berguna untuk mengagaglkan magic quotes.
    // baca tentang magic qoutes selengkapnya di:
    // http://php.net/manual/en/security.magicquotes.php
    if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
    {
    function matikan_magic_quotes_nya(&$array)
    {
    foreach($array as &$value)
    {
    if(is_array($value))
    {
    matikan_magic_quotes_nya($value);
    }
    else
    {
    $value = stripslashes($value);
    }
    }
    }

    matikan_magic_quotes_nya($_POST);
    matikan_magic_quotes_nya($_GET);
    matikan_magic_quotes_nya($_COOKIE);
    }

    // berikut utk informasikan web browser bahwa isinya adalah di
    // encoded dengan UTF-8 sehingga content yang di return adalah
    // dalam bentuk utf8 juga
    header('Content-Type: text/html; charset=utf-8');

    // 'sessions' di gunakan utk menyimpan informasi tentang
    // pengunjung dari halaman ke halaman
    // Berbeda dengan 'cookie', sessions menyimpan infromasi di server
    // Namun demikian, dalam banyak kasus 'sessions' masih menggunakan
    // cookies tapi pengunjung juga harus menghidupkan cookie_nya
    // silahkan baca2 tentang cookie di:
    // http://us.php.net/manual/en/book.session.php
    session_start();

    ?>

    Halaman untuk login dari sisi server sudah selesai, berikut adalah halaman login dari sisi klien yaitu dari aplikasi android dengan nama ClassUtkLogIn.java


    package com.vik_sintus.projects.koneksiandroidmysql;

    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.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.preference.PreferenceManager;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class ClassUtkLogIn extends Activity implements OnClickListener {

    private EditText isiNamaUser, isiPassword;
    private Button tombolLogin, tombolRegistrasi;

    // utk progress bar_nya
    private ProgressDialog progressBarNya;

    // pasang class JSON parser
    ClassJSONParser classJsonParser = new ClassJSONParser();

    // lokasi script utk login: bernama login_nya.php

    // biasanya localhost :
    // tapi untuk testing, lebih baik pakai alamat IP
    // kalau tak tahu IP-nya di windows silahkan buka
    // command prompt lalu ketik ipconfig
    // lihat IPv4 Address
    // kalau di mac ketik ifconfig dan cari ip dengan en0 atau en1
    // private static final String LINK_UNTUK_LOGIN =
    // "http://xxx.xxx.x.x.xxx/folderNya/login_nya.php";

    // kalau cobe di emulator:
    private static final String LINK_UNTUK_LOGIN = "http://192.168.1.102/mysql_android/login_nya.php";

    // coba di server jauh(remote), server bayaran:
    // private static final String LINK_UNTUK_LOGIN =
    // http://www.namaWeb.com/folderNya/login_nya.php;

    // identitas elemen yg perlu di
    // jawab oleh JSON dari php script:
    private static final String TAG_SUKSES = "berhasil";
    private static final String TAG_PESAN = "tampilkan_pesan";

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.tampilan_login);

    // utk kotak input yg perlu di di isi pengguna
    isiNamaUser = (EditText) findViewById(R.id.username);
    isiPassword = (EditText) findViewById(R.id.password);

    // utk tombol
    tombolLogin = (Button) findViewById(R.id.login);
    tombolRegistrasi = (Button) findViewById(R.id.register);

    // agar tombol bisa di klik
    tombolLogin.setOnClickListener(this);
    tombolRegistrasi.setOnClickListener(this);

    }

    @Override
    public void onClick(View apaYgDiKlik) {

    switch (apaYgDiKlik.getId()) {
    case R.id.login:
    new MencobaLogin().execute();
    break;
    case R.id.register:
    Intent i = new Intent(this, ClassRegistrasi.class);
    startActivity(i);
    break;

    default:
    break;
    }
    }

    class MencobaLogin extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    progressBarNya = new ProgressDialog(ClassUtkLogIn.this);
    progressBarNya.setMessage("Mencoba login...");
    progressBarNya.setIndeterminate(false);
    progressBarNya.setCancelable(true);
    progressBarNya.show();
    }

    @Override
    protected String doInBackground(String... args) {

    // jika sukses
    int jikaSukses;
    String namaUser = isiNamaUser.getText().toString();
    String password = isiPassword.getText().toString();
    try {
    // menyusun parameternya (disini parameternya
    // cuma 2 (username dan password))
    List<NameValuePair> namaDanPassword = new ArrayList<NameValuePair>();
    namaDanPassword.add(new BasicNameValuePair("username_nya", namaUser));
    namaDanPassword.add(new BasicNameValuePair("password_nya", password));

    Log.d("requestNya!", "dimulai");
    // utk melengkapi proses login, maka
    // perlu membuatHttpRequst ke server
    JSONObject jsonObjectNya = classJsonParser.membuatHttpRequest(LINK_UNTUK_LOGIN, "POST",
    namaDanPassword);

    // priksa log jawaban dari JSON
    Log.d("Coba login", jsonObjectNya.toString());

    // apa kata JSON tentang TAG_SUKSES
    jikaSukses = jsonObjectNya.getInt(TAG_SUKSES);
    if (jikaSukses == 1) {
    Log.d("Login_nya Sukses!", jsonObjectNya.toString());
    // simpan data yg di masukan pengguna
    SharedPreferences sharedPrefNya = PreferenceManager
    .getDefaultSharedPreferences(ClassUtkLogIn.this);
    Editor editorNya = sharedPrefNya.edit();
    editorNya.putString("username_nya", namaUser);
    editorNya.commit();

    Intent intentNya = new Intent(ClassUtkLogIn.this, ClassBacaKomentar.class);
    finish();
    startActivity(intentNya);
    return jsonObjectNya.getString(TAG_PESAN);
    } else {
    Log.d("Login_nya Gagal!", jsonObjectNya.getString(TAG_PESAN));
    return jsonObjectNya.getString(TAG_PESAN);
    }
    } catch (JSONException e) {
    e.printStackTrace();
    }

    return null;

    }

    protected void onPostExecute(String urlFileNya) {
    // kalau sudah selesai di gunakan, matikanlah
    // progressbar_nya dengan metode dismiss();
    progressBarNya.dismiss();
    if (urlFileNya != null) {
    Toast.makeText(ClassUtkLogIn.this, urlFileNya, Toast.LENGTH_LONG).show();
    }

    }

    }

    }


    Dalam kode java di atas di minta tampang atau user interface(UI) dari halaman login di setContentView(R.layout.tampilan_login);
    Berikut adalah isi dari tampilan_login.xml
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
    android:id="@+id/register"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/login"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/login"
    android:layout_marginBottom="25dp"
    android:text="Registrasi" />

    <Button
    android:id="@+id/login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/register"
    android:layout_alignLeft="@+id/password"
    android:layout_alignRight="@+id/password"
    android:text="Login" />

    <EditText
    android:id="@+id/password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/login"
    android:layout_centerHorizontal="true"
    android:ems="10"
    android:inputType="textPassword" >

    <requestFocus />
    </EditText>

    <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="17dp"
    android:gravity="center"
    android:text="Belajar Android PHP Mysql"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textStyle="bold" />

    <ImageView
    android:contentDescription="Lodokn One Cicingn Pe'ang"
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView2"
    android:layout_centerHorizontal="true"
    android:src="@drawable/lodok" />

    <TextView
    android:id="@+id/TextView01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/password"
    android:layout_alignLeft="@+id/password"
    android:layout_marginLeft="22dp"
    android:text="PasswordNya" />

    <EditText
    android:inputType="text"
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/TextView01"
    android:layout_centerHorizontal="true"
    android:ems="10" />

    <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/TextView01"
    android:layout_centerVertical="true"
    android:text="NamaUserNya" />

    </RelativeLayout>


    Berikut adalah tampilan halaman Login
    Halaman Login
    Ketika user berhasil login maka bawalah dia ke halaman komentar agar bisa baca komentar, jadi... tujuan pembuatan halaman Login ini bukan saja untuk Login tapi juga memiliki kemampuan untuk mengantar user ke halaman lain.  Didalam bahasa program java dan atau android hal itu di lakukan dengan class Intent. Perhatikan kode pada ClassUtkLogIn.java dan lihat
    Intent intentNya = new Intent(ClassUtkLogIn.this, ClassBacaKomentar.class);
    finish();
    startActivity(intentNya);
      intentNya apa? Kode di antas menunjukan bahwa intentNya adalah untuk buka halaman Login dan juga buka halaman Baca Komentar ... Dengan demikian kini saatnya kita membuat class untuk baca komentar yang saya beri nama ClassBacaKomentar.java.
    Tetapi... oleh karena halaman ini sudah terlalu panjang maka saya akan memulai ClassBacaKomentar pada post baru... silahkan baca di http://belajar-android-indonesia.blogspot.com.au/2013/10/android-php-dan-mysql-database-bagian-2.html


    Demikianlah Artikel Android PHP dan MYSQL Database bagian 1

    Sekianlah artikel Android PHP dan MYSQL Database bagian 1 kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.

    Anda sekarang membaca artikel Android PHP dan MYSQL Database bagian 1 dengan alamat link https://aplikasijalantikus.blogspot.com/2013/10/android-php-dan-mysql-database-bagian-1.html

    0 Response to "Android PHP dan MYSQL Database bagian 1"

    Posting Komentar