Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 安卓截击,我如何得到一个响应并在另一个响应中使用它?_Php_Android_Android Volley - Fatal编程技术网

Php 安卓截击,我如何得到一个响应并在另一个响应中使用它?

Php 安卓截击,我如何得到一个响应并在另一个响应中使用它?,php,android,android-volley,Php,Android,Android Volley,我习惯于在只需要一个回应的情况下使用截击,但在这里,我能看到实现我想要的目标的唯一方法是使用两个回应。我的想法是: 从Android发布用户名,在Php中获取匹配的用户id,我这样做: <?php require('dbConnect.php'); //this is me, my username in the user table $Number = $_POST['phonenumberofuser']; // get the username in the user tabl

我习惯于在只需要一个回应的情况下使用截击,但在这里,我能看到实现我想要的目标的唯一方法是使用两个回应。我的想法是:

从Android发布
用户名
,在Php中获取匹配的
用户id
,我这样做:

<?php

require('dbConnect.php');

//this is me, my username in the user table
$Number = $_POST['phonenumberofuser'];

// get the username in the user table, then get the matching user_id
                $query = "SELECT * FROM user WHERE username = ?";
                $stmt = $con->prepare($query) or die(mysqli_error($con));
                $stmt->bind_param('s', $Number) or die ("MySQLi-stmt binding failed ".$stmt->error);
                $stmt->execute() or die ("MySQLi-stmt execute failed ".$stmt->error);
                $result = $stmt->get_result();

            while ($row = $result->fetch_assoc()) {
                //get the corresponding user_id in the row
            //this is the matching user_id in the user table of the user
            $user_id = $row["user_id"];
            }
$sql2 = "SELECT * FROM review WHERE user_id = '$user_id'";
$results = array();

    $result2 = mysqli_query($con,$sql2);

        //if user_id has reviews in the db
    while($row = mysqli_fetch_array($result2)) {
        //make an array called $results
                 $results[] = array(
         'category' => $row['cat_name'], 
         'name' => $row['name'],
         'phone' => $row['phone'],
         'comment' => $row['comment'],
         );
    }
    $json = json_encode($results);
echo $json;
        ?>
正如您所看到的,我的php文件响应了我的Android截击代码所处理的
$json
,在视图中为我提供了
名称
电话
注释

但是我应该把
user\u id
放在哪里,这样我就可以显示
user\u id
创建的相关评论了

这是我的
截击
代码:

// Creating volley request obj
        JsonArrayRequest movieReq = new JsonArrayRequest(url,

                new Response.Listener<JSONArray>() {

                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                Review review = new Review();
                                review.setCategory(obj.getString("category"));

                                review.setName(obj.getString("name"));
                                review.setPhone(obj.getString("phone"));
                                review.setComment(obj.getString("comment"));

                                reviewList.add(review);

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

                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        hidePDialog();

                    }
                });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(movieReq);
    }
//创建截击请求对象
JsonArrayRequest movieReq=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
在第一个请求的
onResponse
中添加新截击请求的示例

// change JSONArrayrequest to your appropiate request to get the user id
JsonArrayRequest userReq = new JsonArrayRequest(URL_TO_GET_USERID,
    new Response.Listener <JSONArray> () {
        @Override
        public void onResponse(JSONArray response) {                
            // parse your response to get the user_id
            String user_id = <RESULT FROM PARSING YOUR RESPONSE>;
            String URL_WITH_USERID = <YOUR URL> + user_id;
            JsonArrayRequest movieReq = new JsonArrayRequest(URL_WITH_USERID,

                new Response.Listener <JSONArray> () {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                Review review = new Review();
                                review.setCategory(obj.getString("category"));

                                review.setName(obj.getString("name"));
                                review.setPhone(obj.getString("phone"));
                                review.setComment(obj.getString("comment"));

                                reviewList.add(review);

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

                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error geting user info: " + error.getMessage());
                        hidePDialog();

                    }
                });

            // Adding request for getting user info to request queue
            AppController.getInstance().addToRequestQueue(movieReq);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error getting user: " + error.getMessage());
            hidePDialog();   
        }
    });

// Adding request for getting user_id to request queue
AppController.getInstance().addToRequestQueue(userReq);
//将JSONArrayrequest更改为您的批准请求以获取用户id
JsonArrayRequest userReq=新的JsonArrayRequest(URL_TO_GET_USERID,
新的Response.Listener(){
@凌驾
public void onResponse(JSONArray响应){
//解析您的响应以获取用户\u id
字符串user_id=;
字符串URL_,其中_USERID=+user_id;
JsonArrayRequest movieReq=新的JsonArrayRequest(带有用户ID的URL),
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
只需在
onResponse()
中创建另一个截击请求?是的,我想到了,但是我如何隔离用户id响应,以便使用它返回所需的$json?我不理解隔离的含义。但我也不知道问题是什么,您可以解析来自服务器的json响应。因此,我相信您可以检索用户id并将其再次用于另一个请求是的,我相信我也可以这样做。问题是如何做。回到第一条评论,在
onResponse
中添加另一个截击请求。虽然还没有完全实现,但我相信您的代码已经将我带向了正确的方向。