Selama ini database bawaan android adalah Sqlite Database. Namun bagaimana jika kita memanfaatkan Mysql sebagai database dan PHP Sebagai Server side nya ?
Berikut tutorial koneksi Android ke Mysql dengan menggunakan server PHP.
Pertama buat database dulu di mysql, misalnya database dengan nama android.
Selanjutnya buat tabel dengan nama kontak dengan struktur tabel sebagai berikut :
CREATE TABLE kontak( id_kontak int (2), nama varchar (255), PRIMARY KEY( id_kontak ) );
Lalu isi tabel dengan data sesuai yang diinginkan . Misal nya
Selanjut nya adalah membuat file PHP untuk dikoneksikan ke Mysql.
Buat file php dengan nama db_config.php dan isikan kode berikut :
<?php define('DB_SERVER',"localhost"); define('DB_USER' , "root"); define('DB_PASSWORD',""); define('DB_DATABASE',"android"); ?>
Kode tersebut digunakan untuk komunikasi dengan database mysql. Setting username dan password sesuai dengan konfigurasi mysql anda.
Selanjutnya buat file php dengan nama db_connect.php dan isi sebagai berikut :
<?php class DB_CONNECT{ function __construct(){ $this->connect(); } function __destruct(){ $this->close(); } function connect(){ //require_once __DIR__ .'/db_config.php'; include "db_config.php"; $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die (mysql_error()); $db = mysql_select_db(DB_DATABASE) or die (mysql_error()); return $con; } function close(){ mysql_close(); } } ?>
Selanjutnya buat file php dengan nama bacaKontak.php, file ini digunakan untuk membaca semua data yang ada pada database mysql. isi file bacaKontak.php sebagai berikut :
<?php require_once __DIR__ .'/db_connect.php'; $db = new DB_CONNECT(); $select = mysql_query("SELECT * FROM kontak"); while($value = mysql_fetch_assoc($select)){ $output [] = $value; } print(json_encode($output)); ?>
Nah sekarang tinggal buat file android nya.
Buat project android baru dengan struktur sebagai berikut :
Setelah selesai, maka akan ada file dengan ekstensi .java seperti berikut :
Buka file MainActivity.java dan isi dengan kode berikut :
package com.koneksimysql; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Toast; import android.widget.ArrayAdapter; public class MainActivity extends ListActivity{ String id; String[] nama; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String hasil = null; InputStream is = null; StringBuilder sb = null; try{ HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("http://10.0.2.2/android/bacaKontak.php"); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error Http Connection"); } try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); sb = new StringBuilder(); sb.append(reader.readLine()+"\n"); String line = "0"; while((line = reader.readLine()) != null){ sb.append(line + "\n"); }is.close(); hasil = sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error Converting result"+e.toString()); } JSONArray jArray; try{ jArray = new JSONArray(hasil); JSONObject jObject = null; nama = new String[jArray.length()]; for(int i = 0; i<jArray.length(); i++){ jObject = jArray.getJSONObject(i); nama[i] = jObject.getString("nama"); } }catch(JSONException je){ Toast.makeText(getBaseContext(), "No data Found", Toast.LENGTH_LONG).show(); } catch (ParseException pe){ pe.printStackTrace(); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nama)); ListView lv; lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub } }); } }
Dan terakhir, tambahkan code berikut di AndroidManifest.xml nya .
<uses-permission android:name="android.permission.INTERNET" />
Hasil akhir nya nya sebagai berikut :
Semoga bermanfaat ! 🙂
maaf mas, mau tanya. file phpnya di simpan di direktori xampp/htdocs kah? atau di direktori lain?
Iya di directory xampp/htdocs. Karena di tutorial saya pakek directory tambahan, yaitu folder android. Jadi pemanggilannya http://10.0.2.2/android/namaphp.php
ijin save page as dan copy paste mas…
terimakasih banyak 🙂
salam programer, ari 🙂
Silahkan om 🙂
Maaf jarang buka web. Entar deh update lebih banyak lagi, salam kenal juga 😀
ListActivity nya gak ada :v
Udah tutorial lama itu om, andnroid 4.2. Mungkin kalau android terbaru udah deprecated. Saya belum nyoba android versi barunya 🙂
[…] PHP dan database Mysql. Artikel ini berkaitan erat dengan tutorial saya sebelumnya tentang koneksi android ke mysql. Agar mempermudah pemahaman pembaca dalam tutorial ini, silahkan baca tutorial […]
yang ini HttpPost httpPost = new HttpPost(“http://10.0.2.2/android/bacaKontak.php”); maksudnya apa ya
Manggil URL untuk baca data dengan method POST di mana 10.0.2.2 adalah IP localhost di android
maksudnya ip localhost di android bagaimana ya gan? soalnya ip ini saya rubah ke ip public saya, jadinya aplikasi tertutup sendiri terus,
saya pake android studio, mohon pencerahannya