Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma lista que permite as ações editar e apagar, quando quero deletar um registro, gostaria que antes aparecesse um janela, caso o usuário clicasse em confirma, iria apagar o registro?
Fala, Laerte!
Você quer um alert ou um modal?
Seria isso?
eai cara, olha criar o modal eu sei gostaria de saber como fazer a ação do botão confirmar?
>
<a onclick="return confirm(\'Confirma Exclusão do Registro?\')">Delete</a>
valeu, isso eu sei gostaria de saber como após a confirmação pegar o id e enviar para função de exclusão de registro?
Fala laerte.
Se eu entendi certo, talvez isso ajude!
Você pode criar uma propriedade na tag <a>, por exemplo: data-id="codigo"(<a data-id="1"...>). Se você faz um foreach, passa o código do registro dentro desse data-id, ai na modal você coloca um campo hidden "codigo" e atribui o valor do data-id via jquery:
var registroExcluido = $(this).data('id');
Veja ai e nos fale! :)
Apesar de javascript ser uma abordagem muito comum, conforme listado acima, não é a abordagem correta segundo as definições da W3C.
O correto seria utilizar o método DELETE. Entretanto, não é possível utilizar o método DELETE em um browser. Apenas GET ou POST.
Com um link, apenas é possível utilizar o método GET. GET tem como objetivo exclusivo retornar informações de um storage. Por outro lado, POST, tem como objetivo exclusivo modificar informações em um banco de dados. Deletar é uma alteração do banco de dados.
Para utilizar o método POST, é necessário utilizar um formulário. Além do mais, você quer validar a exclusão. Para tal, é possível utilizar um pequeno "truque".
Chamarei essa página de list.php, aonde tem a lista de todos os registros
<a href="delete.php?id=1" title="Excluir o registro" >excluir</a>
delete.php:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['delete'] == 'yes') {
try {
$statement = $pdo->prepare('DELETE FROM table WHERE id = :id');
$statement->bindValue(':id' , $_POST['id'] , PDO::PARAM_INT);
$statement->execute();
} catch (PDOException $exception) {
/** ações a serem realizadas caso não excluiu o registro **/
}
}
header("Location: list.php");
exit();
} ?>
<p>Tem certeza que deseja deletar o registro <?= $_GET['id'] ?>?</p>
<form action="delete.php" method="post">
<input type="hidden" name="id" value="<?= $_GET['id'] ?>" />
<button name="delete" value="yes">Sim</button>
<button name="delete" value="no">Não</button>
</form>
No exemplo acima, basicamente será feita uma requisição GET para a página de exclusão. Será verificado que é uma requisição GET e exibirá o formulário para exclusão. Caso opte por excluir ou não, será feita uma requisição POST, validando a escolha. Caso decida por excluir, será excluído o registro e redirecionado para a lista completa. Caso escolha por não excluir, será apenas redirecionado para a lista.
Esse é apenas um exemplo básico estrutural, pode ser modificado conforme a necessidade e ser acoplado em um framework. Como pode ser visto na documentação do [Zend Framework](https://framework.zend.com/manual/2.3/en/user-guide/forms-and-actions.html).
Para javascript ser correto, teria que utilizar Ajax. Mas, dessa forma, teria que pensar em [Unobtrusive JavaScript](https://en.wikipedia.org/wiki/Unobtrusive_JavaScript)eu fiz uma vez desta maneira:
<?php
include"../includes/conecta.php";
$id = $_GET["id"];
$sql = mysql_query("select * from produtos where id='$id'", $conexao);
$vetor = mysql_fetch_array($sql);
?>
</span> <span class="style13"></span> </span> <form action="excluirproduto.php?id=<?php echo $vetor[0] ?>" method="post" name="confirmacao" class="style17 style13">
<span class="style19"><strong>Deseja excluir o cadastro <?php echo $vetor[1] ?>?</strong>
<input name="exclusao" type="radio" value="1" checked="checked" />
Sim
<input name="exclusao" type="radio" value="2" />
Não </span>
<p>
<input name="pesq" type="image" src="../imgs/confirmar.png" class="float" />
</p>
</form>
depois eu mandava excluir:
<?php
include '../includes/conecta.php';
$id = $_GET["id"];
$exclusao = $_POST['exclusao'];
if($exclusao == 1) {
$sql_exclui = mysql_query("delete FROM produtos WHERE id = '$id'", $conexao);
echo "<script> alert('Excluido com sucesso!')</script>";
echo "<script> window.location.href='pagina.php?i=listarprodutos.php'</script>";
}else{
echo "<script> window.location.href='pagina.php?i=listarprodutos.php'</script>";
}
?>Como ele irá usar modal, acredito que do bootstrap, a ideia de passar via data-id também funcionaria e de maneira parecida, pq dentro do modal ele teria que colocar um form e após clicar em Sim, faria um POST da mesma maneira!
<a onclick="return confirm(\'Confirma Exclusão do Registro?\')">Delete</a>