Java 我想从listview中选择username文本字段,并使用该用户名删除mysql数据库中的数据

Java 我想从listview中选择username文本字段,并使用该用户名删除mysql数据库中的数据,java,php,android,mysql,listview,Java,Php,Android,Mysql,Listview,我想在listview中显示MySQL表数据,还需要在屏幕底部添加删除按钮。用户必须选择列表项,然后单击delete按钮,从mysql表和listview中删除特定数据。我可以正确显示记录,但无法从列表项中选择用户名字段 查看用户活动 public class ViewUser extends AppCompatActivity implements View.OnClickListener { private static final String VIEW_URL= "http:/

我想在listview中显示MySQL表数据,还需要在屏幕底部添加删除按钮。用户必须选择列表项,然后单击delete按钮,从mysql表和listview中删除特定数据。我可以正确显示记录,但无法从列表项中选择用户名字段

查看用户活动

public class ViewUser extends AppCompatActivity implements View.OnClickListener {

    private static final String VIEW_URL= "http://ajaygohel012.000webhostapp.com/ViewUser.php";

    ListView listUser;
    List<User> userlist;
    private Button btnDelete;

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

        listUser= findViewById(R.id.listUser);
        userlist= new ArrayList<>();
        btnDelete= (Button) findViewById(R.id.btnDelete);

        final TextView viewUserName = (TextView) findViewById(R.id.viewUserName);

        loadUserList();

        listUser.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                listUser.setOnItemSelectedListener(this);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String username = viewUserName.getText().toString();
                Response.Listener<String> responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                            try {
                                JSONObject js = new JSONObject(response);
                                boolean success = js.getBoolean("success");
                                if (success){
                                    finish();
                                    startActivity(getIntent());
                                }
                            }catch(JSONException e){
                                e.printStackTrace();
                            }
                    }
                };

                DeleteRequest deleteRequest= new DeleteRequest(username, responseListener);
                RequestQueue queue= Volley.newRequestQueue(ViewUser.this);
                queue.add(deleteRequest);
            }
        });
    }
    private void loadUserList(){
        final ProgressBar progressBar= (ProgressBar) findViewById(R.id.progressBar);
        progressBar.setVisibility(View.VISIBLE);

        StringRequest stringRequest= new StringRequest(Request.Method.GET, VIEW_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                progressBar.setVisibility(View.INVISIBLE);

                try {
                    JSONObject jsonObject= new JSONObject(response);
                    JSONArray jsonArray = jsonObject.getJSONArray("data");

                    for (int i=0;jsonArray.length()>i;i++){
                        final JSONObject j= jsonArray.getJSONObject(i);
                        User user=new User();

                        String name = j.getString("name");
                        String empcode = j.getString("empcode");
                        String location = j.getString("location");
                        String department = j.getString("department");
                        String username = j.getString("username");

                        user.setName(name);
                        user.setEmpcode(empcode);
                        user.setLocation(location);
                        user.setDepartment(department);
                        user.setUsername(username);
                        userlist.add(user);
                    }
                    ListViewAdapter adapter = new ListViewAdapter(userlist, ViewUser.this);
                    listUser.setAdapter(adapter);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(ViewUser.this, error.getMessage(), Toast.LENGTH_SHORT);
            }
        });
        RequestQueue requestQueue= Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
    @Override
    public void onClick(View view) {
        if (view==btnDelete){
            finish();
            startActivity(new Intent(this, ViewUser.class));
        }
    }
}
ListViewAdapter

public class ListViewAdapter extends ArrayAdapter<User> {
    private List<User> userlist;
    private Context cntx;

    public ListViewAdapter(List<User> userlist, Context cntx){
        super(cntx, R.layout.list_item, userlist);
        this.userlist=userlist;
        this.cntx=cntx;
    }
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater= LayoutInflater.from(cntx);
        View listViewitem= inflater.inflate(R.layout.list_item,null, true);

        TextView viewName= listViewitem.findViewById(R.id.viewName);
        TextView viewEmployeeCode= listViewitem.findViewById(R.id.viewEmployeeCode);
        TextView viewLocation= listViewitem.findViewById(R.id.viewLocation);
        TextView viewDepartment= listViewitem.findViewById(R.id.viewDepartment);
        TextView viewUserName= listViewitem.findViewById(R.id.viewUserName);

        User user=userlist.get(position);

        viewName.setText(user.getName());
        viewEmployeeCode.setText(user.getEmpcode());
        viewLocation.setText(user.getLocation());
        viewDepartment.setText(user.getDepartment());
        viewUserName.setText(user.getUsername());

        return listViewitem;
    }
}
公共类ListViewAdapter扩展了ArrayAdapter{
私有列表用户列表;
私有上下文cntx;
公共ListViewAdapter(列表用户列表,上下文cntx){
super(cntx,R.layout.list_项,userlist);
this.userlist=userlist;
这个.cntx=cntx;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气机=LayoutInflater.from(cntx);
查看列表视图项=充气机。充气(R.layout.list\u项,null,true);
TextView viewName=listViewitem.findViewById(R.id.viewName);
TextView viewEmployeeCode=listViewitem.findViewById(R.id.viewEmployeeCode);
TextView viewLocation=listViewitem.findViewById(R.id.viewLocation);
TextView viewDepartment=listViewitem.findViewById(R.id.viewDepartment);
TextView viewUserName=listViewitem.findViewById(R.id.viewUserName);
User=userlist.get(位置);
viewName.setText(user.getName());
viewEmployeeCode.setText(user.getEmpcode());
viewLocation.setText(user.getLocation());
viewDepartment.setText(user.getDepartment());
viewUserName.setText(user.getUsername());
返回listViewitem;
}
}
删除用户PHP

