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>
						
					
© IQSystems 2023