Нет значения для ["read"] - PullRequest
0 голосов
/ 11 февраля 2019

Я использую залп для передачи моих данных из Android Studio в онлайн-базу данных.Сначала логин работает нормально, показывая детали вошедшего в систему пользователя (стилиста или клиента).Я использую фрагменты, основной профиль - это первое, что подсказывает при успешном входе в систему, показывает подробности.на его стороне находится профиль редактирования, он также запрашивает данные пользователя и готов к редактированию.Когда его поле заменяется, затем нажимается кнопка редактирования, он обновляется до основного фрагмента профиля, а затем показывает эту ошибку.

Примечание: он успешно редактируется, но не отображается при перезагрузке страницы.

Error reading detail org.json.jsonexceotion No value for read

"read" - это мой массив отраженных строк из моего php-файла.

Вот оно.

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){

$id = $_POST['id'];
$userType = $_POST['userType'];
require_once 'connect.php';



    if(strcmp($userType,'Client') == 0){
        $sql = "SELECT * FROM client WHERE client_id=$id";
        $response = mysqli_query($conn, $sql);

        $result = array();
        $result['read'] = array();
        if(mysqli_num_rows($response) === 1){
            if($row = mysqli_fetch_assoc($response)){
            $h['name']          = $row['name'];
            $h['phone_number']  = $row['phone_number'];
            $h['gender']        = $row['gender'];
            $h['address']       = $row['address'];
            $h['occupation']    = $row['occupation'];
            $h['birth_date']    = $row['birth_date'];
            $h['user_type']     = $row['user_type'];
            $h['image']                 = $row['photo'];

            array_push($result["read"], $h);

            $result["success"] = "1";

            $result["message"] = "success";
            echo json_encode($result);
            }
        }

}else if(strcmp($userType,'Stylist') == 0){
            $sql = "SELECT * FROM stylist WHERE stylist_id=$id";
            $response = mysqli_query($conn, $sql);

            $result = array();
            $result['read'] = array();
            if(mysqli_num_rows($response) === 1){
                if($row = mysqli_fetch_assoc($response)){
                $h['name']                  = $row['name'];
                $h['phone_number']          = $row['phone_number'];
                $h['gender']                = $row['gender'];
                $h['address']               = $row['establishment_address'];
                $h['occupation']            = $row['stylist_type'];
                $h['birth_date']            = $row['birth_date'];
                $h['user_type']             = $row['user_type'];
                $h['image']                 = $row['photo'];
                $h['verification_photo']    = $row['verification_photo'];
                $h['verification_status']   = $row['verification_status'];

                array_push($result["read"], $h);

                $result["success"] = "1";

                $result["message"] = "success";
                echo json_encode($result);
            }
        }
    }else{
        $result["success"] = "0";
        $result["message"] = "$sql";
        echo json_encode($result);
        }
}
?>

А вот мой фрагмент MainProfile.

public class MainProfileFragment extends  Fragment{

private static final String TAG = "MainProfileFragment";


private TextView name, birthDate, address, occupation, gender, number, userType, verification_status;
private CircleImageView profile_image;
String getId = " ";
String user_type = " ";
String status = " ";


private static final String URL_READ = "http://isalonbyageeks.000webhostapp.com/readDetail.php";
SessionManager sessionManager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_mainprofile, container, false);
    return view;

}

@NonNull
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {


    sessionManager = new SessionManager(getActivity());

    name = (TextView) getView().findViewById(R.id.name);
    number = (TextView) getView().findViewById(R.id.number);
    gender = (TextView) getView().findViewById(R.id.gender);
    address = (TextView) getView().findViewById(R.id.address);
    occupation = (TextView) getView().findViewById(R.id.occupation);
    birthDate = (TextView) getView().findViewById(R.id.birthDate);
    userType = (TextView) getView().findViewById(R.id.userType);
    profile_image = (CircleImageView) getView().findViewById(R.id.profile_image);
    verification_status = (TextView) getView().findViewById(R.id.verificationStatus);

    Button logout = (Button) getView().findViewById(R.id.logoutBtn);

    HashMap<String, String> user = sessionManager.getUserDetail();
    getId = user.get(sessionManager.ID);
    user_type = user.get(sessionManager.USERTYPE);
    status = user.get(sessionManager.VERIFICATION_STATUS);





    logout.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), LogoutEffect.class);
            sessionManager.logout();
            startActivity(intent);
        }
    });

}


