Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Grabar varios registros dependiendo de los checkbox marcados true.

Estas en el tema de Grabar varios registros dependiendo de los checkbox marcados true. en el foro de Mysql en Foros del Web. Hola amigos, tengo una duda El panorama es el siguiente, trabajo con php y espero que corresponda al foro este. Tengo la siguiente base de ...
  #1 (permalink)  
Antiguo 05/03/2011, 17:57
 
Fecha de Ingreso: abril-2010
Mensajes: 112
Antigüedad: 14 años, 7 meses
Puntos: 2
Grabar varios registros dependiendo de los checkbox marcados true.

Hola amigos, tengo una duda

El panorama es el siguiente, trabajo con php y espero que corresponda al foro este.
Tengo la siguiente base de datos.

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `area_trabajo` (
  2.   `id_area_trabajo` int(11) NOT NULL,
  3.   `area_trabajo` varchar(45) DEFAULT NULL,
  4.   PRIMARY KEY (`id_area_trabajo`)
  5.  
  6. --
  7.  
  8. CREATE TABLE IF NOT EXISTS `tareas_area_trabajo` (
  9.   `tareas_id_tareas` int(11) NOT NULL,
  10.   `area_trabajo_id_area_trabajo` int(11) NOT NULL,
  11.   PRIMARY KEY (`tareas_id_tareas`,`area_trabajo_id_area_trabajo`),
  12.   KEY `fk_tareas_has_area_trabajo_tareas1` (`tareas_id_tareas`),
  13.   KEY `fk_tareas_has_area_trabajo_area_trabajo1` (`area_trabajo_id_area_trabajo`)
  14.  
  15. --
  16.  
  17. CREATE TABLE IF NOT EXISTS `tareas_esp` (
  18.   `id_tareas` int(11) NOT NULL AUTO_INCREMENT,
  19.   `tarea` varchar(45) DEFAULT NULL,
  20.   PRIMARY KEY (`id_tareas`)
  21.  
  22. --
  23. CREATE TABLE IF NOT EXISTS `tipos_maquinas` (
  24.   `id_tipos_maquinas` int(11) NOT NULL,
  25.   `tipo_maquina` varchar(45) DEFAULT NULL,
  26.   PRIMARY KEY (`id_tipos_maquinas`)

En el fondo es una lista de tareas, a la que se le relaciona con el tipo de máquina (reloj) a la que pertenece (reloj, cronometro..etc) y estas tareas tambien pertenecen a grupos de áreas de trabajos (basica, mecanismo, pulsera, etc)

Entonces lo que en teoría tengo que hacer para agregar una tarea es primero insertar el id y nombre de la tarea. tomar el id de esa tarea creada e insertar en las relaciones de area y tipo de maquina, entonces por ejemplo, varios tipos de reloj pueden tener la misma tarea, por ejemplo, las reparaciones bases aplica para todos pero la reparacion de mmm aguja de cronografo aplica solo a los crono. Y así.

Bueno para insertar más de 1 registro a la vez, ya que pueden ser 6 al mismo tiempo en el caso que sean todos, ejecuto la siguiente sentencia:

Código MySQL:
Ver original
  1. INSERT INTO tipo_maquina_area (id_tipo_maquina, id_area, id_tarea)
  2. VALUES ($qtz, $area, $tarea_id),
  3. ($auto, $area, $tarea_id),
  4. ($cronoqtz, $area, $tarea_id),
  5.  ($cronoauto, $area, $tarea_id),
  6.  ($electro, $area, $tarea_id),
  7. ($otro, $area, $tarea_id);

Pero eso requiere que todos los checkbox que estoy marcando para seleccionar a que tipos de relojes pertenece estén todos marcados. Al dejar sin marcar solo uno sale el siguiente error

Notice: Undefined index: chkTipo6 in C:\xampp\htdocs\sav11neo\mantenedores\tareas\tarea s.funciones.php on line 163.
Cannot add or update a child row: a foreign key constraint fails (`mulleryc_sav`.`tipo_maquina_area`, CONSTRAINT `tipo_maquina_area_ibfk_1` FOREIGN KEY (`id_tipo_maquina`) REFERENCES `tipos_maquinas` (`id_tipos_maquinas`) ON DELETE CASCADE ON UPDATE CASCADE)


Y asi con los que no se marcan, por un lado, el problema del sql, como hacer para que no inserte si el valor es 0 en el checkbox.
El error de undefined index, es porque lo dejo en 0, el checkbox de por si el valor es el value del tipo de reloj.

Entonces no se cómo hacer la sentencia, o si es problema de php.

Eso, espero que se entienda la problemática y me puedan aconsejar.

Gracias de antemano,

Saludos.

Etiquetas: checkbox, dependiendo, registros
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 17:25.