Deletar vários itens do banco de dados, com checkbox
Dúvida recorrente no fórum.
Funcionamento parecido com os webmails.
Você possui uma lista de registros. Em cada um desses registros, há um checkbox.
Deseja-se, selecionar vários checkboxs, e então com um só botão, proceder com a exclusão de todos os itens selecionados.
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$arr = filter( $_POST['excluir'] );
$sql = 'DELETE FROM registro WHERE id IN('.implode( ',', $arr ).')';
echo $sql;
}
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
?>
<form action="" method="post">
<table>
<tr>
<td><input type="checkbox" name="excluir[]" value="13" /></td>
<td>Registro 13</td>
</tr>
<tr>
<td><input type="checkbox" name="excluir[]" value="9" /></td>
<td>Registro 9</td>
</tr>
<tr>
<td><input type="checkbox" name="excluir[]" value="26" /></td>
<td>Registro 26</td>
</tr>
<tr>
<td><input type="checkbox" name="excluir[]" value="14" /></td>
<td>Registro 14</td>
</tr>
</table>
<input type="submit" name="submit" value="Excluir Selecionados" />
</form>
Bom, é isso. Simples, prático e direto.
@2011-04-18 Adicionei a função filter(), para fazer o casting de tipo, antes de mandar para a string SQL. Dessa forma evitamos o injection mencionado pelos nossos colegas nos comentários deste post.