-1

I'm new to php, now trying to send arrayList data from android to Php MySQL.

In table work_details, I have 7 column (id, project, work_description, percentage, time_in, time_out, fk). Now I want to save the arraylist and fk to the table.

I have tried to code but I know this is not the correct way.

public void addWorkDetails(ArrayList<SearchResults> listItems, final long id) // listItems have project,workDescription,percentage,timeIn,timeOut
    {
        final JSONObject object= new JSONObject();

        for(int i=0;i<listItems.size();i++)
        {
            try
            {
                object.put("Count : "+String.valueOf(i + 1),listItems.get(i));
            }catch(JSONException e)
            {
                e.printStackTrace();
            }
        }

        class AddWorkDetails extends AsyncTask<String, Void, String> {
            ProgressDialog loading;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait",null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
            }

            @Override
            protected String doInBackground(String... params) {
                HashMap<String, String> data = new HashMap<String,String>();
                data.put("listItems",String.valueOf(object)); // not sure 
                data.put(Config.KEY_TWF,String.valueOf(id));
                RequestHandler rh=new RequestHandler();
                String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data);
                return  result;
            }
        }

        AddWorkDetails ru = new AddWorkDetails();
        ru.execute("listItems",String.valueOf(id)); // not sure
    }

Php

<?php

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

   $list[]=$_POST['listItems'];
   $id=$_POST['id'];

   foreach($list as $value){
   $value=mysqli_real_escape_string($val);

    $sql="INSERT INTO work_details (project, work_description, percentage, timeIn, timeOut, id) VALUES ('$val', '$id')";

  //Importing our db connection script
        require_once('dbConnect.php');

        //Executing query to database
        if(mysqli_query($con,$sql)){
            echo ' Added Successfully';
        }else{
            echo 'Could Not Add Data';
        }



        //Closing the database 
            mysqli_close($con);
        }
}
    ?>

Error

enter image description here

Any help would be greatly appreciated !!!

2
  • Dupe: stackoverflow.com/questions/4261133 Commented Dec 29, 2015 at 15:29
  • @JohnConde Thanks . It would be better if you send me the link on how to send arrayList data from android to php MySQL. Commented Dec 29, 2015 at 15:31

1 Answer 1

1

asyncTask:

class AddWorkDetails extends AsyncTask<String, Void, String> {
    ProgressDialog loading;


    JSONArray jsonArray;
    AddWorkDetails(JSONArray jsonArray){
        this.jsonArray = jsonArray
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait",null, true, true);
    }

    @Override
    protected String doInBackground(String... params) {
        HashMap<String, String> data = new HashMap<String,String>();
        data.put("listItems",jsonArray.toString());
        RequestHandler rh=new RequestHandler();
        String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data);
        return  result;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        loading.dismiss();
        Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
    }
}

function:

public void addWorkDetails(ArrayList<SearchResults> listItems, final long id)
{
    JSONArray jsonArray = new JSONArray();
    try
    {
        for (SearchResults s : listItems)
        {
            JSONObject object= new JSONObject();
            object.put("project", s.getProject());
            object.put("work_description", s.getDescription());
            object.put("percentage", s.getProgress());
            object.put("timeIn", s.getTimeIn());
            object.put("timeOut", s.getTimeOut());
            object.put("twf", String.valueOf(id));
            jsonArray.put(object);
        }
    }catch(JSONException e)
    {
        e.printStackTrace();
    }

    AddWorkDetails ru = new AddWorkDetails(jsonArray);
    ru.execute(); 
}

PHP script

<?php
 if($_SERVER['REQUEST_METHOD']=='POST'){
    $mysqli = new mysqli("localhost", "user", "password", "database");
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    $listItems = json_decode($_POST['listItems'], true); 
    $sql="INSERT INTO work_details 
    (project, work_description, percentage, timeIn, timeOut, twf) 
    VALUES 
    (?, ?, ?, ?, ?, ?)"; 

    if (!($stmt = $mysqli->prepare($sql))) {
         echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
         foreach($listItems as $item){ 
            $stmt->bind_param("ssssss", $item['project'], $item['work_description'], $item['percentage'], $item['timeIn'], $item['timeOut'], $item['twf']);
            if (!$stmt->execute()) {
                echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
            }
        } 
    }
    $mysqli->close();
}
?>
Sign up to request clarification or add additional context in comments.

7 Comments

How do I send listItems and id to a table? Is it possible?
Thanks for the answer. Can I change the position of 'val' and 'id' since the id is in the last column of table
Can I only change this line $sql="INSERT INTO work_details (val, id) VALUES ('$id','$val')"; ? Will it caused any effect?
Parse error: syntax error, unexpected ')', expecting '(' in C:\xampp\htdocs\Android\CRUD\addWorkDetails.php on line 6
the function is fine since the Toast display everything. The problem is php..how to log ?
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.