我想知道如何获得具有最小ID和 timeOut 的 timeIn ,其最大ID从MySQL
php到android?
这是table work_Details(id,project,percentage,timeIn,timeOut,twd)。现在我想检索timeIn : 12:26:00
和timeOut 11:26:00
public void RetrieveTotalHours( final String ID) // Assume ID is 69
{
class GetHours extends AsyncTask<Void,Void,String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(getActivity(),"Fetching...","Wait...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
showHours(s);
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(Configs.RETRIEVE_HOURS,ID);
return s;
}
}
GetHours ge = new GetHours();
ge.execute();
}
private void showHours(String json) {
try {
JSONArray array=new JSONArray(json);
JSONObject jsonObject = array.getJSONObject(array.length()-1);
String MiNtimeIn = jsonObject.optString(Configs.TAG_IN);
String MaXtimeOut=jsonObject.optString(Configs.TAG_OUT);
Log.e("A",MiNtimeIn);
Log.e("S", MaXtimeOut);
//total.setText(MiNtimeIn);
} catch (JSONException e) {
e.printStackTrace();
}
}
PHP
<?php
define('HOST','127.0.0.1:3307');
define('USER','root');
define('PASS','');
define('DB','androiddb');
$con = mysqli_connect(HOST,USER,PASS,DB) or die('unable to connect');
$twd= $_GET['id'];
$sql = "select timeIn, timeOut from work_details WHERE twd = '".$twd."' AND id IN
(SELECT MIN(id) FROM work_details WHERE twd ='".$twd."' UNION SELECT MAX(id) FROM work_details WHERE twd='".$twd."')";
$res = mysqli_query($con,$sql);
$result=array();
while($row=mysqli_fetch_array($res)){
array_push($result,array('timeIn'=>$row[0],'timeOut'=>$row[1]));
}
echo json_encode($result);
mysqli_close($con);
?>
输出错误
01-12 12:43:41.540 22692-22692/com.example.project.myapplication E/A﹕ 20:26:00
01-12 12:43:41.540 22692-22692/com.example.project.myapplication E/S﹕ 11:26:00
它检索具有max id ...的timeIn和timeOut
答案 0 :(得分:1)
检索具有max id ...的timeIn和timeOut
从First JSONObject获取MiNtimeIn
并从第二个JSONObject获取MaXtimeOut
:
String MiNtimeIn,MaXtimeOut;
JSONArray array=new JSONArray(json);
if(array.length()<2){
JSONObject jsonObject = array.getJSONObject(0);
MiNtimeIn = jsonObject.optString(Configs.TAG_IN);
MaXtimeOut=jsonObject.optString(Configs.TAG_OUT);
}else{
// get First Object from JSONArray
JSONObject oneObject = array.getJSONObject(0);
MiNtimeIn = oneObject.optString(Configs.TAG_IN); // get min from first row
// get Second Object from JSONArray
JSONObject twoObject = array.getJSONObject(array.length()-1);
MaXtimeOut = twoObject.optString(Configs.TAG_OUT); // get min from second row
}