Foros del Web » Programando para Internet » PHP »

Insertar valor de varios checkbox en un mismo campo de tabla

Estas en el tema de Insertar valor de varios checkbox en un mismo campo de tabla en el foro de PHP en Foros del Web. Muy buenas! El tema es que tengo un formulario con varios checkboxes que deben almacenarse en un mismo campo de tabla. Para que os situeis, ...
  #1 (permalink)  
Antiguo 26/08/2012, 10:35
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Insertar valor de varios checkbox en un mismo campo de tabla

Muy buenas!

El tema es que tengo un formulario con varios checkboxes que deben almacenarse en un mismo campo de tabla.
Para que os situeis, la tabla destino tiene los campos "dni" y "id_necesidad" y hay varios checkbox de name="necesidad1","necesidad2",etc. que han de ir a parar al mismo campo en la DB en el mismo ingreso.

Lo que quiero es llegar a poder recibir algo así en la tabla durante un mismo ingreso:

_dni_ _ id-necesidad_
57874637-F 1
57874637-F 3
57874637-F 5


Espero que podáis ayudarme, muchísimas gracias!
  #2 (permalink)  
Antiguo 26/08/2012, 10:52
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Si he entendido bién, lo que pretendes hacer se puede hacer mucho más elegante por decirlo de alguna manera. Así és mucho más escalable y fácil de mantener la coherencia.

Yo crearía una tabla de necesidades con un campo para identificar al usuario (podrias usar el DNI), i tantos campos bool como quieras para guardar necesidades.

Si prefieres seguir con lo que tienes, junta las necesidades en un string separado por ; y así lo tienes todo en una línea, después tendrás que hacer un explode del string y trabajar con el array.
  #3 (permalink)  
Antiguo 26/08/2012, 11:32
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Mmmm, entiendo. Pero me gustaría seguir tal y como está para que luego en el momento de la consulta por dni aparezca el nombre de la/s necesidad/es educativa/s, no que aparezca Si o No.

Muchas gracias por responder, pero soy novato en esto y no he entendido ni "string", ni "explode" y nunca he trabajado con arrays.

Podrías detallarme un poco más si no es mucha molestia? Lo agradecería mucho ya que me urge bastante...

Otra posibilidad, aunque un poco chapuza podría ser hacer tantos INSERT diferentes como checkbox haya?


Gracias!
  #4 (permalink)  
Antiguo 26/08/2012, 14:32
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Tranquilo, yo también voy aprendiendo....

A ver lo primero, puedes rescatar todas los datos que quieras, siempre que estén en alguna tabla y esta esté relacionada.

Lo segundo.
Unes todas las necesidades así:
Código PHP:
Ver original
  1. $necesidades=$necesidad1.";".$necesidad2....... ;

Las insertas en la tabla normalmente, pero como una cadena de caracteres y cada necesidad separada por ";"

Después al rescatar los datos por ejemplo $row["necesidades"], obtendras la cadena.
Ahí:
Código PHP:
Ver original
  1. // array $needs contiene cada necesidad
  2. $needs=explode(";",$row["necesidades"]);
  3.  
  4. //ahora puedes recorrer el array con un foreach
  5. foreach($needs as $key => $value){
  6.     $need=$value;
  7.         //aquí trabajas y haces lo que quieras con el contenido
  8. }

A ver si te sirve esto.
Mira el manual de php, tienes todas las funciones para cadenas (strings).
  #5 (permalink)  
Antiguo 27/08/2012, 10:46
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Vale, entiendo el proceso de guardar todas las necesidades en una misma celda separadas por ";".
El resto lo veo demasiado complejo, y aun más sabiendo que dentro de unas semanas tendre que preparar un formulario de consulta...

Serias tan amable de decirme, por ejemplo en una celda que contiene 1 ; 3 ; 5 hacer el SELECT, separarlos y ir a la tabla "necesidades" a ver que necesidad corresponde a cada numero para sacarlas por pantalla???

Muchas gracias por el interés, gente como tú hace útiles sitios como este.
  #6 (permalink)  
Antiguo 27/08/2012, 10:46
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 0
Exclamación Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Cita:
Iniciado por jairo_928 Ver Mensaje
Vale, entiendo el proceso de guardar todas las necesidades en una misma celda separadas por ";".
El resto lo veo demasiado complejo, y aun más sabiendo que dentro de unas semanas tendre que preparar un formulario de consulta...

Serias tan amable de decirme, por ejemplo en una celda que contiene 1 ; 3 ; 5 hacer el SELECT, separarlos y ir a la tabla "necesidades" a ver que necesidad corresponde a cada numero para sacarlas por pantalla???

Muchas gracias por el interés, gente como tú hace útiles sitios como este.
  #7 (permalink)  
Antiguo 27/08/2012, 10:48
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Cabe recalcar que soy novato y si el codigo es complejo no lo entiendo, por lo que agradecería explicarais cada paso si no es molestia gracias!
  #8 (permalink)  
Antiguo 27/08/2012, 13:46
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Insertar valor de varios checkbox en un mismo campo de tabla

Yo lo haria de la siguiente manera

crearia una tabla llamada necesidades
en ella pondria todas las necesidades, llamemoslas columnas mas su campo id y su campo idusuario.(id usuario indica a que usuario corresponden esas necesidades)
entonces a la hora de guardar las necesidades de cada usuario solo pondria true o false a cada columna segun las palomitas del checkbox
entonces cuando muestres las necesidad solo muestras el nombre de la columna.
el nombre de la columna va a hacer el nombre que tu le asignes.
como no permite espacios puedes hacer esto
necesidad_1 le pones guion
haces la consulta
Código MySQL:
Ver original
  1. select * from necesidades where necesidades.idusuario=idusuario and necesidades=true;

entonces ya solo lees las columnas que te regresa en vez de los datos
seria asi

Código PHP:
Ver original
  1. $nombre = mysql_field_name(indicedecolumna);
donde indice de columna es el numero del campo, osea si tienes 5 necesidades seria 0,1,2,3,4
entonces ya cuando quieras mostrar el nombre usarias el


Código PHP:
Ver original
  1. arreglo_de_columnas[indice]=str_replace("_"," ","$nombre);
para reemplazar los guiones por espacios de la columna

Etiquetas: checkbox, formulario, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:57.