Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/11/2012, 06:38
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 9 meses
Puntos: 65
Mensaje Respuesta: Problema enviando checkbox a la base de datos.

Hola de nuevo.

He pasado a crearlos con el foreach explicado por abimaelrc para crear el formulario:

Código PHP:
Ver original
  1. <form name="enfermedades" method="post" action="">
  2.         Nombre: <input type="text" name="nombre" /><br />
  3.         Curso: <input type="text" name="curso" /><br />    
  4.         <!--<input type="checkbox" name="foo[]" value="1" />
  5.         <input type="checkbox" name="foo[]" value="2" />
  6.         <input type="checkbox" name="foo[]" value="3" />
  7.         <input type="checkbox" name="foo[]" value="4" />
  8.         <input type="checkbox" name="foo[]" value="5" />
  9.         <input type="checkbox" name="foo[]" value="6" />-->
  10.         <?php
  11.         $enfermedades=array("Asma", "Epilepsia", "Esquizofrenia");
  12.         $cantidad=count($enfermedades);
  13.         for ($c=0; $c<$cantidad ; $c++) {
  14.             //Preparo tantos inputs como enfermedades tenga el array
  15.             echo '<input type="checkbox" name="foo[]" value="'.$enfermedades[$c].'" />'.$enfermedades[$c].'';
  16.         }      
  17.         ?>
  18.         <input type="submit" value="Enviar" name="enviar-ch" />
  19.     </form>

Luego he hecho pruebas para ver los marcados e imprimir todos los campos sale perfectamente:

Código PHP:
Ver original
  1. foreach($_POST['foo'] as $v)
  2.         {
  3.             echo $v . '<br />';                
  4.         }
  5. echo $_POST['nombre'] . ' - ' . $_POST['curso'] . ' - ' . implode('; ', $_POST['foo']);

Sin embargo cuando intento eviarlos a la base de datos me sigue dando error o me falla ya que no termino de ubicar ese implode:

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_POST["enviar-ch"]))
  3.     {
  4.         //Creo la conexión al servidor con usuario y contraseña:
  5.         $conexion=mysql_connect("localhost","root","vertrigo");
  6.         if(!$conexion)
  7.         {
  8.             //Si hay algún error en la conexión lo muestra
  9.             exit("Database Error: " .mysql_error());
  10.         }      
  11.         /*Selecciono la base de datos y le doy la variable para conectar al servidor, asi todas las consultas que se hagan ya
  12.         estarían conectadas.*/
  13.         mysql_select_db("alumnos_a",$conexion);    
  14.         /*Creo otro ciclo para buscar los que están marcados en el checkbox haciendo un foreach */
  15.         foreach($_POST['foo'] as $v)
  16.         {
  17.             //echo $v . '<br />';
  18.             //$insertar . = implode('; ', $_POST['foo']);      
  19.         }        
  20.         $insertar=mysql_query("insert into alumnos(nombre,curso,enfermedades) values
  21.         ('$_POST[nombre]','$_POST[curso]' , . implode(', '$_POST[foo]");                   
  22.         //Cierro la conexión
  23.         mysql_close($conexion);
  24.     }  
  25.     ?>

¿Donde debo colocarlo de forma correcta para que envíe todos los valores?. Gracias de nuevo.