2014-12-05 6 views
0

Im Попытка получить простые данные из mysql, используя JSON и php. Я сделал все, что я искал. Я могу вставить данные, но я не могу получить. Помоги мне. заранее спасибо.Не удается получить данные Из mysql с помощью php + android

Я сделал следующий код PHP, чтобы получить

get_all_products.php

<?php 

$response = array(); 

require_once __DIR__ . '/db_connect.php'; 

$db = new DB_CONNECT(); 

$result = mysql_query("SELECT name,pid FROM products") or die(mysql_error()); 

if (mysql_num_rows($result) > 0) { 
    // looping through all results 
    // products node 
    $response["products"] = array(); 

    while ($row = mysql_fetch_array($result)) { 
     // temp user array 
     $product = array(); 

     $product["name"] = $row["name"]; 

      $product["pid"] = $row["pid"]; 



     // push single product into final response array 
     array_push($response["products"], $product); 
    } 
    $response["success"] = 1; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 
    $response["success"] = 0; 
    $response["message"] = "No products found"; 

    // echo no users JSON 
    echo json_encode($response); 
} 
?> 

После JsonParsor, следующий код Java в андроида

public class AllProductsActivity extends ListActivity { 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> productsList; 

    // url to get all products list 
    private static String url_all_products = "http://10.0.2.2/android_connect/get_all_products.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_PRODUCTS = "products"; 
    private static final String TAG_PID = "pid"; 
    private static final String TAG_NAME = "name"; 

    // products JSONArray 
    JSONArray products = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.all_products); 

     // Hashmap for ListView 
     productsList = new ArrayList<HashMap<String, String>>(); 

     // Loading products in Background Thread 
     new LoadAllProducts().execute(); 
ListView lv=getListView(); 

     // on seleting single product 
     // launching Edit Product Screen 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // getting values from selected ListItem 
       String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
         .toString(); 

       // Starting new intent 
       Intent in = new Intent(getApplicationContext(), 
         EditProductActivity.class); 
       // sending pid to next activity 
       in.putExtra(TAG_PID, pid); 

       // starting new activity and expecting some response back 
       startActivityForResult(in, 100); 
      } 
     }); 

    } 

    // Response from Edit Product Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // if result code 100 
     if (resultCode == 100) { 
      // if result code 100 is received 
      // means user edited/deleted product 
      // reload this screen again 
      Intent intent = getIntent(); 
      finish(); 
      startActivity(intent); 
     } 

    } 

    /** 
    * Background Async Task to Load all product by making HTTP Request 
    * */ 
    class LoadAllProducts extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(AllProductsActivity.this); 
      pDialog.setMessage("Loading products. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     /** 
     * getting All products from url 
     * */ 
     protected String doInBackground(String... args) { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      // getting JSON string from URL 
      JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); 

      // Check your log cat for JSON reponse 
      Log.d("All Products: ", json.toString()); 

      try { 
       // Checking for SUCCESS TAG 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // products found 
        // Getting Array of Products 
        products = json.getJSONArray(TAG_PRODUCTS); 

        // looping through All Products 
        for (int i = 0; i < products.length(); i++) { 
         JSONObject c = products.getJSONObject(i); 

         // Storing each json item in variable 
         String id = c.getString(TAG_PID); 
         String name = c.getString(TAG_NAME); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_PID, id); 
         map.put(TAG_NAME, name); 

         // adding HashList to ArrayList 
         productsList.add(map); 
        } 
       } else { 
        // no products found 
        // Launch Add New product Activity 
        Intent i = new Intent(getApplicationContext(), 
          NewProductActivity.class); 
        // Closing all previous activities 
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(i); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all products 
      pDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
        /** 
        * Updating parsed JSON data into ListView 
        * */ 
        ListAdapter adapter = new SimpleAdapter(
          AllProductsActivity.this, productsList, 
          R.layout.list_item, new String[] { TAG_PID, 
            TAG_NAME}, 
          new int[] { R.id.pid, R.id.name }); 
        // updating listview 
        setListAdapter(adapter); 
       } 
      }); 

     } 

    } 
} 
+0

Что данные JSON быть полученное из кода PHP? – JLONG

+0

Im не полностью осознает концепцию php, в основном разработчика Java. 'array_push ($ response [" products "], $ product);' является ли эта строка нажатием данных на объект JSOon? который находится на стороне Java, 'products = json.getJSONArray (TAG_PRODUCTS);'. Благодарю за ваш ответ. –

+0

Проверьте свой логарифм для ответа JSON на ваш код. в частности, эту строку кода: Log.d («Все продукты:», json.toString()); – JLONG

ответ

0

Я думаю, что эта ссылка может быть очень полезной для разработчиков, которые являются абсолютно новичками.

Arockia Следуйте этому руководству. Я уверен, что это определенно поможет. Здесь, проверить эту ссылку:

[http://www.mybringback.com/series/android-intermediate/page/4/]

Примечание: PHP и MYSQL учебник начинается с числа 17.

+0

Это хорошо. Но со мной что-то не хватает. Я не получил выход. –

+0

Наконец-то это помогло мне с некоторыми исправлениями.'header ('Content-type: application/json'); require_once 'ur_db_configuration'; $ query_params [] = ""; $ query = "Выбрать * FROM products"; try { $ stmt = $ db-> подготовить ($ query); $ result = $ stmt-> execute ($ query_params); } catch (PDOException $ ex) { $ response ["success"] = 0; $ response ["message"] = "Ошибка базы данных!"; die (json_encode ($ response)); } ' –

0

Вам нужно ответить как json с использованием заголовков, по умолчанию PHP будет возвращать ответ с text/html

header('Content-type: application/json'); 
// echo no users JSON 
echo json_encode($response);  

и не использовать в mysql_* API его не рекомендуется использовать PDO, его очень гибкий и безопасный

с использованием PDO

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 

try { 
    //connect as appropriate as above 
    $db->query('SELECT name,pid FROM products'); //invalid query! 
    $stmt = $db->query("SELECT * FROM table"); 

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    //Build your result here and response 

} catch(PDOException $ex) { 
    echo "An Error occured!"; //user friendly message 
    some_logging_function($ex->getMessage()); 
} 
+0

' {"products": [{"pid": "1akn9d0uul73q0d37u1jqnkbqj", "name »:« Asus Phone »,« price »:« 10000 »,« description »:« Budget know »,« created_at »:« 4 декабря 2014 9:02:08 AM »,« updated_at »:« 4 декабря 2014 года » 9:02:08 AM "}]," success ": 1}' Когда я запускаю этот php-файл, он дает это сообщение. но не получил выход. @Saqueib –

+0

Я добавил заголовок ('Content-type: application/json'); 'content в моем php-коде. Спасибо. –

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