Hola.
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
$enfermedades=array("Asma", "Epilepsia", "Esquizofrenia"); $cantidad = count($enfermedades);//Con esto calculo la cantidad de 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
if(isset($_POST["enviart"])){ //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
$insertar=mysql_query("insert into alumnos(nombre,curso) values ('$_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)
if(isset($_POST[ "check".$che])) {
/*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.*/
$insertar .= mysql_query("insert into alumnos(enfermedades) values ('$enfermedades[$che]')"); }
}
//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.