php - Can't display image in listview from database mysql -
i display image in listview android mysql database using php, json image can't displayed. link_image should show location of image not display valid location. please me. thank you
status.php <?php // array json response $response = array(); // include file koneksi.php include_once("connect.php"); $query = mysql_query("select * status order id_status desc"); if (mysql_num_rows($query) > 0) { $response["data_status"] = array(); while($baris = mysql_fetch_array ($query)) { $id_status=$baris['id_status']; $status=$baris['status']; $id1=$baris['id_user']; $id2=$baris['id_user_tujuan']; $tanggal=$baris['tgl']; $awalan = substr($id1, 0,2); $awalan2 = substr($id2, 0,2); switch($awalan) { case 'ad': $name=mysql_query("select * admin id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($name)) { $nama2= $baris2['nama']; } break; case 'al': $name=mysql_query("select * alumni id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($name)) { $name2= $baris2['name']; $link_image=$baris2['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); $foto1 = mysql_fetch_array ($query_foto1); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnisd/img/default.png'; } else { $image = "http://localhost/portalalumnisd/photo/".$baris2['foto']; } } break; case 'pd': $nama=mysql_query("select * admin id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($nama)) { $nama2= $baris2['nama']; } break; case 'pl': $nama=mysql_query("select * alumni id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($nama)) { $nama2= $baris2['nama']; $link_image=$baris2['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); $foto1 = mysql_fetch_array ($query_foto1); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnismp/img/default.png'; } else { $image = "http://localhost/portalalumnismp/photo/".$baris2['foto']; } } break; case 'md': $nama=mysql_query("select * admin id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($nama)) { $nama2= $baris2['nama']; } break; case 'ml': $nama=mysql_query("select * alumni id_user = '$id1'"); // echo $nama; while($baris2 = mysql_fetch_array ($nama)) { //$data_status["nama_alumni"] = stripslashes($baris2["nama"]); $nama2= $baris2['nama']; //$data_status["nama_alumni"] = $nama2; $link_image=$baris2['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); $foto1 = mysql_fetch_array ($query_foto1); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnisma/img/default.png'; } else { $image = "http://localhost/portalalumnisma/photo/".$baris2['foto']; } } break; } switch($awalan2) { case 'ad': $nama_tujuan=mysql_query("select * admin id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { $nama3= $baris_nama1['nama']; } break; case 'al': $nama_tujuan=mysql_query("select * alumni id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { //$nama3= $baris_nama1['nama']; //$data_status["nama_alumni"] = $nama2; $nama3= $baris_nama1['nama']; //$data_status["nama_alumni_tujuan"] = $nama3; $link_image=$baris_nama1['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnisd/img/default.png'; } else { $image = "http://localhost/portalalumnisd/photo/".$baris2['foto']; } } break; case 'pd': $nama_tujuan=mysql_query("select * admin id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { $nama3= $baris_nama1['nama']; } break; case 'pl': $nama_tujuan=mysql_query("select * alumni id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { $nama3= $baris_nama1['nama']; $link_image=$baris_nama1['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); $foto1 = mysql_fetch_array ($query_foto1); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnismp/img/default.png'; } else { $image = "http://localhost/portalalumnismp/photo/".$baris2['foto']; } } break; case 'md': $nama_tujuan=mysql_query("select * admin id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { $nama3= $baris_nama1['nama']; } break; case 'ml': $nama_tujuan=mysql_query("select * alumni id_user = '$id2'"); // echo $nama; while($baris_nama1 = mysql_fetch_array ($nama_tujuan)) { $nama3= $baris_nama1['nama']; $link_image=$baris_nama1['foto']; $query_foto1 = mysql_query("select foto alumni foto = '$link_image'"); $foto1 = mysql_fetch_array ($query_foto1); if($foto1 == "belum upload") { $image = 'http://localhost/portalalumnisma/img/default.png'; } else { $image = "http://localhost/portalalumnisma/photo/".$baris2['foto']; } } break; } $jum=mysql_query("select * komen id_status='$id_status'"); $total= mysql_num_rows($jum); if($id1==$id2){ $data_status["nama_alumni"] = $nama2; $data_status["link_image"] = $image; }else if($id1!=$id2){ $data_status["nama_alumni"] = $nama2; $data_status["nama_alumni_tujuan"] = $nama3; $data_status["link_image"] = $image; } // temp user array $data_status = array(); $data_status["id_user"] = $baris["id_user"]; $data_status["id_status"] = $baris["id_status"]; $data_status["id_user_tujuan"] = $baris["id_user_tujuan"]; $data_status["status"] = stripslashes($baris["status"]); $data_status["date"] = stripslashes($baris["tgl"]); $data_status["jml"] = $total; // menampilkan hasil query dalam bentuk array array_push($response["data_status"], $data_status); } // success $response["success"] = 1; // echoing json response echo json_encode($response); }else { // tidak ada data $response["success"] = 0; $response["message"] = "tidak ada data"; // echoing json response echo json_encode($response); } ?>
display json
{"data_status":[{"nama_alumni":"susa","link_image":"http:\/\/localhost\/portalalumnismp\/photo\/","id_user":"plsusa@mail.com","id_status":"40","id_user_tujuan":"plsusa@mail.com","status":"ko","date":"april 2, 2014, 11:00 pm","jml":0,"nama_alumni_tujuan":"cumin"},{"nama_alumni":"susa","link_image":"http:\/\/localhost\/portalalumnismp\/photo\/","id_user":"plsusa@mail.com","id_status":"36","id_user_tujuan":"plsusa@mail.com","status":"dfdsg","date":"april 2, 2014, 9:19 pm","jml":0,"nama_alumni_tujuan":"cumin"},{"nama_alumni":"cumin","link_image":"http:\/\/localhost\/portalalumnisd\/photo\/","id_user":"altest@mail.com","id_status":"35","id_user_tujuan":"alcandramarlina@ymail.com","status":"hhg","date":"april 2, 2014, 2:49 pm","jml":0,"nama_alumni_tujuan":"candra kasih"},{"nama_alumni":"cumin","link_image":"http:\/\/localhost\/portalalumnisd\/photo\/","id_user":"altest@mail.com","id_status":"33","id_user_tujuan":"alcandra.ratri@gmail.com","status":"","date":"april 2, 2014, 2:41 pm","jml":1,"nama_alumni_tujuan":"kasih"},{"nama_alumni":"cumin","link_image":"http:\/\/localhost\/portalalumnisd\/photo\/","id_user":"altest@mail.com","id_status":"29","id_user_tujuan":"alcandramarlina@ymail.com","status":"ayoo","date":"march 22, 2014, 6:49 am","jml":0,"nama_alumni_tujuan":"candra kasih"},{"nama_alumni":"kasih","link_image":"http:\/\/localhost\/portalalumnisd\/photo\/","id_user":"alcandra.ratri@gmail.com","id_status":"13","id_user_tujuan":"alcandra.ratri@gmail.com","status":"retertert","date":"march 5, 2014, 2:06 pm","jml":0,"nama_alumni_tujuan":"candra kasih"}],"success":1}
this code app in android :
import java.util.arraylist; import java.util.hashmap; 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 com.portalalumni.loginactivity.userlogintask; import android.app.activity; import android.app.fragment; import android.app.progressdialog; import android.app.searchmanager; import android.content.context; import android.content.intent; import android.content.res.configuration; import android.database.cursor; import android.os.asynctask; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.view.gravitycompat; import android.support.v4.widget.drawerlayout; import android.util.log; import android.view.layoutinflater; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.listview; import android.widget.searchview; import android.widget.textview; import android.widget.toast; public class mainactivity extends activity { private listview mdrawerlist; private drawerlayout mdrawer; private customactionbardrawertoggle mdrawertoggle; private string[] menuitems; private arraylist<nsmenuitemmodel> nsmenuitemmodel; sessionmanager session; // progress dialog private progressdialog pdialog; // creating json parser object jsonparser jparser = new jsonparser(); arraylist<hashmap<string, string>> datastatus; // url private static string url_data_status = "http://10.0.2.2/alumni/status.php"; // json node names public static final string tag_success = "success"; public static final string tag_data_status = "data_status"; public static final string tag_id_user = "id_user"; public static final string tag_id_status = "id_status"; public static final string tag_id_user_tujuan = "id_user_tujuan"; public static final string tag_date = "date"; public static final string tag_nama_alumni = "nama_alumni"; public static final string tag_nama_alumni_tujuan = "nama_alumni_tujuan"; //public static final string tag_nama_alumni_tujuan3 = "nama_alumni_tujuan"; public static final string tag_status = "status"; public static final string tag_total = "jml"; public static final string tag_link_image = "link_image"; public static final string tag_link_image1 = "link_image1"; // daftar_rs jsonarray jsonarray data_status = null; listview list; string id_user,email,success; liststatus adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); session = new sessionmanager(getapplicationcontext()); toast.maketext(getapplicationcontext(), "user login status: " + session.isloggedin(), toast.length_long) .show(); session.checklogin(); //hashmap login hashmap<string, string> user = session.getuserdetails(); email = user.get(sessionmanager.key_email); id_user = user.get(sessionmanager.key_iduser); // hashmap listview datastatus = new arraylist<hashmap<string,string>>(); // loading daftar rumah sakit in background thread new loadstatusactivity().execute(); // listview list = (listview) findviewbyid(r.id.list); list.setadapter(new liststatus(this, datastatus)); // react user clicks on item list.setonitemclicklistener(new adapterview.onitemclicklistener() { public void onitemclick(adapterview<?> parentadapter, view view, int position, long id) { hashmap<string, string> selecteditem = datastatus.get(position); //to-do data itemdetails getter // selecteditem.get() // send data using intent when opening activity intent intent = new intent(mainactivity.this, commentactivity.class); intent.putextra("id_status",selecteditem.get(tag_id_status)); startactivity(intent); } }); // enable actionbar app icon behave action toggle nav drawer getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); mdrawer = (drawerlayout) findviewbyid(r.id.drawer_layout); // set custom shadow overlays main content when drawer // opens mdrawer.setdrawershadow(r.drawable.drawer_shadow, gravitycompat.start); _initmenu(); mdrawertoggle = new customactionbardrawertoggle(this, mdrawer); mdrawer.setdrawerlistener(mdrawertoggle); } private void _initmenu() { nsmenuadapter madapter = new nsmenuadapter(this); // add first block menuitems = getresources().getstringarray( r.array.menu); string[] menuitemsicon = getresources().getstringarray( r.array.menu_items_icon); nsmenuitemmodel = new arraylist<nsmenuitemmodel>(); // adding nav drawer items array nsmenuitemmodel.add(new nsmenuitemmodel(menuitems[0], menuitemsicon.length)); nsmenuitemmodel.add(new nsmenuitemmodel(menuitems[1], menuitemsicon.length)); nsmenuitemmodel.add(new nsmenuitemmodel(menuitems[2], menuitemsicon.length)); nsmenuitemmodel.add(new nsmenuitemmodel(menuitems[2], menuitemsicon.length)); int res = 0; (string item : menuitems) { int id_title = getresources().getidentifier(item, "string", this.getpackagename()); int id_icon = getresources().getidentifier(menuitemsicon[res], "drawable", this.getpackagename()); nsmenuitemmodel mitem = new nsmenuitemmodel(id_title, id_icon); //if (res==1) mitem.counter=12; //it example... //if (res==3) mitem.counter=3; //it example... madapter.additem(mitem); res++; } mdrawerlist = (listview) findviewbyid(r.id.drawer); if (mdrawerlist != null) mdrawerlist.setadapter(madapter); mdrawerlist.setonitemclicklistener(new draweritemclicklistener()); } @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); // sync toggle state after onrestoreinstancestate has occurred. mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); mdrawertoggle.onconfigurationchanged(newconfig); } @override public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.main, menu); return super.oncreateoptionsmenu(menu); } /* called whenever call invalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) { // if nav drawer open, hide action items related content view boolean draweropen = mdrawer.isdraweropen(mdrawerlist); menu.finditem(r.id.action_search).setvisible(!draweropen); menu.finditem(r.id.action_new_status).setvisible(!draweropen); return super.onprepareoptionsmenu(menu); } @override public boolean onoptionsitemselected(menuitem item) { /* * action bar home/up should open or close drawer. * actionbardrawertoggle take care of this. */ if (mdrawertoggle.onoptionsitemselected(item)) { return true; } // handle action bar actions click switch (item.getitemid()) { case r.id.action_search: search(); return true; case r.id.action_new_status: newstatus(); return true; default: return super.onoptionsitemselected(item); } } private void newstatus() { // todo auto-generated method stub intent = null; = new intent(mainactivity.this, newstatusactivity.class); startactivity(i); } private void search() { // todo auto-generated method stub intent = null; = new intent(mainactivity.this, searchalumniactivity.class); startactivity(i); } private void profile() { // todo auto-generated method stub intent = null; = new intent(mainactivity.this, profileactivity.class); startactivity(i); } private void home() { // todo auto-generated method stub intent = null; = new intent(mainactivity.this, mainactivity.class); startactivity(i); } private void inbox() { // todo auto-generated method stub intent = null; = new intent(mainactivity.this, inboxactivity.class); startactivity(i); } private void logout() { // todo auto-generated method stub session.logoutuser(); finish(); } private class customactionbardrawertoggle extends actionbardrawertoggle { public customactionbardrawertoggle(activity mactivity,drawerlayout mdrawerlayout){ super( mactivity, mdrawerlayout, r.drawable.ic_drawer, r.string.menu_open, r.string.menu_close); } @override public void ondrawerclosed(view view) { getactionbar().settitle(getstring(r.string.menu_close)); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } @override public void ondraweropened(view drawerview) { getactionbar().settitle(getstring(r.string.menu_open)); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } } private class draweritemclicklistener implements listview.onitemclicklistener { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // highlight selected item, update title, , close drawer // update selected item , title, close drawer mdrawerlist.setitemchecked(position, true); switch (position) { case 0: profile(); break; case 1: home(); break; case 2: inbox(); break; case 3: logout(); break; default: break; } mdrawer.closedrawer(mdrawerlist); } } public static void unbinddrawables(view view) { if (view != null) { if (view.getbackground() != null) { view.getbackground().setcallback(null); } if (view instanceof viewgroup) { (int = 0; < ((viewgroup) view).getchildcount(); i++) { unbinddrawables(((viewgroup) view).getchildat(i)); } try { ((viewgroup) view).removeallviews(); } catch (unsupportedoperationexception e) { // no problem, nothing here } } } } /*** updating parsed json data listview * */ public void setlistviewadapter(arraylist<hashmap<string, string>> status) { adapter = new liststatus(this, status); list.setadapter(adapter); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode,data); // if result code 100 if (resultcode == 100) { // if result code 100 received // means user edited/deleted record // reload screen again intent intent = getintent(); finish(); startactivity(intent); } } /*** background async task load record data making http request * */ class loadstatusactivity extends asynctask<string, string, string> { /*** before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(mainactivity.this); pdialog.setmessage("loading..."); pdialog.setindeterminate(false); pdialog.setcancelable(false); pdialog.show(); } /*** getting record data url * */ protected string doinbackground(string... args) { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); // getting json string url jsonobject json = jparser.makehttprequest(url_data_status, "get", params); // check log cat json reponse log.d("status: ", json.tostring()); try { // checking success tag int success = json.getint(tag_success); if (success == 1) { // ada record data (success = 1) // getting array of data_alumni data_status = json.getjsonarray(tag_data_status); // looping through data_alumni (int = 0; < data_status.length(); i++) { jsonobject c = data_status.getjsonobject(i); // storing each json item in variable string id_user = c.getstring(tag_id_user); string id_status = c.getstring(tag_id_status); string id_user_tujuan = c.getstring(tag_id_user); string date = c.getstring(tag_date); string jml = c.getstring(tag_total); string nama_alumni = c.getstring(tag_nama_alumni); string nama_alumni_tujuan = c.getstring(tag_nama_alumni_tujuan); //string nama_alumni_tujuan3 = c.getstring(tag_nama_alumni_tujuan3); string status = c.getstring(tag_status); string link_image = c.getstring(tag_link_image); string link_image1 = c.getstring(tag_link_image1); // creating new hashmap hashmap<string, string> map = new hashmap<string,string>(); // adding each child node hashmap key => value map.put(tag_id_user, id_user); map.put(tag_id_status, id_status); map.put(tag_id_user_tujuan, id_user_tujuan); map.put(tag_date, date); map.put(tag_total, jml); map.put(tag_nama_alumni, nama_alumni); map.put(tag_nama_alumni_tujuan, nama_alumni_tujuan); //map.put(tag_nama_alumni_tujuan3, nama_alumni_tujuan3); map.put(tag_status, status); map.put(tag_link_image, link_image); map.put(tag_link_image1, link_image1); // adding hashlist arraylist datastatus.add(map); } } else { // tidak ada record data (success = 0) super.oncancelled(); } } catch (jsonexception e) { e.printstacktrace(); } return null; } /*** after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog after getting record data alumni pdialog.dismiss(); // updating ui background thread runonuithread(new runnable() { public void run() { // updating listview setlistviewadapter(datastatus); } }); } } /**@override public void onbackpressed() { android.os.process.killprocess(android.os.process.mypid()); system.exit(1); } **/ }
according json, image's url: http://localhost/portalalumnismp/photo/
. referring localhost, work on pc (assuming web server). not work on android device though.
localhost refers current device - i.e. when open via desktop browse looks image on pc (and indeed there). when open via smartphone looks image on gsm - not pc. can't find it.
you need publish web application somewhere - either host on own web server or use hosting provider / cloud service. refer images via domain name instead of "localhost".
Comments
Post a Comment