我是Android编程的新手,现在我无法根据登录到应用程序的用户名从mysql
phpmyadmin
检索数据。我有一个名为booking
的表,其中包含所有用户的详细信息。现在我想从数据库中检索一个特定用户的所有细节。我怎么做?
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 :(得分:0)
http://afzaln.com/volley/com/android/volley/toolbox/StringRequest.html
指定默认请求为GET
但是在你的PHP代码中你写了
$username = $_POST['username'];
您应该将用户名添加为网址参数,以使其成为GET
参数,如下所示:
http://www.khaledz.com/projects/project/viewbooking.php?username=Harry
在PHP中你写道:
$username = $_GET['username'];