Я просто оставлю этот вопрос коротким. Что не так с моим PHP-кодом, он продолжает выводить 0 или Обязательное поле (-ы) отсутствует. Вот код
<?php // array for JSON response $response = array(); // check for required fields if (isset($_POST['id']) && isset($_POST['status_id'])) { $id = $_POST['id']; $status_id = $_POST['status_id']; // include db connect class require_once __DIR__ . '/db_connect.php'; // connecting to db $db = new DB_CONNECT(); // mysql update row with matched pid $result = mysql_query("UPDATE pims_liip_pallet_purchase_order SET status = '$status_id' WHERE id = $id"); // check if row inserted or not if ($result) { // successfully updated $response["success"] = 1; $response["message"] = "Product successfully updated."; // echoing JSON response echo json_encode($response); } else { } } else { // required field is missing $response["success"] = 0; $response["message"] = "Required field(s) is missing"; // echoing JSON response echo json_encode($response); } ?>
Вот сообщения в моем приложении
protected String doInBackground(String... args) { // TODO Auto-generated method stub // Check for success tag int success; String status_id = statusID.getText().toString(); try { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("status_id", status_id)); Log.d("request!", "starting"); //Posting user data to script JSONObject json = jsonParser.makeHttpRequest( UPDATE_COMMENTS_URL, "POST", params); // full json response Log.d("Post Update", json.toString()); // json success element success = json.getInt(TAG_SUCCESS); if (success == 1) { Log.d("Updated!", json.toString()); finish(); return json.getString(TAG_MESSAGE); }else{ Log.d("Update Failure!", json.getString(TAG_MESSAGE)); return json.getString(TAG_MESSAGE); } } catch (JSONException e) { e.printStackTrace(); } return null; }
Любые ответы будут очень уважаемы: D Спасибо!
Ваша ошибка говорит все. Поскольку вы попадаете в бит } else { ... }
, это означает isset($_POST['id']) && isset($_POST['status_id'])
является ложным.
Другими словами, ваша форма:
method="post"
в тэг <form>
. (на самом деле POST является поведением по умолчанию, поэтому, если это так, вам, вероятно, придется удалить или изменить method="GET"
из тега формы) name="id"
и / или name="status_id"
Обновленный вопрос добавляет код Android. Следовательно, это обновление:
Я сомневаюсь, что jsonParser.makeHttpRequest
фактически jsonParser.makeHttpRequest
кодированную форму json string. Это скорее всего будет просто POST json data на веб-сервере. $ _POST PHP не будет автоматически заполняться этими данными, поскольку он обрабатывает только данные, закодированные в форме.
Вероятно, вам нужно прочитать эти данные из stdIn.
Пытаться:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { $rawPostData = file_get_contents("php://input"); $postData = (array)json_decode($rawPostData); }
И затем используйте $ postData, где вы в противном случае использовали бы $ _POST
Просто отлаживайте $_POST['id']
и $_POST['status_id']
. Перед этой строкой.
if (isset($_POST['id']) && isset($_POST['status_id'])) {
вы найдете ответ автоматически. Надеемся, что одна из двух переменных post не установлена. Для отладки используйте print_r($_POST);