首页 > 解决方案 > 为什么我的删除按钮在 PHP 中不起作用?

问题描述

我刚开始使用 PHP,有点迷茫。我觉得这可能是我遗漏的一些小东西,但是当我单击删除按钮时它不起作用。它没有给我任何错误,按钮只是单击并且什么都不做。任何想法为什么?我花了几个小时试图弄清楚,但我什么也没想到。我已经完成了添加用户并以几乎相同的方式显示用户并且它有效,但这让我很难过。提前致谢 :)

users.controller.php

static public function DeleteUserController(){

        if(isset($_GET["userId"])){

            $table ="users";
            $data = $_GET["userId"];
            var_dump($data);
            $answer = UserModel::DeleteUserModel($table, $data);

            if($answer == "ok"){

                echo'<script>

                swal({
                      type: "success",
                      title: "User has been Deleted",
                      showConfirmButton: true,
                      confirmButtonText: "Close"

                      }).then(function(result){

                        if (result.value) {

                        window.location = "users";

                        }
                    })

                </script>';

            }       

        }

    }

users.model.php

static public function DeleteUserModel($table, $data){

        $stmt = Connection::connect()->prepare("DELETE FROM $table WHERE id = :id");

        $stmt -> bindParam(":id", $data, PDO::PARAM_STR);

        if ($stmt->execute()) {

            return 'ok';

        } else {

            return 'error';

        }

        $stmt -> close();

        $stmt = null;
    }

用户.js

$(".btnDeleteUser").click(function(){
    var userId = $(this).attr("userId");
    var username = $(this).attr("username");

    swal({
        title: 'Are you sure you want to delete user?',
        type: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
          cancelButtonColor: '#d33',
          cancelButtonText: 'Cancel',
          confirmButtonText: 'Confirm'
        }).then((result)=>{

        if(result.value){

          window.location = "index.php?route=users&userId="+userId+"&username="+username;

        }

    })

})

用户.php

<button class="btn btn-danger btnDeleteUser" userId="'.$value["id"].'" username="'.$value["user"].'"><i class="fa fa-times"></i></button>

用户.php

<?php

  $deleteUser = new ControllerUsers();
  $deleteUser -> DeleteUserController();

?> 

索引.php

<?php

require_once "controllers/template.controller.php";
require_once "controllers/products.controller.php";
require_once "controllers/sales.controller.php";
require_once "controllers/users.controller.php";

require_once "models/products.model.php";
require_once "models/sales.model.php";
require_once "models/users.model.php";

$template = new TemplateController();
$template -> tempController();

标签: phpmysql

解决方案


我在这个脚本中看到了一些我们可以开始的问题。首先,它是公共静态函数,而不是文档中的静态公共函数php Static。接下来,您将实例化ControllerUserswith并将 the作为实例化方法new ControllerUsers()调用。DeleteUserController当您使用静态方法或变量时,您不会实例化该类,而是直接使用ControllerUsers::DeleteUserController(). 再次,从上面查看 php Static。这就是使用静态方法的目的,您可以在不实例化类的情况下调用它们。

我的建议是在你第一次学习 PHP 时根本不要使用静态方法,除非你熟悉其他编程语言及其对静态方法的使用。静态方法通常不受欢迎,并且无论如何在现实世界中的使用有限,因此最好实例化类并以这种方式使用方法。

无论如何,回到剧本。当您创建程序来删除用户时,使用 POST 而不是 GET 更受欢迎,因为它不会在 URL 中传输数据,这使得它更安全。我建议切换到 POST 操作而不是 GET 操作。

另外,您可以发布 index.php 文件吗?我很想知道这些路线在您的程序环境中是如何工作的。

让我们先从这些开始,然后再继续。

更新:

因此,如果您单击删除用户按钮但没有任何反应,甚至没有任何错误,可能有几个不同的原因。第一个大问题是该users.js文件尚未添加到具有“删除用户”按钮的页面,因此请确保已将其添加到该页面。

接下来,您需要确保在使用 Jquery 中的单击功能之前已加载页面。检查here以供参考,Jquery Click

就我个人而言,我.click在 Jquery 中使用该方法时遇到了问题,因此我通常使用该.on方法。我发现这是一种功能更好的更新方法,所以也试试看。您也可以在上面的 Jquery Click 中找到一个示例。


推荐阅读