miércoles, 29 de octubre de 2014

Eliminar multiples registros usando "checkbox" con PHP y MySQL

Muchas veces, cuando estamos programando, tenemos la tarea de crear un módulo  o estructura, donde se muestran multiples registros y queremos borralos todos o una parte de ellos. Aqui les dejo como hacerlo, utilizando PHP y MySQL.

(Como ejemplo creamos una tabla llamada tb_noticias: en la cual existen, varios campos, pero solo tomamos como referencia el campo "id" y "titular")

Creamos una pagina llamada: mostrar.php y le insertamos el siguiente codigo:

<?php
include('connx.php');
echo "<form action='eliminar_noticias.php' method='post' name='formulario' id='formulario'>";
$rs = $mysqli->query("SELECT * FROM tb_noticias ORDER BY id");
while ($row = $rs->fetch_assoc()){
$id = $row['id'];
echo "<input type='checkbox' name='check[]' id='check[]' value='$id' />" .$row['titular'] .'<br>';
}
echo "<br><input type='button' value='Eliminar' onclick='enviar_datos()' />   ";
echo "</form>";
?>

Observamos que el boton "Eliminar", tiene una llamada a una funcion llamada: enviar_datos(), la cual esta formada por el siguiente codigo:

<script type="text/javascript" language="javascript">
function enviar_datos() {
    contador=0;
    Form = document.forms["formulario"]
    for(i = 0; i < Form.elements.length; i++)
        if(Form.elements[i].type == "checkbox")
            if(Form.elements[i].checked)
                contador++
    if(contador==0) {
        alert('Deberá seleccionar al menos una opción.'); return;
    }else{
        formulario.submit();
    }
}
</script>


Y FINALMENTE, el código de la página "eliminar_noticias.php", la cual es la encargada de eliminar todas las noticias que fueron seleccionadas en los checkbox.


<?php
include('connx.php');
$mysqli->query("DELETE FROM tb_hechos WHERE id IN (".implode(",", $_POST['check']).")");

echo "Articulo(s) borrado(s) satisfactoriamente.";
?>


Nos vemos en el próximo artículo!