Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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
将JSON数组从android发送到Php_Php_Android_Mysql_Arrays_Json - Fatal编程技术网

将JSON数组从android发送到Php

将JSON数组从android发送到Php,php,android,mysql,arrays,json,Php,Android,Mysql,Arrays,Json,我必须将产品ID、描述、数量和总价的数组存储到数据库中。我定义了json解析器类和userfunctions类。在此之前,我只为每个变量发送了一个Json值。根据我当前的代码,我无法将其作为数组发送。以下是产品阵列的代码 public class ScreenSecondFragment extends Fragment { public ScreenSecondFragment(){} public double pFinalPrice; public double[] pTotalPric

我必须将产品ID、描述、数量和总价的数组存储到数据库中。我定义了json解析器类和userfunctions类。在此之前,我只为每个变量发送了一个Json值。根据我当前的代码,我无法将其作为数组发送。以下是产品阵列的代码

public class ScreenSecondFragment extends Fragment {

public ScreenSecondFragment(){}
public double pFinalPrice;
public double[] pTotalPrice;
public String[] sPID;
public String[] sProduct;
public String[] sQuantity;
public String[] sTotalPrice;
public String sFinalPrice;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_secondscreen, container, false);
    TextView showCartContent    = (TextView)rootView.findViewById(R.id.showCart);
    final Button thirdBtn       = (Button) rootView.findViewById(R.id.third);

    //Get Global Controller Class obiect (see application tag in AndroidManifest.xml)
    final Controller aController = (Controller) getActivity().getApplicationContext();

    // Get Cart Size
    final int cartSize = aController.getCart().getCartSize();


    if(cartSize >0)
    {
        for(int i=0;i<cartSize;i++)
        {   
            final int counter = i;
            // Get probuct data from product data arraylist
            String pID = aController.getProducts(i).getProductId();
            sPID[i] = pID;
            String pName = aController.getProducts(i).getProductName();
            sProduct[i] = pName;
            double pPrice   = aController.getProducts(i).getProductPrice();
            int pQuantity   = aController.getProducts(i).getProductQuantity();
            sQuantity[i] = Integer.toString(pQuantity);
            pTotalPrice[i] = pPrice * pQuantity;
            sTotalPrice[i] = Double.toString(pTotalPrice[i]); 

            TableRow row= new TableRow(this.getActivity());
            row.setBackgroundColor(android.graphics.Color.WHITE);

            TextView product = new TextView(this.getActivity());
            product.setText(pName+"    ");
            product.setTextSize(15);
            //Add textView to LinearLayout
            row.addView(product);

            TextView price = new TextView(this.getActivity());
            price.setText(String.format("RM %.2f",pPrice));
            price.setTextSize(15);
            //Add textView to LinearLayout
            row.addView(price);

            TextView quantity = new TextView(this.getActivity());
            quantity.setText(pQuantity+"     ");
            quantity.setTextSize(15);
            //Add textView to LinearLayout
            row.addView(quantity);

            TextView totalprice = new TextView(this.getActivity());
            totalprice.setText(String.format("RM %.2f",pTotalPrice[i]));
            totalprice.setTextSize(15);
            //Add textView to LinearLayout
            row.addView(totalprice);

            //Update final price
            pFinalPrice += pTotalPrice[i];

            final int index = i;
            Log.i("TAG", "index :" + index);
            // Get product instance for index

            final ModelProducts tempProductObiect = aController.getProducts(index);

            final Button btnRemove = new Button(this.getActivity());
            btnRemove.setId(i+1);
            btnRemove.setText("Delete");

            btnRemove.setOnClickListener(new OnClickListener()
            {
                @Override public void onClick(View v)
                {

                    if(aController.getCart().checkProductInCart(tempProductObiect))
                    {
                        // Product not Exist in cart so add product to
                        // Cart product arraylist
                        aController.getCart().removeProducts(tempProductObiect);

                        pFinalPrice -= pTotalPrice[counter];
                        sFinalPrice = Double.toString(pFinalPrice);
                        finalprice.setText(String.format("RM %.2f",pFinalPrice));
                        Toast.makeText(getActivity().getApplicationContext(), "Now Cart size: "+aController.getCart().getCartSize(), 
                                Toast.LENGTH_LONG).show();
                    }
                    // row is your row, the parent of the clicked button
                    View row = (View) v.getParent();
                    // container contains all the rows, you could keep a variable somewhere else to the container which you can refer to here
                    ViewGroup container = ((ViewGroup)row.getParent());
                    // delete the row and invalidate your view so it gets redrawn
                    container.removeView(row);
                    container.invalidate();

                }
            });

            row.addView(btnRemove);

            ll.addView(row,i+1, params);            
        }
    }


    thirdBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if(cartSize >0)
            {

                FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
                mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
                mFragmentTransaction.replace(R.id.frame_container, new BillingAddressOriFragment(), "Cart");
                mFragmentTransaction.commit();
            }
            else
                Toast.makeText(getActivity().getApplicationContext(), 
                        "Shopping cart is empty.", 
                        Toast.LENGTH_LONG).show();
        }
    }); 
    return rootView;
}

 private class ProcessOrder extends AsyncTask<String, String, JSONObject> {

        private ProgressDialog pDialog;

            /** This should be arrray of product
        String username, pid, products, quantity, totalprice, finalprice;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            DatabaseHandler db = new DatabaseHandler(getActivity().getApplicationContext());

            HashMap<String,String> user = new HashMap<String, String>();
            user = db.getUserDetails();

            username = user.get("username");

            pDialog = new ProgressDialog(ScreenSecondFragment.this.getActivity());
            pDialog.setTitle("Contacting Servers");
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected JSONObject doInBackground(String... args) {

                /** This is where I should send the array of product to userFunction class**/
            UserFunctions userFunction = new UserFunctions();
            JSONObject json = userFunction.orderDetails(username, pid, products, quantity, totalprice, finalprice);

            Log.d("Button", "Order");
            return json;


        }


  }

 public void NetAsync(View view){
     new ProcessOrder().execute();
 }
              }
