Java 我想从listview中选择username文本字段,并使用该用户名删除mysql数据库中的数据
我想在listview中显示MySQL表数据,还需要在屏幕底部添加删除按钮。用户必须选择列表项,然后单击delete按钮,从mysql表和listview中删除特定数据。我可以正确显示记录,但无法从列表项中选择用户名字段 查看用户活动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:/
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());
}