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
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
HOla
ResponderBorrarmuxas gracias x explicarnos te lo agradesco
ResponderBorrarEstuve 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.
ResponderBorrarno puedo descargar el archivo... enlace roto...
ResponderBorrarmuchas gracias por el coodigo me sirvio para un sistema que estoy desarrolando
ResponderBorrarsaludos, tengo una pregunta.
ResponderBorrarsi 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
Gracias por esta Explicación que esta muy claro, y en verdad me ayudo mucho
ResponderBorrarsaludos !!
Gracias por esta Explicación que esta muy claro, y en verdad me ayudo mucho
ResponderBorrarsaludos !!
hola que tal oye podras poner un tutorial para modificar multiples datos en php y mysq porfas
ResponderBorrarExcelente. muy bueno.-
ResponderBorrarGracias
no sirve
ResponderBorrarMuy útil la información, en verdad muchas gracias!! :D
ResponderBorrar*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!
necesito tu ayuda, compa!!
BorrarAunque estoy trabajando con frameworks me ha sido muy útil esta información. Gracias
ResponderBorrar