Ir al contenido


Foto

[RESUELTO] Problema con Agregar el mismo ID en varias tablas en la misma CONSULTA SQL


  • Por favor identifícate para responder
11 respuestas en este tema

#1 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 07:07

Buen día comunidad!!!Eh aquí otro problema sencillo quizas para ustedes pero que me esta complicando totalmente mi existencia!!!!
Les presento el caso:
Tengo 3 tablas que por Entidad Referencial comparten el mismo id, estas serían:

docentes:
    id_docente
    ape_nom
    direccion
    pais
    localidad

docentes_telefonos:
    id_docente
    telefono

docentes_correos:
    id_docente
    correo

La idea es completar un solo formulario agregar.php y que me direccione a mi add.php, en donde tengo mi consulta SQL INSERT INTO.
Bien, el problema es poder generar el mismo id_docente en todas las tablas!!Alguien me podría ayudar por favor con la consulta!!!!
Gracias!!
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 noviembre 2011 - 07:14

Pregunta, las otras dos tablas docente_id es autoincremental?
  • 0

#3 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 07:23

No no, probé con el autoincrement, el tema es que al agregar un docente con el id supuesto 1 y el mismo tiene 3 teléfonos, éstos se agregaran a la tabla con los id 1, 2 y 3!!Por ende la entidad referencial con el docente se me rompería y sólo me mostraría el primer número!!!..
  • 0

#4 kosios

kosios

    Member

  • Miembros
  • PipPip
  • 39 mensajes

Escrito 03 noviembre 2011 - 07:31

Amigo para poderte ayudar tienes q explicar la mecánica o lógica a del negocio, porque por lo q veo, todos los campos q tienes en las 3 tablas pertenecen a docentes.

es decir LA entidad Docentes tiene unos atributos. veamos

DOCENTES
{
*nombres
*Identificaciones
* Teléfono
*correo
* dirección
*y todo lo q mas quieras.
*idmaterias -> podría ser q halla una tabla con las materias q el imparte
*idcolegios -> puede ser q trabaje en varios colegios.

}  Entonces lo q te quiero decir es q No entiendo Q quieres hacer con atributos q pertenecen a una misma entidad en diferentes tablas. explícanos mejor a todos. listo. yo estaré pendiente.
  • 0

#5 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 07:38

Es cierto son datos de docente, pero por Normalización hasta su 3ra Forma Normal debo separar dichas tablas previniendo el supuesto caso que el docente tenga más de un teléfono o bien más de un correo.
Por ende la tabla docentes_telefono cargada con registros quedaría:

id_docente                  telefono
1                              111111111
1                              232323223
1                              456564564
2                              567567567
4                              879789798
4                              345453453

De esta manera al realizar las consultas podría respetar la entidad referencial.
  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 noviembre 2011 - 07:39

Lo que tienes que hacer es guardar en una variable el ultimo ID generado por el insert de la Tabla Docentes, algo asi:



php
  1. $last_id = mysql_insert_id();



ya luego de ahi realizas los otros insert en base a esa variable.

Saludos

  • 0

#7 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 07:50

Es así como manejo la consulta INSERT INTO para agregar el registro:

<?php

require_once("../../conexion/conexion.php");

$sql="INSERT INTO empresas (id_empresa, razon_social, cuit_responsable) VALUES (null,'".$_POST["razon_soc"]."','".$_POST["cuit"]."')";
$res=mysql_query($sql,$conexion);//El campo ID de esta tabla es auto_increment

