MANEJAR N° VARIABLE DE INPUT EN FORMULARIO
Por ejemplo tildar varias checkbox o cambiar varios registros de una tabla
El problema típico de enviar un número variable de inputs es que no podemos saber cuales son los enviados para
procesar. Para eso vamos a parsear el vector $_POST que está formado por los pares de valores de
los atributos "name" y "value" de cada etiqueta INPUT del FORM enviado por POST.
En este ejemplo vamos a cambiar los valores de activo en la base de datos, para eso vamos recorriendo el vector con
foreach($_POST as $campo => $valor) y asignando el id y el valor de activo (S o N). Esto por
supuesto solo es válido para unos pocos registros, como en este ejemplo.
El if($campo<>"Guardar") sirve para no procesar inputs como el botón guardar, si tuvieramos
otros debemos descartar (con & que es AND ) todos los que no sean para cambiar. si hubiera otro botón editar
sería if($campo<>"Guardar" & $campo<>"Editar")
<head>
<?
include("conexion.php"); // abre la conexión a la base de datos
global $conn; //lo usamos en conexion, lo declaramos acá para no llamar siempre a $GLOBALS[]
if($_POST){
if(conectar()){
foreach($_POST as $campo => $valor){
if($campo<>"Guardar"){
$id=$campo; //lo que está en name del input
$recibido= $valor; //lo que esta en value o se escribió en el input
$sqltxt = "UPDATE personas SET activo='".$recibido."' WHERE id=".$id;
$sqldevolucion = mysqli_query($conn,$sqltxt);
}
}
mysqli_free_result($sqldevolucion); //devuelvo recurso a memoria
mysqli_close($conn); // cierro conexion
}else{
echo(mysqli_error($conn)); //no se puede conectar con la DB
}
}
?>
</head>
<body>
<form action="?accion=R" method="post" id="formulario">
<div style="padding-top:20px;">
<table>
<tr>
<td class="celdaPT" style="text-align:center;">ID</td>
<td class="celdaPT" style="border-left:none; text-align:center;">NOMBRE</td>
<td class="celdaPT" style="border-left:none; text-align:center;" >ACTIVO</td>
</tr>
<?
if(conectar()){
$sqltxt = "SELECT * FROM personas LIMIT 1,15";
$sqldevolucion = mysqli_query($conn,$sqltxt);
while ($registro = mysqli_fetch_array($sqldevolucion, MYSQLI_ASSOC)){
$idedit=$registro["id"];
?>
<tr>
<td class="celdaP" style="text-align:left;">
<div style="padding-left:10px;">
<? echo ($registro["id"]); ?>
</div>
</td>
<td class="celdaP" style="border-left:none; text-align:left;" >
<div style="padding-left:10px;">
<? echo ($registro["nombre"]); ?>
</div>
</td>
<td class="celdaP" style="border-left:none; text-align:center;" >
<input class="valor" type="text" name="<? echo($registro["id"]) ?>" value="<? echo ($registro["activo"]); ?>" />
</td>
</tr>
<?
} //fin while
mysqli_free_result($sqldevolucion); //devuelvo recurso a memoria
mysqli_close($conn); // cierro conexion
} //fin if conectar
?>
</table>
<div style="padding:20px;">
<input name="editar" type="submit" value="Guardar" id="boton" />
</div>
</div>
</form>
</body>