2015-06-04 2 views
1

я попытался сделать деятельность, которая изменяет базе данных MySQLMySQL обновления с помощью PHP в андроиде с помощью JSON

я сделал веб-сервер с этим кодом

<?php 

//error_reporting(0); 

require_once('db_config.php'); 


if($conn){ 


    $sql = "UPDATE order_detail SET order_status ='completed', WHERE order_id = $ORDER_ID"; 

     if(mysqli_query($conn,$sql)){ 

      $response['Result'] =true; 
      $response['Message'] = 'Update Order Successfully'; 

     }else{ 

      $response['Result'] =false; 
      $response['Message'] = 'Unable to take order'; 

     } 

    }else{ 

    $response['Result'] =false; 
    $response['Message'] = 'Some Fields are missing'; 

    } 

}else{ 

    $response['Result'] =false; 
    $response['Message'] = 'Unable to connect database'; 

} 

echo json_encode($response); 
mysqli_close($conn); 


?> 

и это связанно с андроидом активностью просить воздают , но я не имею понятия, почему это не работает

частная пустота completeOrder() {// TODO Автоматически сгенерированные метод заглушки

   if (Utils.checkConnection(this)) 
        new OrderTask().execute(); 
       else 
        Toast.makeText(this, "No Connection Found", 
          Toast.LENGTH_SHORT).show(); 

      } 


public class OrderTask extends AsyncTask<Void, Void, Boolean> { 

    private ProgressDialog pd; 
    private Boolean result = false; 
    private StringBuilder item_ids,item_names; 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 

     pd = new ProgressDialog(SingleContactActivity.this); 
     pd.setMessage("Processing order,Please wait"); 
     pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     pd.setCancelable(false); 
     pd.show(); 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     // TODO Auto-generated method stub 


     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost(Utils.WS_UPDATE_ORDER); 

     List<NameValuePair> mParams = new ArrayList<NameValuePair>(); 
     mParams.add(new BasicNameValuePair("order_status","Completed")); 
     mParams.add(new BasicNameValuePair("order_id",ORDER_ID.toString())); 


     try { 

      post.setEntity(new UrlEncodedFormEntity(mParams)); 

      HttpResponse response = client.execute(post); 

      String res = EntityUtils.toString(response.getEntity()); 

      Log.d("Order Preview", res); 

      JSONObject jsonObj = new JSONObject(res); 

      result = jsonObj.getBoolean("Result"); 



     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return result; 
    } 

    @Override 
    protected void onPostExecute(Boolean res) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(res); 

     if (pd != null) 
      pd.dismiss(); 

     if (res) { 

      Toast.makeText(SingleContactActivity.this, 
        "Order Submitted Successfully", Toast.LENGTH_SHORT) 
        .show(); 

      Intent intent = new Intent(SingleContactActivity.this, 
        CategoryList.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 

     } else { 

      Toast.makeText(SingleContactActivity.this, 
        "Unable to process the order", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 

} 
+0

локализовать проблему. по крайней мере, проблемная сторона - клиент или сервер. –

ответ

0

Возможно, вам потребуется использовать mysqli_affected_rows() в результатах запроса, потому что mysqli_query($conn,$sql) всегда возвращает результат запроса, и вы всегда включаетесь в if condition. вам нужно подсчитать количество затронутых строк.

Также найдено syntax error in last else condition

Это может быть

<?php 

//error_reporting(0); 

require_once('db_config.php'); 
if ($conn) { 


    $sql = "UPDATE `order_detail` SET `order_status` ='completed', WHERE `order_id` = $ORDER_ID"; 

    $result = mysqli_query($conn, $sql); 
    if (mysqli_affected_rows($result) > 0) { 


     $response['Result'] = true; 
     $response['Message'] = 'Update Order Successfully'; 
    } else { 

     $response['Result'] = false; 
     $response['Message'] = 'Unable to take order'; 
    } 
} else { 

    $response['Result'] = false; 
    $response['Message'] = 'Some Fields are missing'; 
} 
Смежные вопросы