$sql1="INSERT INTO emp_ubicacion (id_empresa, direccion, ciudad, localidad, departamento, municipio, pais, cp) VALUES (null,'".$_POST["direccion"]."','".$_POST["ciudad"]."','".$_POST["localidad"]."','".$_POST["departamento"]."','".$_POST["municipio"]."','".$_POST["pais"]."','".$_POST["cod_postal"]."')";
$res1=mysql_query($sql1,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa

$sql2="INSERT INTO emp_comunicacion (id_empresa, tel, fax, correo) VALUES (null,'".$_POST["tel"]."','".$_POST["fax"]."','".$_POST["correo"]."')";
$res2=mysql_query($sql2,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa

//O bien sería interesante una sola consulta que guarde en las tres tablas al mismo tiempo!!!

echo "<script type=''>
alert('Los datos de la Empresa fueron ingresados correctamente.');
window.location='emp_admin.php';
</script>";

?>


La verdad no entiendo donde poner la respuesta de enecumene!!
  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 noviembre 2011 - 07:57



php
  1. <?php
  2.  
  3. require_once("../../conexion/conexion.php");
  4.  
  5. $sql="INSERT INTO empresas (id_empresa, razon_social, cuit_responsable) VALUES (null,'".$_POST["razon_soc"]."','".$_POST["cuit"]."')";
  6. $res=mysql_query($sql,$conexion);//El campo ID de esta tabla es AUTO_INCREMENT
  7. $last_id = mysql_insert_id();  //<<<---Aqui--->>>
  8.  
  9. $sql1="INSERT INTO emp_ubicacion (id_empresa, direccion, ciudad, localidad, departamento, municipio, pais, cp) VALUES ('".$last_id."','".$_POST["direccion"]."','".$_POST["ciudad"]."','".$_POST["localidad"]."','".$_POST["departamento"]."','".$_POST["municipio"]."','".$_POST["pais"]."','".$_POST["cod_postal"]."')";
  10. $res1=mysql_query($sql1,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa
  11.  
  12. $sql2="INSERT INTO emp_comunicacion (id_empresa, tel, fax, correo) VALUES ('".$last_id."','".$_POST["tel"]."','".$_POST["fax"]."','".$_POST["correo"]."')";
  13. $res2=mysql_query($sql2,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa
  14.  
  15. //O bien sería interesante una sola consulta que guarde en las tres tablas al mismo tiempo!!!
  16.  
  17. echo "<script type=''>
  18.   alert('Los datos de la Empresa fueron ingresados correctamente.');
  19.   window.location='emp_admin.php';
  20. </script>";
  21.  
  22. ?>


  • 0

#9 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 08:21

Enecumene perdona tanta molestia!!!Pero sigue sin salirme!!Acomodado el código en mi consulta ha quedado así:
<?php

require_once("../../conexion/conexion.php");

$sql="INSERT INTO empresas (id_empresa, razon_social, cuit_responsable) VALUES (null,'".$_POST["razon_soc"]."','".$_POST["cuit"]."')";
$res=mysql_query($sql,$conexion);//El campo ID de esta tabla es auto_increment
$last_id = mysql_insert_id();

$sql1="INSERT INTO emp_ubicacion (id_empresa, direccion, ciudad, localidad, departamento, municipio, pais, cp) VALUES ('".$last_id."','".$_POST["direccion"]."','".$_POST["ciudad"]."','".$_POST["localidad"]."','".$_POST["departamento"]."','".$_POST["municipio"]."','".$_POST["pais"]."','".$_POST["cod_postal"]."')";
$res1=mysql_query($sql1,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa

$sql2="INSERT INTO empresas_tel (id_empresa, tel) VALUES ('".$last_id."','".$_POST["tel"]."')";
$res2=mysql_query($sql2,$conexion);//En esta consulta quisiera guardar el mismo id generado con el formulario anterior para guardarlo en id_empresa

$sql3="INSERT INTO empresas_tel (id_empresa, tel) VALUES ('".$last_id."','".$_POST["tel1"]."')";
$res3=mysql_query($sql3,$conexion);

//O bien sería interesante una sola consulta que guarde en las tres tablas al mismo tiempo!!!

echo "<script type=''>
alert('Los datos de la Empresa fueron ingresados correctamente.');
window.location='emp_admin.php';
</script>";


Un pregunta, en $last_id=mysql_insert_id()...Entre los paréntesis no debería especificar el campo id que quiero tomar, por ejemplo:
$last_id=mysql_insert_id(id_empresa)



Ahhh y mil disculpas por poner en un principio que se trataba de docentes cuando estoy trabajando con empresas!!!Se me cruzaron las tablas!!!jejeje...
  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 noviembre 2011 - 08:25

A ver intenta con un echo o printf de $last_id a ver si toma algun valor y sino prueba poniendolo asi:



php
  1. $last_id = mysql_insert_id($res);



  • 0

#11 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 03 noviembre 2011 - 08:34

Enecumene sos un GENIO!!!!!!!Me salvaste de un suicidio inminente!!!jajajaja...Ahí está funcionando a las mil maravillas!!!!!

GRACIAS
GRACIAS-GRACIAS
GRACIAS-GRACIAS-GRACIAS
GRACIAS-GRACIAS
GRACIAS
  • 0

#12 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 noviembre 2011 - 08:38

:) (y)

Coloco el tema como RESUELTO  ;)

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.