-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 !!!

John Joe
  • 12,412
  • 16
  • 70
  • 135

1 Answers1

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();
}
?>
meda
  • 45,103
  • 14
  • 92
  • 122
  • How do I send `listItems` and `id` to a table? Is it possible? – John Joe Dec 29 '15 at 15:34
  • Thanks for the answer. Can I change the position of 'val' and 'id' since the `id` is in the last column of table – John Joe Dec 29 '15 at 15:43
  • Can I only change this line `$sql="INSERT INTO work_details (`val`, `id`) VALUES ('$id','$val')";` ? Will it caused any effect? – John Joe Dec 29 '15 at 15:53
  • `Parse error: syntax error, unexpected ')', expecting '(' in C:\xampp\htdocs\Android\CRUD\addWorkDetails.php on line 6` – John Joe Dec 29 '15 at 15:58
  • the `function` is fine since the `Toast` display everything. The problem is php..how to log ? – John Joe Dec 30 '15 at 02:26
  • @JohnJoe go to the chat – meda Dec 30 '15 at 02:43
  • Can you help ?http://stackoverflow.com/questions/34785971/save-multiple-image-into-mysql-php-from-android-but-only-one-image-get-inserted – Tony Jan 14 '16 at 12:48