2016-01-20 69 views
0

我是android編程新手,現在我無法根據登錄到應用的用戶名從mysqlphpmyadmin檢索數據。我有一張名爲booking的表格,其中包含所有用戶的詳細信息。現在我想從數據庫中檢索一個特定用戶的所有細節。我怎麼做?基於用戶名檢索android上的json數據

bookinglist.java

public class bookinglist extends ArrayAdapter<String> { 
private String[] sportcenter_name; 
private static String[] facility_name; 
private static String[] date; 
private static String[] start_time; 
private static String[] end_time; 
private Activity context; 

public bookinglist(Activity context, String[] sportcenter_name, String[] facility_name, String[] date, String[] start_time, String[] end_time) { 
    super(context, R.layout.list_item, sportcenter_name); 
    this.context = context; 
    this.sportcenter_name = sportcenter_name; 
    this.facility_name = facility_name; 
    this.date = date; 
    this.start_time = start_time; 
    this.end_time = end_time; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View listViewItem = inflater.inflate(R.layout.list_booking, null, true); 
    TextView textViewspname = (TextView) listViewItem.findViewById(R.id.textViewspname); 
    TextView textViewFacility = (TextView) listViewItem.findViewById(R.id.textViewFacility); 
    TextView textViewdate = (TextView) listViewItem.findViewById(R.id.textViewdate); 
    TextView textViewstarttime = (TextView) listViewItem.findViewById(R.id.textViewstarttime); 
    TextView textViewendtime = (TextView) listViewItem.findViewById(R.id.textViewendtime); 

    textViewspname.setText(sportcenter_name[position]); 
    textViewFacility.setText(facility_name[position]); 
    textViewdate.setText(date[position]); 
    textViewstarttime.setText(start_time[position]); 
    textViewendtime.setText(end_time[position]); 

    return listViewItem; 
} 
} 

bookiglistJSON.java

public class bookinglistJSON { 
public static String[] sportcenter_name; 
public static String[] facility_name; 
public static String[] date; 
public static String[] start_time; 
public static String[] end_time; 

public static final String JSON_ARRAY = "result"; 
public static final String KEY_Sportcenter = "sportcenter_name"; 
public static final String KEY_Facility = "facility_name"; 
public static final String KEY_Date = "date"; 
public static final String KEY_Starttime = "start_time"; 
public static final String KEY_Endtime = "end_time"; 
private JSONArray booking = null; 
private String json; 

public bookinglistJSON(String json){ 
    this.json = json; 
} 

protected void bookinglistJSON(){ 
    JSONObject jsonObject=null; 
    try { 
     jsonObject = new JSONObject(json); 
     booking = jsonObject.getJSONArray(JSON_ARRAY); 
     sportcenter_name = new String[booking.length()]; 
     facility_name = new String[booking.length()]; 
     date = new String[booking.length()]; 
     start_time = new String[booking.length()]; 
     end_time = new String[booking.length()]; 

     for(int i=0;i<booking.length();i++){ 
      JSONObject jo = booking.getJSONObject(i); 
      sportcenter_name[i] = jo.getString(KEY_Sportcenter); 
      facility_name[i] = jo.getString(KEY_Facility); 
      date[i] = jo.getString(KEY_Date); 
      start_time[i] = jo.getString(KEY_Starttime); 
      end_time[i] = jo.getString(KEY_Endtime); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
} 

ViewBookings.java

public class ViewBookings extends AppCompatActivity { 
public static final String JSON_URL = "http://www.khaledz.com/projects/project/viewbooking.php?username="; 
public static final String KEY_USERNAME="username"; 
private TextView textView; 
private ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view_booking); 
    textView = (TextView) findViewById(R.id.textViewUserName); 

    //Fetching email from shared preferences 
    SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE); 
    String username = sharedPreferences.getString(Config.EMAIL_SHARED_PREF, "Not Available"); 

    //Showing the current logged in email to textview 
    textView.setText("Current User: " + username); 
    listView = (ListView) findViewById(R.id.listViewBooking); 
    sendRequest(); 
} 

private void sendRequest(){ 
    final String username = textView.getText().toString().trim(); 
    StringRequest stringRequest = new StringRequest(JSON_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        showJSON(response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(ViewBookings.this, error.getMessage(), Toast.LENGTH_LONG).show(); 
       } 
      }){ 
    @Override 
    protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String, String> map = new HashMap<String, String>(); 
     map.put(KEY_USERNAME, username); 
     return map; 
    } 
    }; 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 

private void showJSON(String json){ 
    bookinglistJSON pj = new bookinglistJSON(json); 
    pj.bookinglistJSON(); 
    bookinglist nl = new bookinglist(ViewBookings.this, bookinglistJSON.sportcenter_name,bookinglistJSON.facility_name,bookinglistJSON.date,bookinglistJSON.start_time,bookinglistJSON.end_time); 
    listView.setAdapter(nl); 
} 
} 

php腳本。

<?php 
define('HOST','alahlitimercom.ipagemysql.com'); 
define('USER','book_play_123'); 
define('PASS','book_play_123'); 
define('DB','book_play_123'); 

$con = mysqli_connect(HOST,USER,PASS,DB); 
$username = $_GET['username']; 
$sql = "select * from booking WHERE username='$username'"; 
$res = mysqli_query($con,$sql); 

$result = array(); 
while($row = mysqli_fetch_array($res)){ 
array_push($result, 
array('id'=>$row[0], 
'sportcenter_name'=>$row[1], 
'facility_name'=>$row[2], 
'username'=>$row[3], 
'created_at'=>$row[4], 
'date'=>$row[5], 
'start_time'=>$row[6], 
'end_time'=>$row[7], 
'court'=>$row[8], 
'price'=>$row[9] 
)); 
} 

echo json_encode(array("result"=>$result)); 

mysqli_close($con); 

?> 
+0

我想你嘗試檢索PHP中的'$ _POST'一個'GET'要求,因爲我沒有看到你在你的Android代碼 –

+0

指定'POST' @Thomas任何想法如何檢索特定用戶名的詳細信息?我已經從帖子更改爲獲取我的PHP腳本。現在我在java代碼中必須做些什麼? TQ – vanmost

回答

0

http://afzaln.com/volley/com/android/volley/toolbox/StringRequest.html

指定默認請求GET

然而,在你的PHP代碼,你寫

$username = $_POST['username']; 

您應該添加用戶名作爲URL paramater使其成爲GET參數如下:

http://www.khaledz.com/projects/project/viewbooking.php?username=Harry 

在PHP中這樣寫:

$username = $_GET['username'];