只有具有最大ID的列表中可以被删除 [英] Only the list which has max id can be deleted
问题描述
我是新来的 PHP
和我卡住通过找到 MAX(ID)
给出了具体的ID。
在活动A ,还有有一个的ListView
。当列表检测长preSS,它会检查 ID
是否是最大ID
。如果是的话,它会删除,如果没有,它会显示的列表无法删除
这是我都试过了。
listViewUpdate.setOnItemLongClickListener(新AdapterView.OnItemLongClickListener(){
公共布尔onItemLongClick(最终适配器视图<指p,视图V,最终诠释宝,长ID){ n = details1.get(PO).getID();
AlertDialog.Builder建设者=新AlertDialog.Builder(getActivity());
builder.setTitle(删除);
builder.setMessage(你确定要删除吗?);
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton(是,新DialogInterface.OnClickListener(){
公共无效的onClick(DialogInterface对话,诠释II){
checkMaxID(ID,ID); // ID为外键
//删除(ID);
objadapter.removeItem(PO);
}
}); 公共无效checkMaxID(最终诠释FOREIGNKEY,最终字符串ID)
{
类检查扩展的AsyncTask<太虚,太虚,字符串> {
// ProgressDialog负荷;
@覆盖
在preExecute保护无效(){
super.on preExecute();
//装载= ProgressDialog.show(Edit_Staff.this,更新...,稍候...,假的,假的);
} @覆盖
保护无效onPostExecute(String s)将{
super.onPostExecute(多个);
// loading.dismiss();
Toast.makeText(getActivity()中,s,Toast.LENGTH_LONG).show();
} @覆盖
保护字符串doInBackground(虚空...... PARAMS){
HashMap的<字符串,字符串> HashMap的=新的HashMap<>();
hashMap.put(Configs.KEY_ID,身份证);
hashMap.put(Configs.KEY_TWD,将String.valueOf(FOREIGNKEY));
RequestHandler RH =新RequestHandler();
字符串s = rh.sendPostRequest(Configs.URL_CHECK_ID,HashMap的);
返回S;
}
} 检查UE =新支票();
ue.execute();
}
checkID.php
< PHP
如果($ _ SERVER ['REQUEST_METHOD'] =='POST'){ //获取值 $ n = $ _GET ['身份证'];
$ FOREIGNKEY = $ _GET ['FOREIGNKEY'];
//创建一个SQL查询
$的SQL =SELECT MAX(ID)FROM work_details WHERE TWD ='$ FOREIGNKEY'; //导入我们的数据库连接的脚本
require_once('dbConnect.php'); //执行查询数据库
如果($ ID == MAX(ID)){ $的SQL =DELETE FROM work_details WHERE ID = $ ID;; }其他{
回声名单不能被删除';
} //关闭数据库
mysqli_close($ CON);
}
?>
错误
假设只有最大的ID被删除,但现在的名单扯平删除
它的id是不是最大的。
块引用>
所以你不能获取解决方案在此code你没有执行查询。
试试这个办法:
< PHP
如果(使用isset($ _ POST ['身份证'],$ _ POST ['TWD'])){
/ *导入我们的数据库连接脚本* /
require_once('dbConnect.php');
/ *检查连接* /
如果(mysqli_connect_errno()){
的printf(连接失败:%S \\ n,mysqli_connect_error());
出口();
}
$ ID = mysqli_real_escape_string($ CON,$ _ POST ['身份证']);
$ TWD = mysqli_real_escape_string($ CON,$ _ POST ['TWD']); $的SQL =SELECT MAX(ID)为MaxId FROM work_details WHERE TWD ='$ TWD'; 如果($结果= mysqli_query($ CON,$ SQL)){
/ *获取关联数组* /
如果($行= mysqli_fetch_row($结果)){
如果($行[0] ===的$ id){
$的SQL =DELETE FROM work_details WHERE ID ='$ ID';;
如果($结果= mysqli_query($ CON,$ SQL)){
回声成功;
}其他{
回声'失败';
}
}
}
/ *无结果集* /
mysqli_free_result($结果);
}
/ *关闭连接* /
mysqli_close($ CON);
}?>I'm new to
php
and I get stuck to find themax(id)
by given a specific id.In activity A, there has a
listView
. When the list detect long press, it will check whether theid
is themax id
. If yes, it will deleted, if not, it will display list cannot be deleted.This is what I have tried.
listViewUpdate.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { public boolean onItemLongClick(final AdapterView<?> p, View v, final int po, long id) { iD = details1.get(po).getID(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Delete"); builder.setMessage("Are you sure you want to delete?"); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int ii) { checkMaxID(ID,iD); // ID is foreign key // delete(iD); objadapter.removeItem(po); } }); public void checkMaxID(final int foreignKey,final String iD) { class check extends AsyncTask<Void,Void,String>{ // ProgressDialog loading; @Override protected void onPreExecute() { super.onPreExecute(); // loading = ProgressDialog.show(Edit_Staff.this,"Updating...","Wait...",false,false); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); // loading.dismiss(); Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show(); } @Override protected String doInBackground(Void... params) { HashMap<String,String> hashMap = new HashMap<>(); hashMap.put(Configs.KEY_ID, iD); hashMap.put(Configs.KEY_TWD, String.valueOf(foreignKey)); RequestHandler rh = new RequestHandler(); String s = rh.sendPostRequest(Configs.URL_CHECK_ID, hashMap); return s; } } check ue = new check(); ue.execute(); }
checkID.php
<?php if($_SERVER['REQUEST_METHOD']=='POST'){ //Getting values $id = $_GET['id']; $foreignKey = $_GET['foreignKey']; //Creating an sql query $sql = "SELECT MAX(id) FROM work_details WHERE twd = '$foreignKey'"; //Importing our db connection script require_once('dbConnect.php'); //Executing query to database if($id==max(id)){ $sql = "DELETE FROM work_details WHERE id=$id;"; }else{ echo 'list cannot be deleted'; } //Closing the database mysqli_close($con); } ?>
Error
Suppose only the max id get deleted, but now the list get deleted even its id is not maximum
解决方案In this code you did not execute the queries so you cannot fetch.
Try this approach:
<?php if(isset($_POST['id'], $_POST['twd'])){ /*Importing our db connection script*/ require_once('dbConnect.php'); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $id = mysqli_real_escape_string($con, $_POST['id']); $twd = mysqli_real_escape_string($con, $_POST['twd']); $sql ="SELECT MAX(id) as MaxId FROM work_details WHERE twd = '$twd'"; if ($result = mysqli_query($con, $sql)) { /* fetch associative array */ if ($row = mysqli_fetch_row($result)) { if($row[0] === $id){ $sql ="DELETE FROM work_details WHERE id='$id';"; if ($result = mysqli_query($con, $sql)) { echo 'success'; }else{ echo 'failed'; } } } /* free result set */ mysqli_free_result($result); } /* close connection */ mysqli_close($con); } ?>
这篇关于只有具有最大ID的列表中可以被删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!