<?php
$connection = mysqli_connect("localhost", "abc", "xyz", "id3275958_user");


if(isset($_POST['username'])) {
$username = $_POST['username'];

$result = mysql_query("DELETE FROM user WHERE username = $username");

$response = array();

if (mysql_affected_rows() > 0) {
    $response["success"] = 1;
    $response["message"] = "User successfully deleted";
} else {
    $response["success"] = 0;
    $response["message"] = "No User found";
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
}
echo json_encode($response);
?>


我还制作了php脚本,并给出了正确的响应。只需从我的应用发送用户名就可以了。

您的代码运行正常

只想从我的应用发送用户名是剩余的

我建议从
btnDelete
删除您的活动

btnDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String username = viewUserName.getText().toString();
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                        try {
                            JSONObject js = new JSONObject(response);
                            boolean success = js.getBoolean("success");
// TODO: you could add Response Here from your backend the remaining username
                            if (success){
                                finish();
                                startActivity(getIntent());
                            }
                        }catch(JSONException e){
                            e.printStackTrace();
                        }

           ...
        }
    });

你的代码运行正常

只想从我的应用发送用户名是剩余的

我建议从
btnDelete
删除您的活动

btnDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String username = viewUserName.getText().toString();
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                        try {
                            JSONObject js = new JSONObject(response);
                            boolean success = js.getBoolean("success");
// TODO: you could add Response Here from your backend the remaining username
                            if (success){
                                finish();
                                startActivity(getIntent());
                            }
                        }catch(JSONException e){
                            e.printStackTrace();
                        }

           ...
        }
    });

在这一行PHP之后,您可以检查连接是否正常

$connection=mysqli_connect(“本地主机”、“abc”、“xyz”、“id3275958_用户”)


在这一行PHP之后,您可以检查连接是否正常

$connection=mysqli_connect(“本地主机”、“abc”、“xyz”、“id3275958_用户”)


这是很多阅读,但我认为下面的链接会有所帮助


阅读量很大,但我认为下面的链接会有所帮助


我的用户名未被选中,无法传递到我的php脚本,这就是问题所在@RIC17101我已经在我的邮递员身上试用了你的API,但不起作用,尤其是,请尝试先测试你的WEB API,或者在这里发布它,以便我们能够提供帮助。检查我添加了一个php脚本,并给了我一个正确的响应。{“success”:0,“message”:“缺少必填字段”}@ric17101是否尝试发布“username”参数?您只需访问页面而无需任何参数,应首先使用正确的参数/参数运行DeleteUser.php。或者你可以发布删除函数的PHP代码我在这里更新了我的删除PHP代码,你可以检查@Ric17101my username是否未被选中并传递到我的PHP脚本这就是问题所在@RIC17101我已经在我的邮递员身上试用了你的API,但不起作用,尤其是,请尝试先测试你的WEB API,或者在这里发布它,以便我们能够提供帮助。检查我添加了一个php脚本,并给了我一个正确的响应。{“success”:0,“message”:“缺少必填字段”}@ric17101是否尝试发布“username”参数?您只需访问页面而无需任何参数,应首先使用正确的参数/参数运行DeleteUser.php。或者你可以发布删除函数的PHP代码我在这里更新了我的删除PHP代码你可以检查@RIC17101尝试在你的PHP文件上使用add this首先看看有什么问题,我们无法通过
{“success”:0,“message”:“缺少必填字段”}
,对吗?是的,我添加了那部分。。它给了我回应。。。我没有给出我的用户名,这是我的回答。。{“成功”:0,“消息”:“缺少必需字段”}。。。。如果我给出的用户名比使用现有用户名调用API后执行删除操作的用户名要多,我们将首先检查并尝试在PHP文件中使用add this以查看错误,我们无法通过响应
{“success”:0,“message”:“Required field is missing”}
,从后端得出结论,是吗?是的,我加了那部分。。它给了我回应。。。我没有给出我的用户名,这是我的回答。。{“成功”:0,“消息”:“缺少必需字段”}。。。。如果我将提供用户名,但它将执行删除操作。在您使用现有用户名调用API后发布响应,我们将进行检查
btnDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String username = viewUserName.getText().toString();
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                        try {
                            JSONObject js = new JSONObject(response);
                            boolean success = js.getBoolean("success");
// TODO: you could add Response Here from your backend the remaining username
                            if (success){
                                finish();
                                startActivity(getIntent());
                            }
                        }catch(JSONException e){
                            e.printStackTrace();
                        }

           ...
        }
    });
username_count

String count = js.getString("username_count"); // Just convert into Int if you needed
if(!$connection)
{ // creation of the connection object failed
    die("connection object not created: ".mysqli_error($con));
}

if (mysqli_connect_errno()) 
{ // creation of the connection object has some other error
    die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error());
}