Foros del Web » Programando para Internet » PHP »

Guardar datos temporalmente

Estas en el tema de Guardar datos temporalmente en el foro de PHP en Foros del Web. Hola a todos como estan veran tengo el siguiente problema he normalizado mi bd y cuando trato de insertar un registro desde mi aplicacion me ...
  #1 (permalink)  
Antiguo 02/09/2015, 13:28
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Guardar datos temporalmente

Hola a todos como estan veran tengo el siguiente problema he normalizado mi bd y cuando trato de insertar un registro desde mi aplicacion me sale el siguiente error
Código HTML:
Ver original
  1. Cannot add or update a child row. a foreign key constraint fails ('d2000177_jmsisg','contacto', CONSTRAINT, 'contacto_empresa', FOREIGN KEY('jc_empresa_id') references empresa('jc_empresa_id'))
leyendo entendí que primero debe de existir un registro en la tabla empresa para poder registrar un contacto pero en mi aplicación se registra ambos a la vez así que pensé en guardar los datos que envió del formulario del contacto guardarlos temporalmente y luego enviarlos
  #2 (permalink)  
Antiguo 03/09/2015, 08:42
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Guardar datos temporalmente

El problema es que primero debo guardar en mi tabla empresa y luego puedo podre guardar en mi tabla contacto la cual esta estructurada asi
//Tabla Empresa
Código MySQL:
Ver original
  1. CREATE TABLE `empresa` (
  2.   `jc_empresa_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_empresa_nombre` varchar(100) DEFAULT NULL,
  4.   `jc_empresa_razon_social` varchar(150) DEFAULT NULL,
  5.   `jc_empresa_ruc` int(11) DEFAULT NULL,
  6.   `jc_empresa_matriz` varchar(100) DEFAULT NULL,
  7.   `jc_empresa_rubro` varchar(100) DEFAULT NULL,
  8.   `jc_pais_id` int(11) DEFAULT NULL,
  9.   `jc_departamento_id` int(11) DEFAULT NULL,
  10.   `jc_provincia_id` int(11) DEFAULT NULL,
  11.   `jc_distrito_id` int(11) DEFAULT NULL,
  12.   `jc_empresa_direccion` varchar(100) DEFAULT NULL,
  13.   `jc_empresa_categoria` varchar(10) DEFAULT NULL,
  14.   `jc_empresa_telefono` varchar(30) DEFAULT NULL,
  15.   `jc_empresa_email` varchar(100) DEFAULT NULL,
  16.   `jc_empresa_pagina_web` varchar(150) DEFAULT NULL,
  17.   `jc_empresa_tipo` varchar(20) DEFAULT NULL,
  18.   `jc_empresa_fecha_actualizacion` date DEFAULT NULL,
  19.   PRIMARY KEY (`jc_empresa_id`),
  20.   KEY `empresa_pais` (`jc_pais_id`),
  21.   KEY `empresa_departamento` (`jc_departamento_id`),
  22.   KEY `empresa_provincia` (`jc_provincia_id`),
  23.   KEY `empresa_distrito` (`jc_distrito_id`),
  24.   CONSTRAINT `empresa_departamento` FOREIGN KEY (`jc_departamento_id`) REFERENCES `departamento` (`jc_departamento_id`),
  25.   CONSTRAINT `empresa_distrito` FOREIGN KEY (`jc_distrito_id`) REFERENCES `distrito` (`jc_distrito_id`),
  26.   CONSTRAINT `empresa_pais` FOREIGN KEY (`jc_pais_id`) REFERENCES `pais` (`jc_pais_id`),
  27.   CONSTRAINT `empresa_provincia` FOREIGN KEY (`jc_provincia_id`) REFERENCES `provincia` (`jc_provincia_id`)
// Tabla Contacto
Código MySQL:
Ver original
  1. CREATE TABLE `contacto` (
  2.   `jc_contacto_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_empresa_id` int(11) DEFAULT NULL,
  4.   `jc_contacto_nombre` varchar(100) DEFAULT NULL,
  5.   `jc_contacto_apellidos` varchar(100) DEFAULT NULL,
  6.   `jc_contacto_cargo` varchar(100) DEFAULT NULL,
  7.   `jc_telefono_contacto_1` varchar(255) DEFAULT NULL,
  8.   `jc_telefono_contacto_2` varchar(255) DEFAULT NULL,
  9.   `jc_email_trabajo_contacto` varchar(255) DEFAULT NULL,
  10.   `jc_email_personal_contacto` varchar(255) DEFAULT NULL,
  11.   `jc_fecha_actualizacion_contacto` date DEFAULT NULL,
  12.   PRIMARY KEY (`jc_contacto_id`),
  13.   KEY `jc_empresa_id` (`jc_empresa_id`),
  14.   CONSTRAINT `contacto_empresa` FOREIGN KEY (`jc_empresa_id`) REFERENCES `empresa` (`jc_empresa_id`)
Funcion que guarda la empresa
Código PHP:
Ver original
  1. function registrar_cliente($ne_data){
  2.     $link = getConexion();
  3.     $ne_nombre = mysql_real_escape_string($ne_data['ne_nombre']);
  4.     $ne_razonsocial = mysql_real_escape_string($ne_data['ne_razon_social']);
  5.     $ne_ruc = mysql_real_escape_string($ne_data['ne_ruc']);
  6.     $ne_matriz = mysql_real_escape_string($ne_data['ne_empresa_matriz']);
  7.     $ne_rubro = mysql_real_escape_string($ne_data['ne_rubro']);
  8.     $ne_pais = mysql_real_escape_string($ne_data['ne_pais']);
  9.     $ne_departamento = mysql_real_escape_string($ne_data['ne_departamento']);
  10.     $ne_provincia = mysql_real_escape_string($ne_data['ne_provincia']);
  11.     $ne_distrito = mysql_real_escape_string($ne_data['ne_distrito']);
  12.     $ne_direccion = mysql_real_escape_string($ne_data['ne_direccion']);
  13.     $ne_contacto = mysql_real_escape_string($ne_data['ne_contacto']);
  14.     $ne_categoria = mysql_real_escape_string($ne_data['ne_categoria']);
  15.     $ne_telefono = mysql_real_escape_string($ne_data['ne_telefono']);
  16.     $ne_correo = mysql_real_escape_string($ne_data['ne_correo']);
  17.     $ne_paginaweb = mysql_real_escape_string($ne_data['ne_pagina_web']);
  18.     $ne_tipo = mysql_real_escape_string($ne_data['ne_tipo_cliente']);
  19.     $ne_fechactualizacion = date("Y-m-d");
  20.     $query = "INSERT INTO empresa(jc_empresa_nombre,jc_empresa_razon_social,jc_empresa_ruc,jc_empresa_matriz,
  21.                            jc_empresa_rubro,jc_empresa_pais,jc_empresa_departamento,jc_empresa_provincia,jc_empresa_distrito,jc_empresa_direccion,jc_empresa_categoria,
  22.                            jc_empresa_telefono,jc_empresa_email,jc_empresa_pagina_web,jc_empresa_tipo,jc_empresa_contacto,jc_empresa_fecha_actualizacion)
  23.               VALUES('$ne_nombre','$ne_razonsocial','$ne_ruc','$ne_matriz','$ne_rubro','$ne_pais','$ne_departamento','$ne_provincia','$ne_distrito','$ne_direccion','$ne_categoria','$ne_telefono','$ne_correo','$ne_paginaweb','$ne_tipo','$ne_contacto','$ne_fechactualizacion')";
  24.     @mysql_query($query, $link) or die(mysql_error());
  25.     $ne_id=mysql_insert_id($link);
  26.     $query2 = "UPDATE contacto SET jc_empresa_id='$ne_id' where  jc_contacto_id='$ne_contacto'";
  27.     @mysql_query($query2, $link)
  28.         or die(mysql_error());
  29.     return $ne_id;
  30. }
en mi aplicación tengo un formulario donde se registra la empresa y en ese mismo modal tengo otro modal donde primero se guarda el contacto y luego se guarda la empresa
  #3 (permalink)  
Antiguo 03/09/2015, 15:51
Usuario no validado
 
Fecha de Ingreso: septiembre-2007
Ubicación: Cuba
Mensajes: 202
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Guardar datos temporalmente

MIra no sé cómo manipularás tus datos, si trabajas con el MVC, no seeee, epro bueno. Teniendo en cuento lo que expones recuerda que php lee de arriba hacia abajo y de izquierda a derecha. A lo mejor lo que piensas que se hace la mismo tiempo no es así, sino una operación primero y luego la otra. Te recomiendo que revises eso.
  #4 (permalink)  
Antiguo 03/09/2015, 15:57
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Guardar datos temporalmente

lo que sucede es que primero segun la logica de mi bd tienes que guardarse la empresa y luego el contacto lo cual en la aplicacion no sucede asi al momento de guardar la empresa el usuario tiene un boton el cual lo lleva a una ventana modal y es donde llena los datos del contacto y los cuales guarda y luego guarda la empresa
  #5 (permalink)  
Antiguo 03/09/2015, 16:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Guardar datos temporalmente

podrias crear una condicion

Código PHP:
Ver original
  1. //primera inserción
  2. $guarda1 = $db->query("blablabla");
  3.  
  4.   //si se guardo el primer registro
  5.    if($guarda1){
  6.          
  7.           //realizamos el segundo guardado
  8.             $guarda2 = $db->query("blablabla");
  9.             echo "Registro completado";
  10. } else {
  11. echo "No se completo la primera operacion"
  12. }
de esa manera no se guardan los datos del usuario hasta que no se guarden los de la empresa
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 03/09/2015, 17:01
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Guardar datos temporalmente

Hola gracias por tu respuesta antes de normalizar la bd se realizaba de la siguiente manera las inserciones
//Esto era una funcion que se le asigna al boton de guardar del contacto luego se envia aun archivo que procesa los datos y por utlimo la insercion a la bd
Código Javascript:
Ver original
  1. function guardar_contacto_empresa(){
  2.   $("#ver_contacto").val($("#n_nombres_contacto").val()+' '+$("#n_apellidos_contacto").val());
  3.   var nc_nombre = $('#n_nombres_contacto').val();
  4.   var nc_apellidos = $('#n_apellidos_contacto').val();
  5.   var nc_cargo = $("#n_cargo_contacto").val();
  6.   var nc_telefonoc = $("#n_telefono_corporativo_contacto").val();
  7.   var nc_telefonop = $("#n_telefono_personal_contacto").val();
  8.   var nc_emailc = $('#n_email_corporativo_contacto').val();
  9.   var nc_emailp = $("#n_email_personal_contacto").val();
  10.   if(nc_nombre == ''){
  11.     alert('Por Favor Ingresar Datos');
  12.     $('#n_nombres_contacto').focus();
  13.   }else if(nc_apellidos == ''){
  14.     alert('Por Favor Ingresar Datos');
  15.     $('#n_apellidos_contacto').focus();
  16.   }else if(nc_cargo == ''){
  17.     alert('Por Favor Ingresar Datos');
  18.     $('#n_cargo_contacto').focus();
  19.   }else if(nc_telefonoc == '' && nc_emailc==''){
  20.     alert('Por Favor Ingresar Datos');
  21.     $('#n_telefono_corporativo_contacto').focus();
  22.   }else{
  23.   var registro_completado_loader = $("#alerta-contacto").html("<div class='alert alert-success'>Contacto Agregado</div>");
  24.   $.ajax({
  25.      type: "POST",
  26.      url: "registrar-cliente.php",
  27.      data: {
  28.         'nc_nombre': nc_nombre,
  29.         'nc_apellidos': nc_apellidos,
  30.         'nc_cargo': nc_cargo,
  31.         'nc_telefonoc': nc_telefonoc,
  32.         'nc_telefonop': nc_telefonop,
  33.         'nc_emailc': nc_emailc,
  34.         'nc_emailp': nc_emailp
  35.       },
  36.            success: function(data)
  37.      {
  38.       registro_completado_loader.html();
  39.       $("#ne_registro_contacto").Formreset();
  40.      }
  41.    });
  42.  }
  43. }
Código PHP:
Ver original
  1. <?php
  2. require_once 'funciones/funciones.php';
  3.     $data_contacto = array('nc_nombre' => $_POST['nc_nombre'],
  4.                     'nc_apellidos' => $_POST['nc_apellidos'],
  5.                     'nc_cargo' => $_POST['nc_cargo'],
  6.                     'nc_telefonoc' => $_POST['nc_telefonoc'],
  7.                     'nc_telefonop' => $_POST['nc_telefonop'],
  8.                     'nc_emailc' => $_POST['nc_emailc'],
  9.                     'nc_emailp' => $_POST['nc_emailp']);
  10. registrar_contacto($data_contacto);
  11. ?>
insercion a la bd
Código PHP:
Ver original
  1. function registrar_contacto($data_contacto){
  2.   $id = mysql_real_escape_string($data_contacto['nc_id_empresa']);
  3.   $contacto_nombre = mysql_real_escape_string($data_contacto['nc_nombre']);
  4.   $contacto_apellido = mysql_real_escape_string($data_contacto['nc_apellidos']);
  5.   $contacto_cargo = mysql_real_escape_string($data_contacto['nc_cargo']);
  6.   $contacto_telefono_corporativo = mysql_real_escape_string($data_contacto['nc_telefonoc']);
  7.   $contacto_telefono_personal = mysql_real_escape_string($data_contacto['nc_telefonop']);
  8.   $contacto_email_corporativo = mysql_real_escape_string($data_contacto['nc_emailc']);
  9.   $contacto_email_personal  = mysql_real_escape_string($data_contacto['nc_emailp']);
  10.   $contacto_fecha_actualizacion = date("Y-m-d");
  11.   $query = "INSERT INTO contacto(jc_empresa_id,jc_contacto_nombre,jc_contacto_apellidos,jc_telefono_contacto_1,jc_telefono_contacto_2,jc_contacto_cargo,jc_email_trabajo_contacto,jc_email_personal_contacto, jc_fecha_actualizacion_contacto)
  12.            VALUES('$id','$contacto_nombre','$contacto_apellido','$contacto_telefono_corporativo','$contacto_telefono_personal','$contacto_cargo','$contacto_email_corporativo','$contacto_email_personal', '$contacto_fecha_actualizacion')";
  13.   @mysql_query($query)
  14.   or die(mysql_error());
  15.   echo  @mysql_insert_id();
  16. }

Etiquetas: formulario, registro, tabla
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 03:20.