Товар в корзине recylerview может быть введен все в базу данных - PullRequest
0 голосов
/ 28 февраля 2019

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

вот мой код корзины и php, что я использовал его

komen.php

<?php require_once 'index.php';if ($_SERVER['REQUEST_METHOD'] =='POST'){

$nama = $_POST['nama'];
$komen = $_POST['komen'];

$sql = "INSERT INTO komen_table (nama, komen) VALUES ('$nama', '$komen')";

if ( mysqli_query($conn, $sql) ) {
    $result["success"] = "1";
    $result["message"] = "success";

    echo json_encode($result);
    mysqli_close($conn);

} else {

    $result["success"] = "0";
    $result["message"] = "error";

    echo json_encode($result);
    mysqli_close($conn);
}}?>

Keranjang.java

public class KeranjangFragment extends Fragment {
private EditText product,prices;
TextView total;
Button btnpesan;
String tr;
private static String URL_pesan ="http://mercyshopper.000webhostapp.com/product.php";

public KeranjangFragment() {
}

public static List<Product> example = new ArrayList<>();
ProductAdapter madapter;
public String title;
public int productImage;
public double price;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View krnjg =inflater.inflate(R.layout.fragment_keranjang,container,false);

    RecyclerView rec = krnjg.findViewById(R.id.rc1);
    LinearLayoutManager aw1 =new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
    rec.setLayoutManager(aw1);


    total = krnjg.findViewById(R.id.vtotal);
    madapter = new ProductAdapter(getContext(), example, getLayoutInflater(), total);
    rec.setAdapter(madapter);
    product = krnjg.findViewById(R.id.barang);
    prices = krnjg.findViewById(R.id.hrga);

    btnpesan = krnjg.findViewById(R.id.btnpsn);
    Locale locale = new Locale("in","ID");

    NumberFormat formatrupiah = NumberFormat.getCurrencyInstance(locale);
    total.setText(formatrupiah.format(madapter.getTotalPrice()));

    btnpesan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            placeorder();
            final String mtotal = total.getText().toString();
            Intent intent = new Intent(getActivity(), CheckoutActivity.class);
            intent.putExtra("total",mtotal);
            startActivity(intent);
        }
    });

    return krnjg;
}

этот порядок размещения только для ввода элемента на сервер, который я могу просто ввести один элемент не может два или многие из них

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

    final String product = madapter.getproduct();
    final String prices = madapter.getprice();
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_pesan,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");
                        if (success.equals("1")){
                            Intent intent = new Intent(getActivity(), CheckoutActivity.class);
                            intent.putExtra("product", product);
                            intent.putExtra("price", prices);

                            Toast.makeText(getActivity(), "Data Tersimpan", Toast.LENGTH_SHORT).show();
                            pDial.dismiss();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getActivity(), "Gagal Menyimpan", Toast.LENGTH_SHORT).show();
                        pDial.dismiss();
                    }
                }
            },new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getActivity(), "Tidak Dapat Menyimpan", Toast.LENGTH_SHORT).show();
            pDial.dismiss();
        }
    })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("product",product);
            params.put("price",prices);
            return params;
        }
    };
    RequestQueue requestQueue= Volley.newRequestQueue(getActivity());
    requestQueue.add(stringRequest);

}

так что я должен сделать, потому что просмотрщик, который я использовал, я изменил текстовое представление, стал редактируемым текстом, который не может изменить его пользователь.а также, если я использовал строку, элемент, который входит в базу данных, является нулевым или "".если я добавил строковый запрос для (int i = 0; i

Product prod = new Product; prod.setTitle(jsonObject.getString(product)); example.add(prod);

, то значение, которое может быть в базе данных, может быть многократным, но один и тот же элемент, такой как зацикливание одного и того же элемента, но всегда идти в ловушку, что будет ошибкой. Мне нужнорешил и знаю, в чём виновата моя благодарность

...