Ir al contenido principal

Eliminar multiples datos con checkbox PHP y MySQL

Para eliminar múltiples datos de la base de datos, utilizaremos el ciclo foreach de PHP. Este ciclo se utiliza para recorrer arrays. Convertiremos los checkbox entonces en un array. El ejemplo se encuentra divido en tres únicos archivos para facilitar su comprensión.

El archivo conexion.php para hacer la conexion con la base de datos MySQL. La base de datos se llama database y la tabla personas compuesta por dos columnas cod y nombre.

conexion.php


<?php

function conexion(){

$con = mysql_connect("localhost","root","");

if (!$con){

die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

return($con);

}

?>


El archivo index.php es donde creamos la consulta a la base de datos para mostrar en una tabla HTML los registros que estan almacenados en la base de datos. Cuando se presiona el boton el archivo eliminar.php procesa la información. Es importante aclarar que hemos convertido los checkbox en un array colocando en su nombre unos corchetes, en este caso todos los checkbox se llaman casilla[], cada uno toma un diferente valor, pues les pasamos los codigos que identifcan a las personas.

index.php


<?php

include 'conexion.php';

$con=conexion();

$res=mysql_query("select * from personas",$con);

?>

<!DOCTYPE html>
<html>
<body>

<h1>Eliminar datos</h1>

<form method="post" action="eliminar.php">

<table border="1">

<tr>
<th></th>
<th>Codigo</th>
<th>Nombre</th>
</tr>

<?php
while($fila=mysql_fetch_array($res)){
?>
<tr>
<th><input type="checkbox" name="casilla[]" value="<?php echo $fila[cod]; ?>"></th>
<th><?php echo $fila[cod]; ?></th>
<th><?php echo $fila[nombre]; ?></th>
</tr>
<?php
}
?>

</table>

<input type="submit" value="Eliminar" />

</form>

</body>
</html>


Finalmente el archivo eliminar.php lo que hace es capturar a través del método POST el checkbox con nombre casilla y asignarlo en la variable $x. Luego para cada iteración del ciclo, el valor del elemento de la matriz actual se asigna a $value (que vendrían siendo los códigos de las personas) y el puntero se va moviendo uno por uno hasta que ya no se encuentren más datos. Por ejemplo, si el usuario seleccionó 5 datos el ciclo itera 5 veces y por tanto ejecuta 5 veces la sentencia delete eliminando uno a uno los datos seleccionados.

eliminar.php


<?php

include 'conexion.php';

$con=conexion();

$x=$_POST[casilla];

foreach ($x as $value){

$res=mysql_query("delete from personas where cod=".$value."",$con);

if($res){

echo 'Dato eliminado correctamente<br />';

}

}

?>

<a href="index.php">Volver</a>


Descargar código fuente

Comentarios

  1. muxas gracias x explicarnos te lo agradesco

    ResponderBorrar
  2. Estuve varios días pensando como hacerlo y mi idea era bastante aproximada a la tuya. Pero ahora que lo veo así lo tengo mucho más claro. Muchas gracias.

    ResponderBorrar
  3. no puedo descargar el archivo... enlace roto...

    ResponderBorrar
  4. muchas gracias por el coodigo me sirvio para un sistema que estoy desarrolando

    ResponderBorrar
  5. saludos, tengo una pregunta.
    si en tal caso no quiero hacer la comparacion uno a uno, sino quiero eliminar los que no existan en mi arreglo, por ejemplo tengo 10 registro en mi tabla, y en mi array pase 5 valores [0,3,4,5,3], quiero que me elimine los 5 que no esten en ese array[1,2,6,7,8], pero si me hace la comparacion por iteracion, en la primera me borraria los 9 ??? e estado luchando y no se como hacer esto jejeje

    ResponderBorrar
  6. Gracias por esta Explicación que esta muy claro, y en verdad me ayudo mucho
    saludos !!

    ResponderBorrar
  7. Gracias por esta Explicación que esta muy claro, y en verdad me ayudo mucho
    saludos !!

    ResponderBorrar
  8. hola que tal oye podras poner un tutorial para modificar multiples datos en php y mysq porfas

    ResponderBorrar
  9. Excelente. muy bueno.-
    Gracias

    ResponderBorrar
  10. Muy útil la información, en verdad muchas gracias!! :D
    *para aquellos que tuvieran problemas con la ejecución del código, pueden enviarme un mensaje y yo os compartiré el código modificado
    saludos!

    ResponderBorrar
  11. Aunque estoy trabajando con frameworks me ha sido muy útil esta información. Gracias

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Buscador en tiempo real con AJAX, PHP y MySQL

Buscador realizado en HTML utilizando como lenguaje de programación PHP , la tecnología AJAX y a MySQL como motor de base de datos.

Funciones (subprocesos) en PSeInt

A partir de la version 20121010 (10/Octubre/2012) PSeInt permite la posibilidad de definir funciones al que el creador del mismo bautizó como subprocesos , en este tutorial explicaremos brevemente cómo se tratan dichas funciones. Para empezar una función no es más que un bloque de código con un determinado fin o propósito, podemos definir más de una y nos permiten ahorrar líneas código si nuestros programas son muy extensos o hay codificación redundante.

Convertir un decimal a binario en PSeInt

Utilizaremos el siguiente método para convertir números decimales a binarios (números que se sólo se componen de unos y ceros). El método es sencillo, consiste en dividir el número decimal entre dos, despues su cociente entre el mismo número y así sucesivamente hasta que finalmente el cociente (que se convierte en un divisor) sea igual a uno. Despúes organizamos los residuos desde el último al primero para obtener el número binario que buscamos.