Estoy haciendo pruebas con un formulario con varios checkbox los cuales quiero enviar a la base de datos si se marcan.
Primero he creado un formulario con un array y desde un for cargo los input check por si en otro ejercicio se repiten muchos registros:
Código PHP:
Ver original
<h3>Preparar formulario con checkbox y envio a la base de datos</h3> <form name="enfermedades-b" method="post" action=""> Nombre: <input type="text" name="nombre" /><br /> Curso: <input type="text" name="curso" /><br /> Enfermedades: <?php // Ahora intento hacer un formulario con los valores de enfermedades para no repetir //Creo la variable y el array enfermedades /*Creo el bucle for para que recorra desde 0 hasta el total de enfermedades existentes y que las muestre de una en una dentro de los inputs del formulario.*/ for ($i=0;$i<$cantidad; $i++) { echo '<input type="checkbox" name="check'.$i.'" value="'.$enfermedades[$i].'" />'.$enfermedades[$i].''; } //Creo un campo oculto para recoger el valor de la cantidad echo '<input type="hidden" value="'.$cantidad.'" name="cantidad-enfermedades" /><br />'; ?> <input type="submit" value="Enviar" name="enviart" /> </form>
Y luego preparo el envio a la base de datos:
Código PHP:
Ver original
<?php //Creo la conexión al servidor con usuario y contraseña: if(!$conexion) { //Si hay algún error en la conexión lo muestra } /*Selecciono la base de datos y le doy la variable para conectar al servidor, asi todas las consultas que se hagan ya estarían conectadas.*/ //Preparo la consulta ('$_POST[nombre]','$_POST[curso]')"); /*Creo otro ciclo para buscar los que están marcados en el checkbox contando en el campo name oculto los checks marcados con el nombre check*/ //Empezando de 1, mientras que sea menor o igual que la cantidad-enfermedades (3) que sume 1 for($che=1;$che<=$_POST["cantidad-enfermedades"];$che++) { //Si existe el check (nº tal) marcado entonces idicará check (nº tal) { /*Llamo a enfermedades con su índice correspondiente $enfermedades[$che] y asi incluye todas las enfermedades marcadas y la envía a la base de datos.*/ } } //Cierro la conexión } ?>
Cuando le doy a enviar me recoge bien nombre y curso pero luego la parte de los checks me los rellena en otra nueva fila y a la vez no me los envía todos de una vez a la misma casilla.
¿Como podría arreglarlo? Saludos.