只有具有最大ID的列表中可以被删除 [英] Only the list which has max id can be deleted

查看:219
本文介绍了只有具有最大ID的列表中可以被删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的 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 the max(id) by given a specific id.

In activity A, there has a listView. When the list detect long press, it will check whether the id is the max 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