//STYLIST DOESN'T SHOW UP

private void getUserDetail(){
    final ProgressDialog progressDialog = new ProgressDialog(getActivity());
    progressDialog.setMessage("Loading...");
    progressDialog.show();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_READ,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();
                    Log.i(TAG, response);

                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");
                        JSONArray jsonArray = jsonObject.getJSONArray("read");

                        if(success.equals("1")){
                            for(int i = 0; i < jsonArray.length();i++){

                                JSONObject object = jsonArray.getJSONObject(i);
                                String strName = "Welcome, " +  object.getString ("name").trim();
                                String strNumber = object.getString("phone_number").trim();
                                String strGender = object.getString("gender").trim();
                                String strAddress = object.getString("address").trim();
                                String strOccupation = object.getString("occupation").trim();
                                String strBirthDate = object.getString("birth_date").trim();
                                String strUserType = object.getString("user_type").trim();
                                String strImage = object.getString("image").trim();

                                if(strUserType.equals("Stylist")) {
                                    String strVerStatus = object.getString("verification_status").trim();


                                    if (strVerStatus.equals("Verified")) {
                                        verification_status.setTextColor(getActivity().getBaseContext().getResources().getColor(R.color.green));
                                        verification_status.setText(strVerStatus);
                                    } else if (strVerStatus.equals("Not Verified")) {
                                        verification_status.setTextColor(getActivity().getBaseContext().getResources().getColor(R.color.red));
                                        verification_status.setText(strVerStatus);
                                    } else {
                                        verification_status.setVisibility(View.GONE);
                                    }
                                }else{
                                    verification_status.setVisibility(View.GONE);
                                }
                                name.setText(strName);
                                    birthDate.setText(strBirthDate);
                                    address.setText(strAddress);
                                    number.setText(strNumber);
                                    gender.setText(strGender);
                                    occupation.setText(strOccupation);
                                    userType.setText(strUserType);
                                if(strImage.equals("")){
                                    profile_image.setImageResource(R.drawable.defaultpic);
                                }else {
                                    Picasso.get().load(strImage).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(profile_image);
                                }
                            }
                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                        progressDialog.dismiss();
                        Toast.makeText(getActivity(),"Error Reading Detail " +e.toString(), Toast.LENGTH_LONG).show();
                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();

                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError{
            Map<String, String> params = new HashMap<>();
            params.put("id", getId);
            params.put("userType", user_type);
            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
    requestQueue.add(stringRequest);
}

public void onResume(){
    super.onResume();
    getUserDetail();
}

}

Это должен быть вывод строки json

{"read":[{"name":"sample","phone_number":"09473642044","gender":"Male","address":"Didto St.","occupation":"Tambay pa","birth_date":"4\/25\/1998","user_type":"Client","image":"https:\/\/isalonbyageeks.000webhostapp.com\/images\/1.jpeg"}],"success":"1","message":"success"}

, но вместо этого он показывает это

{"success":"0","message":""}

со следующей ошибкой Нет значения для чтения.

Что следуетЯ перехожу на мой getUserDetails()?

1 Ответ

0 голосов
/ 11 февраля 2019

записать код getJSONArray в случае успеха 1, например: в java-файле

if(success.equals("1")){ JSONArray jsonArray = jsonObject.getJSONArray("read"); }  

или в php-файле

else{ $result['read'] = array(); $result["success"] = "0"; $result["message"] = "$sql"; echo json_encode($result); } }
...