使用PHP从MySQl数据库获取SUM,然后在android textview中打印它

时间:2022-09-25 15:56:07

I need some help. I want to calculate the SUM of an amount column and then display it in a text view on my android app. Here is what I have done so far.

我需要一些帮助。我想计算金额列的SUM,然后在我的Android应用程序的文本视图中显示它。这是我到目前为止所做的。

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class BalanceActivity extends SwipeFunctionActivity
{
private Boolean exit = false;
Button buttonExpense, buttonIncome, buttonSaving;
ImageView helpImageView;
TextView totalIncomeNumberTV;
String ftotalintv = "http://192.168.0.3/myapp/ftotalintv.php";
RequestQueue requestQueue;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_balance);

    buttonExpense = (Button)findViewById(R.id.buttonExpense);
    buttonIncome = (Button)findViewById(R.id.buttonIncome);
    buttonSaving = (Button)findViewById(R.id.buttonSaving);

    helpImageView = (ImageView)findViewById(R.id.helpImageView);

    totalIncomeNumberTV = (TextView)findViewById(R.id.totalIncomeNumberTV);

    requestQueue = Volley.newRequestQueue(getApplicationContext());

    try
    {
        fetchTotalIncome();
    }

    catch (JSONException e)
    {
        e.printStackTrace();
    }

    buttonExpense.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            addExpenseMethod();
        }
    });

    buttonIncome.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            addIncomeMethod();
        }
    });

    buttonSaving.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            addSavingMethod();
        }
    });

    helpImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            instructionsMethod();
        }
    });

}

public void fetchTotalIncome() throws JSONException /*throws JSONException*/
{



    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, ftotalintv, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response)
        {
            try {
                JSONArray jsonArray = response.getJSONArray("transactions");
                for(int i = 0; i<jsonArray.length(); i++)
                {
                    JSONObject test = jsonArray.getJSONObject(i);
                    String totalIncome = test.getString("TotalIncome");

                    totalIncomeNumberTV.append(totalIncome);
                }
            }

            catch (JSONException e)
            {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener()
    {
        @Override
        public void onErrorResponse(VolleyError error)
        {

        }
    });
    requestQueue.add(jsonObjectRequest);
//
//        String data = "http://192.168.0.3/myapp/ftotalintv.php";
//        JSONObject jObject;
//        jObject = new JSONObject(data);
//        String total = jObject.getString("TotalIncome");
//        totalIncomeNumberTV.setText(ftotalintv);


    //totalIncomeNumberTV.setText("troll");
}

public void addExpenseMethod()
{
    startActivity(new Intent(getApplicationContext(), AddExpenseActivity.class));
}

public void addIncomeMethod()
{
    startActivity(new Intent(getApplicationContext(), AddIncomeActivity.class));
}

public void addSavingMethod()
{
    startActivity(new Intent(getApplicationContext(), AddSavingActivity.class));
}

public void instructionsMethod()
{
    startActivity(new Intent(getApplicationContext(), InstructionsActivity.class));
    //finish();
}

@Override
public void onSwipeLeft()
{
    super.onSwipeLeft();
    startActivity(new Intent(getApplicationContext(), TransactionsActivity.class));
    finish();
}

@Override
public void onSwipeRight()
{
    super.onSwipeRight();
    startActivity(new Intent(getApplicationContext(), ExpenseCategoriesActivity.class));
    finish();
}

public void onSwipeTop()
{
    super.onSwipeRight();
    startActivity(new Intent(getApplicationContext(), ChartActivity.class));
    finish();
}

@Override
public void onBackPressed()
{
    if (exit)
    {
        finish(); // finish activity
    }

    else
    {
        Toast.makeText(this, "Press Back again to Exit.", Toast.LENGTH_SHORT).show();
        exit = true;

        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                exit = false;
            }
        }
                , 3 * 1000);

    }
}

}

And here is my PHP file with the SUM query:

这是我的PHP文件与SUM查询:

<?php
require "init.php";

$query = mysqli_query($con, "SELECT *, SUM(TransAmount) AS 'TotalIncome' FROM transactions WHERE TransType = 'income';");
$row = mysqli_fetch_assoc($query);
$sum = $row['TotalIncome'];

if($query)
{
    echo $sum;
}

myslqi_close($con);
?>

As you can see i have some things commented inside my code. I tried to display the SUM with the Volley library but i failed. Please can someone help me? I really dont know what to do at this point. I need mostly help in the android app because the PHP file when i run it in the browser it works, but there is the possibility of having some problems there as well.

正如您所看到的,我在代码中注释了一些内容。我试图用Volley库显示SUM但是我失败了。请有人帮帮我吗?我真的不知道该做什么。我需要大多数Android应用程序的帮助,因为PHP文件,当我在浏览器中运行它工作,但也有可能在那里有一些问题。

1 个解决方案

#1


1  

In your php script you didnt encode your response in json and you may be didn't add json header as well in your php code. So your php code will be something like this

在您的PHP脚本中,您没有在json中编码您的响应,您可能也没有在您的PHP代码中添加json标头。所以你的PHP代码将是这样的

$sum = $row['TotalIncome'];
if($query)
{
   $data[]['TotalIncome'] = $sum;
   $result = array("transactions" => $data);
   echo json_encode($result);
}
myslqi_close($con);

Dont forget to add json type header in most top of the php script

别忘了在PHP脚本的大多数顶部添加json类型标头

#1


1  

In your php script you didnt encode your response in json and you may be didn't add json header as well in your php code. So your php code will be something like this

在您的PHP脚本中,您没有在json中编码您的响应,您可能也没有在您的PHP代码中添加json标头。所以你的PHP代码将是这样的

$sum = $row['TotalIncome'];
if($query)
{
   $data[]['TotalIncome'] = $sum;
   $result = array("transactions" => $data);
   echo json_encode($result);
}
myslqi_close($con);

Dont forget to add json type header in most top of the php script

别忘了在PHP脚本的大多数顶部添加json类型标头