Sign up ×
Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them, it only takes a minute:

I have to store an array of products ids, description, quantity and total price to the database. I defined the json parser class, and userfunctions class. before this I sent only single value of Json for each variables. I have problem to send it as array based on my current codes. Below are the codes the array of products.

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();
 }
              }

This is the user function class that should send the value to the php by using json parser. However I dont have idea to convert it to send it as array.

public class UserFunctions {
private JSONParser jsonParser;

//URL of the PHP API
private static String orderURL = "http://www.xxx.com/xxxx_login_api/";

private static String order_tag = "order";

// constructor
public UserFunctions(){
    jsonParser = new JSONParser();
}


/**
 * Function store order details
 **/
public JSONObject orderDetails(String username, String pid, String products, String quantity, String totalprice, String finalprice) {
    // Building Parameters
    List params = new ArrayList();
    params.add(new BasicNameValuePair("tag", billing_tag));
    params.add(new BasicNameValuePair("pid", pid));
    params.add(new BasicNameValuePair("username", username));
    params.add(new BasicNameValuePair("products", products));
    params.add(new BasicNameValuePair("quantity", quantity));
    params.add(new BasicNameValuePair("totalprice", totalprice));
    params.add(new BasicNameValuePair("final", finalprice));
    JSONObject json = jsonParser.getJSONFromUrl(orderURL,params);
    return json;
} 


   } 
}

This is the JSON parser class.

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;
}
}

I need to store the array data to the mysql table as below
Table : view_order column : OrderID, ProductID(foreign key), quantity, total_price, final_final

I wish I know how to edit the json and function plus write the php code to decode the JSON and store it to database. Thanks

share|improve this question

1 Answer 1

Try this api file to insert data into mysql database

    <?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";
        }      
    }
    ?>
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.