2013-02-12 4 views
0

안녕하세요 저는 MySQL 데이터베이스에서 데이터를 검색하지만 데이터가 표시되지 않는 Android 앱을 개발했습니다. 이것은 내 코드입니다.데이터베이스의 데이터가 표시되지 않습니다.

public class AllStoresFragment extends ListFragment{ 
    private String mClient; 
    private String mBaseUrl="http://192.168.1.5/Flutura/PHP/"; 
    private String mDataUrl=mBaseUrl+"Core/Data/android.data.php"; 
    //private String mAssetsUrl=mBaseUrl+"Assets/"; 
    private ArrayList<String> mStoreDetailsList; 
    private String mRequest="outlets"; 
    private String mLocation="all"; 
    private SharedPreferences myPrefs ; 
    private StoreListItemAdapter mListAdapter; 

    public AllStoresFragment(StoreListItemAdapter listAdapter){ 
     mListAdapter = listAdapter; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     myPrefs = getActivity().getSharedPreferences("myPrefs", Context.MODE_WORLD_READABLE); 
     executeAjaxRequest(); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     /** Setting the multiselect choice mode for the listview */ 
     getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    } 

    private void executeAjaxRequest(){ 
     if(mListAdapter != null){ 
      mListAdapter.clear(); 
     } 
     mClient = myPrefs.getString("client", "all"); 
     String url = mDataUrl+"?client="+mClient+"&request="+mRequest+"&location="+mLocation;  
     Log.v("url",url); 

     AsyncHttpClient httpclient = new AsyncHttpClient(); 
     httpclient.get(url, new AsyncHttpResponseHandler() { 
      @Override 
      public void onSuccess(String response) { 
       setOutletData(response); 
      } 
     }); 
    } 

    private void setOutletData(String response){   
     /** Creating array adapter to set data in ListView using AJAX Data*/ 

     try{    
      ArrayList<StoreDetails> store_details_list = new ArrayList<StoreDetails>(); 
      Log.v("response",response); 
      mStoreDetailsList = Utils.ToArrayList(new JSONArray(response)); 
      Log.v("store_list",mStoreDetailsList.toString()); 

      Iterator<String> i = mStoreDetailsList.iterator();   
      String json_store = ""; 

      //Loop the list 
      while(i.hasNext()){ 
      json_store = i.next(); 
      JSONObject store = new JSONObject(json_store);  

      //Create a StoreDetails object and add it to the ArrayList Of StoreDetails 
      store_details_list.add(new StoreDetails(store));    
      }  
      //Set the data adapter for the List 

      StoreListItemAdapter sla = new StoreListItemAdapter(getActivity() , R.layout.storelist_item , store_details_list); 
      sla.notifyDataSetChanged(); 
      setListAdapter(sla ); 
     } 
     catch(JSONException e){ 
      e.printStackTrace(); 
     } 

    } 
    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub  
     Intent myIntent = new Intent(getActivity(),StoreActivity.class);// getActivity needs to be called since this is a Fragment Class. 
     SharedPreferences myPrefs = getActivity().getApplicationContext().getSharedPreferences("myPrefs",Context.MODE_WORLD_READABLE); 
     SharedPreferences.Editor prefsEditor = myPrefs.edit(); 

     prefsEditor.putString("outlet_details", mStoreDetailsList.get(position)); 
     prefsEditor.commit(); 
     startActivity(myIntent); 
    } 
} 

이것은 내 PHP 코드입니다.

<?php 

//connect to the db 
$user = "root"; 
$pswd = ""; 
$db = "recommendations_db"; 
$host = "localhost"; 
$conn = mysql_connect($host, $user, $pswd); 
mysql_select_db($db); 
$query = "SELECT * FROM outlets"; 
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error()); 

while($row = mysql_fetch_array($result)) 
    { 
    $output[] = $row; 
    } 
echo json_encode($output); 
?> 
+0

헤더 추가 header ('Content-Type : application/json'); 그러나 echo json_encode ($ output) 전에 이것이 문제를 해결하는지 모르겠다. –

답변

0

시도해보십시오.

while($row = mysql_fetch_assoc($result)) 
{ 
    $output[] = $row; 
} 

echo "<pre>"; // this is just test 
print_r($output); // this is just test so after test remove it. 

echo json_encode($output); 

mysql_fetch_assoc()는 키 이름과 배열 그래서, 그들은 더 많은 사람이 읽을 수있는 것입니다.

+0

나는 6 개의 필드를 가지고있다 ... 어떻게 표시 할까 ... –

+0

@JayantShinde는 이제 내 편집 된 코드를 점검하여 이것이 당신을 위해 일할 수 있기를 바란다. . –

+0

ok w8 ill this를 시도해보고 알리십시오 ... –

관련 문제