这是JSON解析器类

public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url, List params) {
    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new UrlEncodedFormEntity(params));
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
        Log.e("JSON", json);
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    // return JSON String
    return jObj;
}
}
我需要将数组数据存储到mysql表中,如下所示 表:查看顺序 列:OrderID、ProductIDforeign键、数量、总价、最终值


我希望我知道如何编辑json和函数,并编写php代码来解码json并将其存储到数据库中。谢谢

尝试使用此api文件将数据插入mysql数据库

    <?php
    if (isset($_POST['OrderID']))
    {
            $OrderID =$_POST['OrderID'];
            $ProductID = $_POST['ProductID'];
            $quantity = $_POST['quantity'];
            $total_price = $_POST['total_price'];
            $finalprice = $_POST['finalprice'];
    $sql = mysql_query("INSERT INTO view_order(OrderID,ProductID,quantity,total_price,finalprice) VALUES('$OrderID','$ProductID','$quantity','$total_price','$finalprice')")or die(mysql_error());
    $count1 = mysql_num_rows($sql);
    if($count1==1)
        {
          echo json_encode($response);
        }
    else{
          echo "no data insert";
        }      
    }
    ?>
    <?php
    if (isset($_POST['OrderID']))
    {
            $OrderID =$_POST['OrderID'];
            $ProductID = $_POST['ProductID'];
            $quantity = $_POST['quantity'];
            $total_price = $_POST['total_price'];
            $finalprice = $_POST['finalprice'];
    $sql = mysql_query("INSERT INTO view_order(OrderID,ProductID,quantity,total_price,finalprice) VALUES('$OrderID','$ProductID','$quantity','$total_price','$finalprice')")or die(mysql_error());
    $count1 = mysql_num_rows($sql);
    if($count1==1)
        {
          echo json_encode($response);
        }
    else{
          echo "no data insert";
        }      
    }
    ?>