You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP表格模态框确认删除功能失效问题求助

解决模态框确认后删除表格行的问题

问题根源

  1. 原页面删除按钮为<a>标签,点击时会触发默认跳转,且模态框表单未传递目标用户ID,导致delete.php无法获取待删除数据的ID。
  2. delete.php的POST请求处理逻辑依赖$_GET['id']赋值的$userid,但POST请求时该变量未初始化,无法执行删除操作。

主页面代码修改

1. 调整表格中的删除按钮

将<a>标签改为<button>,移除href属性,新增data-user-id存储用户ID:

<td><button class="btn btn-danger delete-btn" data-bs-toggle="modal" data-bs-target="#deleteModal" data-user-id="<?php echo $row['user_id']; ?>">Delete</button></td>

2. 给删除模态框表单添加隐藏输入框

用于传递用户ID到delete.php:

<!-- Delete Modal -->
<form action="delete.php" method="POST">
    <!-- 新增隐藏输入框存储用户ID -->
    <input type="hidden" name="user_id" id="delete-user-id">
    
    <div class="modal fade" id="deleteModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Delete Record</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p class="lead">Are you sure you want to delete this user?</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                    <input type="submit" class="btn btn-success" name="delete_student" value="Yes">
                </div>
            </div>
        </div>
    </div>
</form>

3. 添加JavaScript传递ID

在页面</body>标签前添加脚本,点击删除按钮时将ID赋值给隐藏输入框:

<script>
document.querySelectorAll('.delete-btn').forEach(btn => {
    btn.addEventListener('click', function() {
        const userId = this.getAttribute('data-user-id');
        document.getElementById('delete-user-id').value = userId;
    });
});
</script>

delete.php代码修改

调整POST请求处理逻辑,从$_POST获取ID并加入SQL注入防护:

<?php include 'header.php'; ?>
<?php include 'config.php'; ?>

<?php 
if(isset($_POST['delete_student']) && isset($_POST['user_id'])) {
    // 转义特殊字符防止SQL注入
    $userid = mysqli_real_escape_string($connection, $_POST['user_id']);
    
    $query = "DELETE FROM `users` WHERE `user_id` = '$userid'";
    $result = mysqli_query($connection, $query);

    if(!$result){
        die('Error: '. mysqli_error($connection));
    } else {
        header('Location: index.php?delete-msg=Deleted successfully');
        exit; // 跳转后终止脚本执行
    }
} else {
    // 非法访问直接跳转回主页面
    header('Location: index.php');
    exit;
}
?>

<?php include 'footer.php'; ?>

额外说明

  • 移除了原代码中冗余的注释代码,简化逻辑结构。
  • 增加SQL注入防护,避免恶意输入破坏数据库。
  • 跳转后添加exit确保脚本停止执行,防止后续无效代码运行。

内容的提问来源于stack exchange,提问作者シマRin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:57:27