2013-12-12 4 views
1

Я просто оставлю этот вопрос коротким. Что не так с моим 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 Спасибо!

+1

print_r ($ _ POST) и посмотреть, какие параметры вы получаете из формы. Вы проверяете блокировку своей отправки – Sundar

+0

Поскольку сообщение об ошибке не появляется, и вы видите свое собственное сообщение об ошибке, то, по крайней мере, один из двух параметров, которые вы ожидаете (id и status_id), отсутствует – vkamayiannis

+0

«он продолжает выводить 0 или обязательно Поле (ы) отсутствует. " означает, что ваш случай не подходит. Почему вы не можете проверить или отозвать переменные post и посмотреть, не хватает ли они –

ответ

1

Ваша ошибка говорит все. Поскольку вы попадаете в бит } else { ... }, это означает, что isset($_POST['id']) && isset($_POST['status_id']) является ложным.

Другими словами, ваша форма является:

  • не используя POST, но GET. В этом случае добавьте method="post" к вашему тегу <form>. (На самом деле, POST по умолчанию поведение, так что если это так, то вам, возможно, придется удалить или изменить method="GET" из тега формы)
  • и/или вашей формы не содержит поля ввода с name="id" и/или name="status_id"

Обновленный вопрос добавляет код Android. Следовательно, это обновление:

Я сомневаюсь, что jsonParser.makeHttpRequest действительно отправляет кодированную форму json string. Это скорее всего будет просто POST json data на веб-сервере. $ _POST PHP не будет автоматически заполняться этими данными, поскольку он обрабатывает только данные, закодированные в форме.

Возможно, вам необходимо прочитать эти данные из stdIn.

Try:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    $rawPostData = file_get_contents("php://input"); 
    $postData = (array)json_decode($rawPostData); 
} 

А затем использовать PostData $, где вы в противном случае было бы использовать $ _POST

+0

Что делать, если я не использовал какие-либо формы на этом. Мне просто нужен был результат, чтобы быть успешным для использования моим приложением Android, когда я нажал кнопку «одобрен» или «отклонен». Это возможно? –

+0

Тогда откуда берутся данные? Из вашего приложения для Android? Как вы его отправляете? – daker

+0

Я опубликовал данные своего приложения. Вот как я его отправляю. Что-то не так с моим кодом? –

0

Просто отладить $_POST['id'] и $_POST['status_id']. Перед этой строкой.

if (isset($_POST['id']) && isset($_POST['status_id'])) { 

вы найдете ответ автоматически. Надеемся, что одна из двух переменных post не установлена. Для использования отладки print_r($_POST);

+0

Всякий раз, когда я помещаю print_r ($ _ POST); Вывод: Array() –

+0

Исправить ...поэтому вы получаете problem.no значение post установлено. Пожалуйста, проверьте свою форму, откуда вы отправляете сообщения. –

+0

Проблема в том, что нет формы: см. Обновленный вопрос. Он отправляется из приложения Android. Скорее всего, _POST пуст, потому что он публикует данные JSON, а не данные «x-www-form-urlencoded», php не интерпретирует эти данные изначально и, следовательно, не будет заполнять _POST. –

Смежные вопросы