Dalam tutorial kali ini kita akan membuat listview di Android dengan menggunakan database MySQL dan input data menggunakan PHP.
untuk menampilkan data yang diinput pada form php, maka kita menggunakan format JSON untuk mengirim data dengan menggunakan alamat http://10.0.2.2/nama_folder.
baiklah langsung saja kita mulai yaitu :
Langkah pertama :
kita buat database untuk menyimpan data dengan structure sbb :
Langkah kedua :
kita buat file koneksi.php
<?php //Koneksi ke database $conn = mysql_connect("localhost","root",""); $db = mysql_select_db("db_wisatasulsel"); ?>kita buat form inputdata .php
<!DOCTYPE html> <html> <head> <title>Input Data</title> </head> <body> <form action="simpandata.php" method="post" enctype="multipart/form-data" name="FMHS"> <table width="452" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#669900"> <tr> <td height="40" align="center" bgcolor="#669900"><strong>ENTRY DATA</strong></td> </tr> <tr> <td bgcolor="#FFFFFF"><table width="452" border="0" align="center" cellpadding="5" cellspacing="0"> <tr><td width="113">Nama</td><td width="11">:</td> <td width="237"><input name="nama_wisata" type="text" id="nama_wisata" size="40" ></td> </tr> <tr><td width="113">Deskripsi</td><td width="11">:</td> <td><textarea rows="5" cols="30" name="deskripsi" id="deskripsi"></textarea></td> </tr> <tr><td width="113">Latitude</td><td width="11">:</td> <td width="237"><input name="latitude" type="text" id="latitude" size="40" ></td> </tr> <tr><td width="113">Longitude</td><td width="11">:</td> <td width="237"><input name="longitude" type="text" id="longitude" size="40" ></td> </tr> <tr><td>Gambar</td><td>:</td> <td><input type="file" name="gambar" id="gambar" size="26"></td> </tr> <tr><td colspan="3" align="center"> <input name="fok" type="submit" id="fok" value="OK" class="tombol"> <input name="fulang" type="reset" id="fulang" value="Ulangi" class="tombol"></td> </tr> <tr> <td><a href="daftar_wisata.php">Daftar Data</a></td></tr> </table></td> </tr> </table> </form> </body> </html>
form simpandata.php
<?php include "koneksi.php"; $nama_wisata = $_POST['nama_wisata']; $deskripsi = $_POST['deskripsi']; $latitude = $_POST['latitude']; $longitude = $_POST['longitude']; $gambar=$_FILES["gambar"]["tmp_name"]; if (empty($nama_wisata)){ die ('Nama tidak boleh kosong'); }else if (empty ($deskripsi)){ die ('Deskripsi tidak boleh kosong'); }else if (empty ($latitude)){ die ('Latitude tidak boleh kosong'); }else if (empty ($longitude)){ die ('Longitude tidak boleh kosong'); }else if (empty ($gambar)){ die ('Gambar tidak boleh kosong'); }else { $cekdata="SELECT nama_wisata FROM daftar WHERE nama_wisata='$nama_wisata'"; $ada=mysql_query($cekdata) or die(mysql_error()); if(mysql_num_rows($ada)>0){ die ('Nama wisata telah terdaftar'); } else { if (!empty($_FILES["gambar"]["tmp_name"])) { $namafolder="gambar/"; //tempat menyimpan file $jenis_gambar=$_FILES['gambar']['type']; if($jenis_gambar=="image/jpeg" || $jenis_gambar=="image/jpg" || $jenis_gambar=="image/gif" || $jenis_gambar=="image/png") { $gambar = $namafolder.basename($_FILES['gambar']['name']); if (!move_uploaded_file($_FILES['gambar']['tmp_name'], $gambar)) { die("Gambar gagal dikirim"); } } else { die ('Jenis file tidak sesuai'); } } //end if cek file upload mysql_query("insert into daftar (id_wisata,nama_wisata,deskripsi,gambar,latitude,longitude) " . "values('','$nama_wisata','$deskripsi','$gambar','$latitude','$longitude')") or die (mysql_error()); print"<script>alert('Berhasil disimpan');location = 'daftar.php';</script>"; } //end if terdaftar } ?>
kemudian kita buat daftar_wisata.php
<?php $link = mysql_connect('localhost', 'root', '') or die('Cannot connect to the DB'); mysql_select_db('db_wisatasulsel', $link) or die('Cannot select the DB'); /* grab the posts from the db */ $query = "SELECT nama_wisata, latitude, longitude FROM daftar"; $result = mysql_query($query, $link) or die('Errorquery: '.$query); $rows = array(); while ($r = mysql_fetch_assoc($result)) { $rows[] = $r; } $data = "{wisata:".json_encode($rows)."}"; echo $data; ?>
Langkah ketiga :
kita buat project androidnya yaitu untuk bagian layout
list_wisata.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawSelectorOnTop="false"/> <TextView android:id="@id/android:empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="No data" /> </LinearLayout>
list_item.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:layout_gravity="right" android:orientation="vertical" android:padding="7dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/nama_wisata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="nama_wisata" android:textAppearance="?android:attr/textAppearanceMedium" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:src="@drawable/arrow" /> </RelativeLayout> </LinearLayout>
kemudian kita buat class dengan format java
JSONfunctions.java
public class JSONfunctions { public static JSONObject getJSONfromURL(String url) { InputStream is = null; String result = ""; JSONObject jArray = null; // http post try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection " + e.toString()); } // convert response to string 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(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result " + e.toString()); } try { jArray = new JSONObject(result); } catch (JSONException e) { Log.e("log_tag", "Error parsing data " + e.toString()); } return jArray; } }
Wisata_List.java
public class Wisata_List extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_wisata); ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); JSONObject json = JSONfunctions .getJSONfromURL("http://10.0.2.2/wisata/daftar_wisata.php"); try { JSONArray wisata = json.getJSONArray("wisata"); for (int i = 0; i < wisata.length(); i++) { HashMap<String, String> map = new HashMap<String, String>(); JSONObject jsonobj = wisata.getJSONObject(i); // map.put("id_wisata", jsonobj.getString("id_wisata")); map.put("nama_wisata", jsonobj.getString("nama_wisata")); mylist.add(map); } } catch (JSONException e) { Log.e("log_tag", "Error parsing data " + e.toString()); } ListAdapter adapter = new SimpleAdapter(this, mylist, R.layout.list_item, new String[] { "nama_wisata" }, new int[] { R.id.nama_wisata }); setListAdapter(adapter); final ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @SuppressWarnings("unchecked") HashMap<String, String> o = (HashMap<String, String>) lv .getItemAtPosition(position); Toast.makeText(Wisata_List.this, o.get("nama_wisata"), Toast.LENGTH_SHORT).show(); } }); } }
pada bagian AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bas.belajarlistdatabase" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.bas.belajarlistdatabase.Wisata_List" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Langkah keempat : Jalankan aplikasinya
ga lengkap nih tutorial yg ini sama yg buat listview dari database. padahal mau belajar, jadi ga bisa deh :(
ReplyDelete(c) (c) (c)
Deletebanyak tutorial lain mbak silahkan banyak referensi dari om GOOGLE......
gan punya saya kok gambarnya tidak bisa diupload ya
ReplyDeletelocation = 'daftar.php';
ReplyDeletedaftar.php ini yg mana ya codingnya gan?
gan mau nanya, ngakses datanya apa harus terhubung internet misal aplikasi tidak bisa berjalan di emulator?
ReplyDeleteiya untuk menampilkan data pada android harus konek internet
Delete