Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como fazer um DELETE em um banco de dados usando Javascript

Olá a todos!

Gostaria de saber como funcionaria um sistema onde tem uma lista de usuarios já populada com algumas informações e que nessa lista terá um botão delete que irá deletar esse usuario. Eu sei como funciona usando só php, (conforme mostra código abaixo) mas como seria usando Javascript com a função $.ajax ?

Meus códigos abaixo (estou usando o modelo MVC para melhor organização) :

listaUsuarios.php

<?php include "conecta.php";      
      include "model.php";
      include "cabecalho.php";

$usuarios = (new model())->listaUsuarios($conexao);?>

<title>Lista de Usuarios</title>

<body>    
    <table class="table">       
        <thead>
            <tr>
                <th scope="col">ID</th>
                <th scope="col">Nome</th>
                <th scope="col">Senha</th>
                <th scope="col">Editar</th>
                <th scope="col">Excluir</th>
            </tr>
        </thead>        
            <tbody>
                <?php foreach($usuarios as $usuario):?>           
                    <tr>
                        <th scope="row"><?= $usuario['id']?></th>
                        <td><?= $usuario['username']?></td>
                        <td><?= $usuario['senha']?></td>
                        <td><a href="alterar.php?id=<?=$usuario['id']?>" class="btn btn-primary">Editar</a></td>
                        <td><a href="delete.php?id=<?=$usuario['id']?>" class="btn btn-danger">Delete</a></td>
                    </tr>                        
                <?php endforeach?>
            </tbody>
    </table>
</body>

<?php include "rodape.php";?>

delete.php

<?php
include "model.php";
include "conecta.php";

$id = $_GET['id'];

(new model())->deleteUser($conexao, $id, $username, $senha);

include "exitoAlteracao.php";

model.php (somente a função de deletar usuario)

public function deleteUser($conexao, $id)
    {
        $query = "DELETE FROM users WHERE id = '{$id}'";
        return mysqli_query($conexao, $query);
    }
5 respostas

Boa noite, Ruan! Como vai?

Vc terá que ter um endpoint na sua aplicação habilitado para receber a requisição do tipo delete! Daí, usando o JQuery como vc quer, seria só fazer assim:

$.ajax({
    url: '/endpoint-da-api',
    type: 'DELETE',
    success: function(resultado) {
        // Faz algo com o resultado...
    }
});

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Olá Gabriel, obrigado por me responder.

Você teria algum material para me passar sobre esse end-point? eu não entendi como faria ele.

Eu consegui fazer pelo metodo GET, mas não é correto fazer por ele, como faria pelo metodo POST ou DELETE? Meu codigo:

<?php include "conecta.php";      
      include "model.php";
      include "cabecalho.php";

$usuarios = (new model())->listaUsuarios($conexao);?>

<title>Lista de Usuarios</title>

<body>    
    <table class="table">       
        <thead>
            <tr>
                <th scope="col">ID</th>
                <th scope="col">Nome</th>
                <th scope="col">Senha</th>
                <th scope="col">Editar</th>
                <th scope="col">Excluir</th>
            </tr>
        </thead>        
            <tbody>
                <?php foreach($usuarios as $usuario):?>           
                    <tr>
                        <th scope="row"><?= $usuario['id']?></th>
                        <td><?= $usuario['username']?></td>
                        <td><?= $usuario['senha']?></td>
                        <td><a href="alterar.php?id=<?=$usuario['id']?>" class="btn btn-primary">Editar</a></td>
                        <td><a href="javascript:void(0)" onclick="excluir(<?=$usuario['id']?>)"
                               class="btn btn-danger">Excluir</a></td>
                    </tr>
                <?php endforeach?>
            </tbody>
    </table>

    <script>
        function excluir() {
            $.ajax({
                url: "delete.php?id=<?=$usuario['id']?>",
                type: "GET",
                success: function(){
                    location.reload();
                }
            });
        }
    </script>

</body>

<?php include "rodape.php";?>
solução!

Olá, Rhuan.

O que você está tentando desenvolver é uma API ou um WebService.

Além disso, pelos exemplos de código que você mostrou, não pude deixar de notar que embora você diga que está utilizando MVC, na verdade você não está.

Temos um curso na Alura que aborda estes 2 temas com PHP:

https://cursos.alura.com.br/course/php-symfony-api-restful

Nele você vai criar uma API aplicando os padrões REST e MVC, utilizando o Framework Symfony.

Forte abraço e bons estudos!

Rhuan, quando eu falei sobre endpoint pensei que seria um assunto que vc saberia do que eu estava falando. Caso contrário já teria te mandado diretamente alguma referência sobre o que eu estava falando. Me desculpe por isso!

Contudo, a boa notícia é que o Vinicius acabou aparecendo pra dissipar qualquer resquício de dúvida! O que ele disse está corretíssimo e acho que deve te orientar melhor no que deve ser feito para chegar ao seu objetivo!

Brigadão pela sua excelente contribuição, Vinicius!

Grande abraço a ambos, pessoal!