2016-04-03 22 views
0

私のAndroidアプリケーションからJSONオブジェクトをWebサービスに送信しています。 (ボレーを使用して)。ここに私のコードの一部があります。PHPのJSONオブジェクトをデコードする

private void sendtoDB(final String ngno){ 

    String tag_string_req = "req_save_to_db"; 

    final JSONObject JSONdates = new JSONObject(); 

    for(int i = 0 ; i < dates.size() ; i++){ 

     try{ 
      JSONdates.put("date", dates.get(i)); 

     }catch (Exception e){ 
      e.printStackTrace(); 
     } 

    } 

    StringRequest strReq = new StringRequest(Request.Method.POST, 
      AppConfig.URL_UpdateDates, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { ....} 


     @Override 
     protected Map<String, String> getParams() { 
      // Posting params to register url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("ngno", ngno); 
      params.put("JSON", JSONdates.toString()); 
      return params; 
     } 
    }; 
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
} 

日付配列には、データベースに保存するいくつかの日付文字列が含まれています。以下は私のJSONオブジェクト(JSONdates)の出力です。

{ "日付": "水3月30日00:00:00 GMT + 05:30 2016"、 "木3月31日00:00:00 GMT + 05:30 2016"]}

マイ質問は私のPHPでこのJSONオブジェクトを受け取る方法とそれを正しくデコードし、変数に各日付の値を取得するので、私はそれに応じてSQLクエリを実行することができます。

これは私のPHPコードです。

<?php 
require_once 'include/DB_Functions.php'; 
$db = new DB_Functions(); 

if(isset($_POST['ngno']) && isset($_POST['JSON'])){ 

    $ngno = $_POST['ngno']; 
    $json = json_decode($_POST['JSON'], true); 


    foreach($json){ 
     $date = $json['date']; 
     $job = $db->updateDates($ngno, $date); 

     if($job){ 
       $response["error"] = FALSE; 
       echo json_encode($response); 
     } 

     else{ 
      $response["error"] = TRUE; 
      $response["error_msg"] = "Unknown error occurred in Updating!"; 
      echo json_encode($response); 
     } 
    } 

} 

else{ 
    $response["error"] = TRUE; 
    $response["error_msg"] = "Dates are missing!"; 
    echo json_encode($response);  
} 
?> 

updateDatesは

public function updateDates($ngno, $date){ 

    $stmt = $this->conn->prepare("INSERT INTO datepicker(ngno, date) VALUES($ngno, $date)"); 
    $result = $stmt->execute(); 
    $stmt->close(); 
} 

は私が ')' unexcepted forearch($のJSON)の近くに構文エラーを取得する機能します。

ご協力いただければ幸いです。すべてのヘルプみんなのforeachのために供給無効な引数() :

EDIT 1:

foreach($dates as $date){ 
    error_log[$date]; 
    $job = $db->updateDates($ngno, $date); 

    if($job){ 
     $response["error"] = FALSE; 
     echo json_encode($response); 
    } 

    else{ 
     $response["error"] = TRUE; 
     $response["error_msg"] = "Unknown error occurred in Updating!"; 
     echo json_encode($response); 
    } 
} 

を次のようにPHPコードでforeachループを変更しかし、今では言う、PHPの警告?私はプログラミングに慣れていないし、修正方法を知らない。

+1

php foreach構文を確認してください。 http://php.net/manual/en/control-structures.foreach.php – Mattia

+0

参考になりました! –

答えて

0

変更foreach($json){~foreach($json['dates'] as $date){を削除し、$date = $json['date'];の行を削除します。 foreach構文の詳細については、php manual about foreachを参照してください。

+0

コードを変更しましたが、次のエラーが発生しました。PHP警告:foreach()で無効な引数が指定されました。 –

関連する問題