Sweet Alert confirmation before deleting using PHP

Viewed 30

I need your help with this, I'm trying to implement Sweet Alert to show an alert before to delete some data, when I click on "Ok" its supposed to delete the register, but it doesn't do anything. I get this error on console: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'submit'). Here is my code

function ventanaEmergente(e){
// var respuesta = confirm("Estas seguro que deseas eliminar el registro?");
// if(respuesta == true){
//     return true;
// }else{
//     return false;
// }
e.preventDefault();
var form = event.target.form;
swal({
    title: "¿Estás seguro?",
    text: "El registro se eliminará de forma permanente!",
    icon: "warning",
    buttons: true,
    dangerMode: true,
    })
        .then((willDelete) => {
            if (willDelete) {
                // swal("Registro eliminado!", {
                // icon: "success",
                // });
                
                form.submit();
            } else {
                swal("El registro no fué eliminado!");
            }
        });
}
<div class="botonSeparacion">
<form class="btnEliminar" method="POST">
    <input type="hidden" name="id" value="<?php echo $registro['idDispositivo']; ?>">
    <!-- <input type="submit" class="button" value="Eliminar" onclick="return ventanaEmergente()"> -->
    <button class="boton-rojo-tabla" type="submit"><img class="icono" src="/inventario_ayuntamiento/src/img/icono1.svg" onclick="ventanaEmergente(event)" alt="x" /></button>
</form>
</div>

//My PHP code
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$id = $_POST['id']; //el 'id' proviene de la url generada
$id = filter_var($id,FILTER_VALIDATE_INT);

if($id){          
    //Elimina la propiedad
    $query = "DELETE FROM registroequipo WHERE idDispositivo = ${id}";
    $resultado = mysqli_query($db,$query);

    if($resultado){
        header('Location: /inventario_ayuntamiento/registros.php');                    
    }
}
}

1 Answers

event.target.form is not a form element, use e.target.parentElement.parentElement

function ventanaEmergente(e) {
  e.preventDefault();
  var form = e.target.parentElement.parentElement;
  swal({
      title: "¿Estás seguro?",
      text: "El registro se eliminará de forma permanente!",
      icon: "warning",
      buttons: true,
      dangerMode: true,
    })
    .then((willDelete) => {
      if (willDelete) {
        form.submit();
      } else {
        swal("El registro no fué eliminado!");
      }
    });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script>

<div class="botonSeparacion">
  <form class="btnEliminar" method="POST">
    <input type="hidden" name="id" value="<?php echo $registro['idDispositivo']; ?>">
    <!-- <input type="submit" class="button" value="Eliminar" onclick="return ventanaEmergente()"> -->
    <button class="boton-rojo-tabla" type="submit"><img class="icono" src="/inventario_ayuntamiento/src/img/icono1.svg" onclick="ventanaEmergente(event)" alt="x" /></button>
  </form>
</div>

Related