epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
846
Hola a todos otra vez :S

Tengo un formuario en PHP con Mysql, pero me sucede algo extraño... cuando lleno todos los campos me almacena todo sin problema, pero cuando lleno solamente los campos "requisitos" me arroja error:

Query Failed: Cannot add or update a child row: a foreign key constraint fails (`sanofi`.`educacion`, CONSTRAINT `educacion_ibfk_1` FOREIGN KEY (`rut`) REFERENCES `pacientes` (`rut`) ON DELETE CASCADE ON UPDATE CASCADE)


Tengo 4 Tablas:
1652987380515.png


El formulario es uno solo con todos esos campos y al final el botón "Guardar" ... si completo todo el formulario , almacena sin problema, pero si lleno por ejemplo los campos que son obligatorios, me arroja ese error.

Los INSERT que tengo en la parte superior son estos:

$pacientes = "INSERT INTO pacientes (rut, nombres, apellidos, f_nac, edad, estado_civil, genero, telefono1, telefono2, email1, email2, direccion, comuna, ciudad, region, tipo_prevision, ges, tipo_diabetes, f_ing_prog, contacto_emerg, telefono_emerg) VALUES ('$rut', '$nombres', '$apellidos', '$f_nac', '$edad', '$estado_civil', '$genero', '$telefono1', '$telefono2', '$email1', '$email2', '$direccion', '$comuna', '$ciudad', '$region', '$tipo_prevision', '$ges', '$tipo_diabetes', '$f_ing_prog', '$contacto_emerg', '$telefono_emerg')";

$resultado_pacientes = $mysqli->query($pacientes);

------------------------------------


$tratamiento = "INSERT INTO tratamiento (tipo_insulina, hora_insulina, dosis_insulina, f_ind_insulina, estatus_pcte, hipo_orales_act, hipo_utilizado_act, otra_insulina_act, insulina_uti_act, trat_inyectable_act, tratamiento_act, hipo_orales_ant, hipo_utilizado_ant, otra_insulina_ant, insulina_uti_ant, trat_inyectable_ant, tratamiento_ant, HBA1C, f_examen, med_tratante, tel_med, mail_med, cent_atencion, rut) VALUES ('$tipo_insulina', '$hora_insulina', '$dosis_insulina', '$f_ind_insulina', '$estatus_pcte', '$hipo_orales_act', '$hipo_utilizado_act', '$otra_insulina_act', '$insulina_uti_act', '$trat_inyectable_act', '$tratamiento_act', '$hipo_orales_ant', '$hipo_utilizado_ant', '$otra_insulina_ant', '$insulina_uti_ant', '$trat_inyectable_ant', '$tratamiento_ant', '$HBA1C', '$f_examen', '$med_tratante', '$tel_med', '$mail_med', '$cent_atencion', '$rut')";

$resultado_tratamiento = $mysqli->query($tratamiento);

------------------------------------

$educacion = "INSERT INTO educacion (ed_asignada, f_derivacion, f_educacion, mod_educacion, educado, cons_informado, obs_educacion, abandono_ing, f_aban_educacion, rut) VALUES ('$ed_asignada', '$f_derivacion', '$f_educacion', '$mod_educacion', '$educado', '$cons_informado', '$obs_educacion', '$abandono_ing', '$f_aban_educacion', '$rut')";

$resultado_educacion = $mysqli->query($educacion);

Estan bien hecho esos INSERT por separado o hay que hacerlo de otra forma? o quizás hay que poner algunos if entremedio para que vaya guardando por parte?? ya que da a entender como si guardara primero en la tabla "educación" y no en "paciente" ??
 

ranamaldita

mueranse
Se incorporó
24 Junio 2003
Mensajes
4.522
lo tire a un docker el sistemita este y me arroja esto:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:1) in /var/www/html/index.php on line 29

Warning
: session_start(): Cannot start session when headers already sent in /var/www/html/index.php on line 31

si lo dejo en un server normal , no tire ningun warning.
Esto no tiene que ver con la DB, esto pasa porque tu codigo PHP esta escribiendo "algo" antes del session_start() (o warning seguramente) , incluso puede ser un espacio en blanco. Session_start modifica headers, que no se pueden modificar post escribir algo.
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
846
Esto no tiene que ver con la DB, esto pasa porque tu codigo PHP esta escribiendo "algo" antes del session_start() (o warning seguramente) , incluso puede ser un espacio en blanco. Session_start modifica headers, que no se pueden modificar post escribir algo.

Si, al final tire el html para abajo y deje arriba el php y al parecer funciono.... lo raro es que en todos lados no reclamaba, pero cuando utilice docker comenzó a reclamar
 
Upvote 0
Subir