Android デバイスが WAMP サーバーに接続されているシステムで作業しています。ユーザーが Android アプリで選択した日付に応じて、いくつかの行を返そうとしています。日付のデフォルト値は 0000-00-00 であると言わざるを得ませんが、これらの値は実際の日付に更新できます。問題は、日付が 0000-00-00 の行を返すようにデバイスで選択すると、これが機能することです。ただし、実際の日付 (2013-08-08 など) に基づいていくつかの行を返すことを選択した場合、これは機能しません (0 行が影響を受けます)。フォーマットの問題だと思いましたが、ログはそれがどうあるべきかを示しています。
すべてが明確かどうかはわかりません。
あなたが助けてくれる場合に備えて、以下のコードをコピーします。
PHP (日付は「fecha」と呼ばれます)
<?php
// array for JSON response
$response = array();
// include db connect class
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$fecha = $_GET['fecha'];
$result = mysql_query("SELECT *FROM resultados2 WHERE fecha = $fecha") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["resultado"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$resultado = array();
$resultado["id"] = $row["id"];
$resultado["nombre"] = $row["nombre"];
$resultado["tablet"] = $row["tablet"];
$resultado["fecha"] = $row["fecha"];
array_push($response["resultado"], $resultado);
}
$response["success"] = 1;
$response["message"] = "Returned";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "Error";
echo json_encode($response);
}
?>
アンドロイド
public class MonitFecha extends ListActivity {
private ProgressDialog pDialog;
// Creating JSON Parser object
JSONParser jsonParser = new JSONParser();
BaseAdapter adapter;
ArrayList<HashMap<String, String>> detallesList;
// url to get all products list
private static String url_detalles = "http://10.0.0.13/subida/get_fecha_d.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_DNI = "dni";
private static final String TAG_ID = "id";
private static final String TAG_NOMBRE = "nombre";
private static final String TAG_FECHA = "fecha";
private static final String TAG_TABLET = "tablet";
private static final String TAG_CORRECTAS = "correctas";
private static final String TAG_ERRORES = "errores";
EditText txtName, txtPrice, txtDesc;
JSONArray resultados = null;
String fecha;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fecha_candidatos);
StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);
boolean isReachable = false;
try{
isReachable = InetAddress.getByName("10.0.0.13").isReachable(200);
} catch (Exception e){
Log.e("InetAddress", e.getMessage());
}finally {
if (isReachable) {
Intent i = getIntent();
fecha = i.getStringExtra("fecha");
new CargarDetalles().execute();
}else{
Toast.makeText(getApplicationContext(), R.string.errorserver, Toast.LENGTH_LONG).show();
}
}
setListAdapter(adapter);
detallesList = new ArrayList<HashMap<String, String>>();
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String idd = ((TextView) view.findViewById(R.id.id)).getText()
.toString();
Intent in = new Intent(getApplicationContext(),
MonitDetail2.class);
in.putExtra("id", idd);
startActivityForResult(in, 100);
}
});
}
class CargarDetalles extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MonitFecha.this);
pDialog.setMessage("Actualizando...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
protected String doInBackground(String... args) {
try {
monitorizar();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();}
return null;
}
protected void onPostExecute(String file_url) {
pDialog.dismiss();
runOnUiThread(new Runnable() {
public void run() {
adapter = new SimpleAdapter(
MonitFecha.this, detallesList,
R.layout.list_fecha, new String[] {TAG_ID, TAG_NOMBRE, TAG_TABLET, TAG_FECHA},
new int[] {R.id.id, R.id.nombre, R.id.tablet, R.id.fecha});
adapter.notifyDataSetChanged();
setListAdapter(adapter);
}
});
}
}
public void monitorizar() throws Exception{
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("fecha",fecha));
JSONObject json = jsonParser.makeHttpRequest(url_detalles, "GET", params);
Log.d("params", String.valueOf(params));
ArrayList<HashMap<String, String>> temp;
temp = new ArrayList<HashMap<String, String>>();
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
resultados = json.getJSONArray("resultado");
for (int i = 0; i < resultados.length(); i++) {
JSONObject c = resultados.getJSONObject(i);
String id = c.getString(TAG_ID);
String nombre = c.getString(TAG_NOMBRE);
String tablet = c.getString(TAG_TABLET);
String fecha = c.getString(TAG_FECHA);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ID, id);
map.put(TAG_NOMBRE, nombre);
map.put(TAG_TABLET, tablet);
map.put(TAG_FECHA, fecha);
temp.add(map);
detallesList = temp;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
ありがとうございました