SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: Alberto_127 en Jueves 30 de Octubre de 2008, 19:00

Título: Insertar en una base de datos Relacional
Publicado por: Alberto_127 en Jueves 30 de Octubre de 2008, 19:00
hola buen dia a todos, tengo una duda sobre insertar datos en un bd relacional, tengo una tabla de usuarios, con los campos, id, user, password, nivel, diaregistro; tengo otra
tabla que se llama datos_de_usuarios con los campos, id, nombre, apellidos, sexo, fecha, id_user, id_user es una FK al campo id de la tabla usuarios; al momento de crear un
usuario lo que hago es primero insertar los datos en la tabla usuario, esto me genera un id dado que es autoincrementable, segundo hago un select a la tabla para tomar el id
y tercero inserto los demas valores en la otra tabla datos_de_usuarios junto con el id del usuario, de esa forma lo he hecho, mi duda es alguien sabe de otra forma de realizar esto,
no se si me explicado, insertar los datos en una tabla, tomar el valor id que es autoincrement para insertarlo en la otra tabla para crear la relacion, de antemano gracias a todos por
sus comentarios.
Título: Re: Insertar en una base de datos Relacional
Publicado por: el_shanky en Viernes 31 de Octubre de 2008, 02:08
Para mi es tan válido lo que haces vos como tmb lo sería insertar el id del datos_de_usuario dentro de la tabla usuario!

No entiendo cual es tu incógnita? :S

Salu2
Título: Re: Insertar en una base de datos Relacional
Publicado por: homie en Viernes 31 de Octubre de 2008, 06:09
Ok, si alcancé a entender lo que quieres hacer es insertar datos a 2 tablas diferentes desde un mismo formulario, si eso es correcto, lo que tendrías que hacer sería lo siguiente:

Código: PHP
  1. <?php
  2. //Recuperas los valores de tu formulario que insertarás en la tabla usuarios
  3. $user = $_POST['user'];
  4. $password = $_POST['password'];
  5. $nivel = $_POST['nivel'];
  6. $diaregistro = $_POST['diaregistro'];
  7.  
  8. //Insertas los valores a la tabla usuarios
  9. mysql_query("INSERT INTO usuarios (user, password, nivel, diaregistro) VALUES ('$user', '$password', '$nivel', '$diaregistro')",$conexion);
  10.  
  11. //Recuperas los valores de tu formulario que insertarás en la tabla datos_de_usuarios
  12. $nombre = $_POST['nombre'];
  13. $apellidos = $_POST['apellidos'];
  14. $sexo = $_POST['sexo'];
  15. $fecha = $_POST['fecha'];
  16. $id_user = mysql_insert_id(); //<---Aquí es donde tomas el valor id que es autoincrement para insertarlo en la otra tabla
  17.  
  18. //Insertas los valores a la tabla datos_de_usuarios
  19. mysql_query("INSERT INTO usuarios (nombre, apellidos, sexo, fecha, id_user) VALUES ('$nombre', '$apellidos', '$sexo', '$fecha', '$id_user')", $conexion);
  20. ?>
  21.  

Espero que esto te pueda ayudar. Saludos  :good:
Título: Re: Insertar en una base de datos Relacional
Publicado por: F_Tanori en Sábado 1 de Noviembre de 2008, 16:58
En experiencias propias mysql_insert_id() falla, en ocaciones no devuelve el valor correcto.

La opcion que he 'adoptado' es generar una cadena unica por ejempo con UniqID (http://www.php.net/manual/es/function.uniqid.php) despues hacer una consulta con esa cadena unica y obtener el Id autonumerico, parece que esto es menos productivo que usar la funcion  mysql_insert_id(), ya que seria otra consulta, una insercion etc., incluso hay muchas forma de hacerlo pero es bastante efectiva y certera :P

Esto es en base a problemas que hemos experimentado usando esa funcion, y por lo cual utilizamos esta forma comentada



Saludos
Título: Re: Insertar en una base de datos Relacional
Publicado por: objetivophp en Domingo 2 de Noviembre de 2008, 20:21
Si lo que quieres es obtener el id insertado recientemente para una conexion se debe usar  LAST_INSERT_ID();
Es decir si haces un ingreso en una tabla con campo autoincremental y quieres usar el id que se genero en esa tabla la siguiente consulta es SELECT LAST_INSERT_ID(); puesto que esta es nativa de MySQL y trae el ultimo id para la conexion y no el ultimo id de la tabla por lo menos es lo que entiendo del manual de MySQL que difiere de mysql_insert_id de php que nos trae el ultimo id de cualquier conexion..
Título: Re: Insertar en una base de datos Relacional
Publicado por: Alberto_127 en Martes 4 de Noviembre de 2008, 18:29
gracias a todos por su tiempo y sus respuestas, pues en principio use $id_user = mysql_insert_id(); pero si dicen que a veces devuelve un valor erroneo usare la funcion nativa de
MYSQL, a veces programo, y pues siempre busco una mejor manera de hacerlo, ya saben mas efeciente, como dicen todos los caminos conducen a roma, pero habran caminos largos
y otros cortos, saludos a todos y denuevo gracias por sus respuestas  :beer: