2017-09-24 69 views
0

我有一个应用程序显示ListView中的数据库中的所有项目。但我有一个问题,我只能得到数据库中的第一个元素。如何从PHP获取整个数组?

这是我的PHP代码:

<?php 

$response = array(); 

// include db connect class 
require_once __DIR__ . '/db_connect.php'; 

// connecting to db 
$db = new DB_CONNECT(); 
$dbh = $db->connect(); // here you get the connection 

$query = "SELECT *FROM lost_cars"; 

$result = $dbh->prepare($query); 
$result->execute(); 

if (!empty($result)) { 
// check for empty result 
if ($result->fetchAll() > 0) { 


    foreach($dbh->query($query) as $row){ 
      $car["id"] = $row['id']; 
      $car["name"] = $row['name']; 

      $response["car"] = array(); 
      array_push($response["car"], $car); 
     // echoing JSON response 
     //$response["success"] = 1; 
     echo json_encode($response); 

     } 

    } else { 
     // no car found 
     $response["success"] = 0; 
     $response["message"] = "No car found"; 

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

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

>

此代码工作正常,并打印我以前加载一些随机值?

{“car”:[{“id”:“11”,“name”:“fgfg”}]} {“car”:[{“id”:“12”,“name” “SDF”}]} { “车”:[{ “ID”: “14”, “姓名”: “克莱奥”}]} { “车”:[{ “ID”: “15”, “姓名”: “洛拉”}]} { “车”:[{ “ID”: “16”, “名称”: “HOLA”}]} { “车”:[{ “ID”: “17”, “姓名”: “kjlhljh”}]} { “车”:[{ “ID”: “18”, “姓名”: “sdfgsdg”}]} { “车”:[{ “ID”: “19”, “姓名”: “JKL;”}]} { “车”:[{ “ID”: “20”, “名称”: “ASD”}]} { “车”:[{ “ID”: “22”, “姓名” : “ASD”}]} { “车”:[{ “ID”: “23”, “名称”: “sdfsdfd”}]} { “车”:[{ “ID”: “24”, “姓名” : “SDF”}]} { “车”:[{ “ID”: “25”, “名称”: “kgkgkg”}]} { “车”:[{ “ID”: “26”, “姓名” : “dfgdg”}]} { “车”:[{ “ID”: “28”, “姓名”: “SDF”}]} { “车”:[{ “ID”: “29”, “姓名” : “dfsdf”}]} { “车”:[{ “ID”: “30”, “姓名”: “dfgdfg”}]} { “车”:[{ “ID”: “31”, “姓名” : “sadasd”}]} { “车”:[{ “ID”: “32”, “姓名”: “ACA”}]} { “车”:[{ “ID”: “34”, “姓名” : “sdfsdf”}]} { “车”:[{ “ID”: “35”, “名称”: “sdfsdf”}]} { “车”:[{ “ID”: “36”, “姓名” : “HOLA”}]} { “车”:[{ “ID”: “37”, “名称”: “qweqwe”}] } { “车”:[{ “ID”: “38”, “姓名”: “DF”}]} { “车”:[{ “ID”: “39”, “姓名”: “SDA”}] }

然后我成功的解析结果在Android中,这里是JSONParser的片段:

try { 
      BufferedReader reader = new BufferedReader(new 
InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       System.out.println(line); 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
      jObj = new JSONObject(json); //THE PROBLEM 

     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + 
e.toString()); 
     } 

问题是,当我试图将字符串(JSON)转换成一个JSONObject。当我传递给listView来显示我只获得第一个元素。

这里的ListViewActivity的代码片段:

protected String doInBackground(String... args) { 
     // Building Parameters 
     HashMap<String, String> params = new HashMap<>(); 
     // getting JSON string from URL 
     JSONObject json = jParser.makeHttpRequest(URLs.GET_ALL_CARS, "GET", 
params); 
     // Check your log cat for JSON reponse 
     Log.d("All Cars: ", json.toString()); 

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

      //if (success == 1) { 
       // cars found 
       // Getting Array of Products 

       cars = json.getJSONArray(TAG_CARS); 

       // looping through All Products 
       for (int i = 0; i < cars.length(); i++) { 
        JSONObject c = cars.getJSONObject(i); 
        // Storing each json item in variable 
        String id = c.getString(TAG_ID); 
        System.out.println(id); 
        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_ID, id); 
        map.put(TAG_NAME, name); 
        // adding HashList to ArrayList 
        carList.add(map); 
       } 
      //} 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 

    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 

     // updating UI from Background Thread 
     runOnUiThread(new Runnable() { 
      public void run() { 
       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       ListAdapter adapter = new SimpleAdapter(
         AllCarsActivity.this, carList, 
         R.layout.view_item, new String[]{TAG_ID, 
         TAG_NAME}, 
         new int[]{R.id.id, R.id. 
       setListAdapter(adapter); 
      } 
     }); 



    } 

可能是什么问题就在这里?我一直在搜索几个小时没有成功,我不知道该怎么做。 我很感谢你的帮助,谢谢!

回答

0

尝试使用json_decode解码json,然后遍历数组数组,也许是嵌套的foreach循环?对不起,我还没有更多的帮助仍然有点新自己