Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Checkbox con BD, lo hago bien?

Estas en el tema de Checkbox con BD, lo hago bien? en el foro de PHP en Foros del Web. Buenas a todos y todas, Quiero hacer una consulta a ver qué opináis, si voy bien o hay otra forma mejor de hacerlo. Tengo un ...
  #1 (permalink)  
Antiguo 15/04/2013, 01:54
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Pregunta Checkbox con BD, lo hago bien?

Buenas a todos y todas,

Quiero hacer una consulta a ver qué opináis, si voy bien o hay otra forma mejor de hacerlo.

Tengo un checkbox que introduzco a través de una consulta a la BD de una tabla, el código que llena las diferentes opciones es:

Código PHP:
 echo <input type="checkbox" name="'.$row['actp_id'].'" value="'.$row['actp_id'].'"><span class="forms">'.$row['actp_desc'].'</span><br>; 
Por lo que ya tengo el valor del id, que una vez hecha la selección pasaré por post al php para verificar y guardar en otra tabla diferente relacionada a la anterior.

Mi pregunta es:
- ¿pongo un campo para cada id posible de la tabla 1 en la dos y lo relleno si está seleccionado y sino lo dejo vacío?
- ¿o bien existe un método más fino de hacerlo, tipo juntar los id en string separados por - o , y tenerlo en un sólo campo?

Alguna recomendación??

Muchas gracias por adelantado!
  #2 (permalink)  
Antiguo 15/04/2013, 02:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Checkbox con BD, lo hago bien?

Respecto al checkbox correcto ... yo siempre pongo los dos atributos name e id, con el mismo valor

Código PHP:
Ver original
  1. echo <input type="checkbox" id="'.$row['actp_id'].'" name="'.$row['actp_id'].'" value="'.$row['actp_id'].'"><span class="forms">'.$row['actp_desc'].'</span><br>;

El método mas fino que dices seria un campo multivaluado, luego más que fino seria un error grave.

Deberías contar mas cosas de tu proyecto....

- se trata por ejemplo de la tabla de respuestas de una encuesta, con preguntas de distintos tipos (entre ellos multirespuesta)?

- Son muchos los id posibles

...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/04/2013, 03:16
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Checkbox con BD, lo hago bien?

Hola quimfv,

lo del id se coló y no lo había puesto jeje arreglado!

La tabla que llena el checkbox tiene 7 opciones. Lo que estoy creando básicamente se podría definir como un formulario para facilitarme la entrada de datos a la BD, puesto que estos datos provienen de información recogida en campo que voy recopilando poco a poco.

Para éste caso, se trata de diferentes tipos de acceso a los sitios disponibles, por lo que en alguno de los casos puede haber más de uno.

para entendernos, tengo la tabla "sitios", relacionada con "accesos" y se trata de una relación 1:N

Cómo lo ves? Gracias!
  #4 (permalink)  
Antiguo 15/04/2013, 05:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Checkbox con BD, lo hago bien?

Si es 1:N, cada sitio tiene N accesos y cada acceso un sitio, luego dos tablas

Sitios
idSitio
...otros campos...

Accesos
idAcesso
idSitio
...otros...

Si cada acceso puediera ser a mas de un sitio, algo asi como sesiones, luego seria N:M luego 3 tablas


Sitios
idSitio
...otros campos...

Accesos
idSession
idSitio
...otros...datetime?

Sessiones
idSession
...usuario?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 15/04/2013, 09:12
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Checkbox con BD, lo hago bien?

Cita:
Iniciado por quimfv Ver Mensaje
Si es 1:N, cada sitio tiene N accesos y cada acceso un sitio, luego dos tablas

Sitios
idSitio
...otros campos...

Accesos
idAcesso
idSitio
...otros...

Si cada acceso puediera ser a mas de un sitio, algo asi como sesiones, luego seria N:M luego 3 tablas


Sitios
idSitio
...otros campos...

Accesos
idSession
idSitio
...otros...datetime?

Sessiones
idSession
...usuario?
Creo que no me expliqué bien, son sitios físicos tipo un parque y las formas en que puedes acceder a él: a pié, escaleras, camino...

sería correcto añadir una tabla intermedia en la bd tipo inheritance?
  #6 (permalink)  
Antiguo 15/04/2013, 09:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Checkbox con BD, lo hago bien?

Digiste:
Cita:
Para éste caso, se trata de diferentes tipos de acceso a los sitios disponibles, por lo que en alguno de los casos puede haber más de uno.
Luego la relación no es 1:N sino N:M luego seria asi

Sitios
idSitio
...otros campos...

RelSitioTipoAcceso
idSitio
idTpAcceso

TiposAcceso
idTpAcceso
descripcion

Eso minimiza el espació en disco y no se pierde espació con campos vacios. Es la solucion correcta, de libro, para una relacion N:M.

Pero habria que ver el resto del problema para decidir si vale la pena ahorrar el espacio de 7 booleanos que seria la solución con una sola tabla. A cambio de una cierta complicacion, muy basica, en las consultas
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 16/04/2013, 02:34
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Checkbox con BD, lo hago bien?

Ok, me decido por añadir la nueva tabla intermedia.

Código:
CREATE TABLE rel_pl_actp
(
  pl_id integer,
  actp_id integer,
  id_rel oid NOT NULL,
  CONSTRAINT pk_rel PRIMARY KEY (id_rel ),
  CONSTRAINT rel_pl_actp_actp_id_fkey FOREIGN KEY (actp_id)
      REFERENCES acces_tipus (actp_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT rel_pl_actp_pl_id_fkey FOREIGN KEY (pl_id)
      REFERENCES platja_cala (pl_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
Es correcto crearla así? Gracias!

Etiquetas: checkbox, formularios
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 12:21.