Foros del Web » Programando para Internet » PHP »

Insertar datos en varias tablas a la vez

Estas en el tema de Insertar datos en varias tablas a la vez en el foro de PHP en Foros del Web. Hola a todos Tengo una duda que para muchas será una tontería pero me gustaría escuchar la opinión de gente experta. Si tengo la información ...
  #1 (permalink)  
Antiguo 19/10/2010, 09:30
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Insertar datos en varias tablas a la vez

Hola a todos

Tengo una duda que para muchas será una tontería pero me gustaría escuchar la opinión de gente experta.
Si tengo la información del usuario en dos tablas de una base de datos:
Tabla acceso: id_usuario, nombre, clave
Tabla info: id_info, *id_usuario, direccion, telefono
Digamos que el id_usuario se autincrement.
Si yo quiero meter toda la información en las dos tablas desde un mismo formulario, como podría introducir el campo id_usuario en la tabla info si es un dato que desconozco pues es el sistema quien lo asigna automáticamente?

La única manera que se me ocurre es insertando los datos en la tabla acceso, luego obtener el id_usuario y cuando lo tenga escribir los datos en la tabla info.
No me parece una manera óptima de hacer esto pues necesitas 3 consultas para hacer la operación. No se si habrá otra forma de hacerlo más ligero.

Saludos a todos y gracias
  #2 (permalink)  
Antiguo 19/10/2010, 10:06
Avatar de CazaresLuis  
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal
Mensajes: 67
Antigüedad: 14 años, 2 meses
Puntos: 2
Información Respuesta: Insertar datos en varias tablas a la vez

Cita:
Iniciado por atoleon Ver Mensaje
Hola a todos

Tengo una duda que para muchas será una tontería pero me gustaría escuchar la opinión de gente experta.
Si tengo la información del usuario en dos tablas de una base de datos:
Tabla acceso: id_usuario, nombre, clave
Tabla info: id_info, *id_usuario, direccion, telefono
Digamos que el id_usuario se autincrement.
Si yo quiero meter toda la información en las dos tablas desde un mismo formulario, como podría introducir el campo id_usuario en la tabla info si es un dato que desconozco pues es el sistema quien lo asigna automáticamente?

La única manera que se me ocurre es insertando los datos en la tabla acceso, luego obtener el id_usuario y cuando lo tenga escribir los datos en la tabla info.
No me parece una manera óptima de hacer esto pues necesitas 3 consultas para hacer la operación. No se si habrá otra forma de hacerlo más ligero.

Saludos a todos y gracias

Hola tu solución es lo que la mayoría de los programadores hacemos, ahora bien si tus campos son pocos porque no poner todos en una misma tabla por un lado, por el otro, y me incluyo en esta parte, cuando comenzamos en esto de la preogramación en ocasiones nos da miedo realizar muchas consultas hacia nustro servidor y es un error, los servidores estan habilitados para eso y no pasa nada, claro esta que cuando ya son millones de registros pues ahi si hay que optimizar, pero mientras sean pocas inclusive algunas miles no pasa nada

Saludos
  #3 (permalink)  
Antiguo 19/10/2010, 10:29
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Insertar datos en varias tablas a la vez

Y si metes todos los campos en una misma tabla no puede repercutir en el rendimiento? ya que una consulta en esa tabla, con tantos campos, podría ser muy pesada.
Una cosa, si tienes una tabla con 20 campos y realizas una consulta sobre sólo 2 campos, es igual de rápido que si realizas una consulta sobre 2 campos en una tabla de 4 campos? de ser así, pues no me importaría colocar todos los campos en una misma tabla. de lo contrario me parece perder tiempo en consultar una tabla de 20 campos para mirar el nombre y la clave.
  #4 (permalink)  
Antiguo 19/10/2010, 12:13
Avatar de CazaresLuis  
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal
Mensajes: 67
Antigüedad: 14 años, 2 meses
Puntos: 2
Información Respuesta: Insertar datos en varias tablas a la vez

Cita:
Iniciado por atoleon Ver Mensaje
Y si metes todos los campos en una misma tabla no puede repercutir en el rendimiento? ya que una consulta en esa tabla, con tantos campos, podría ser muy pesada.
Una cosa, si tienes una tabla con 20 campos y realizas una consulta sobre sólo 2 campos, es igual de rápido que si realizas una consulta sobre 2 campos en una tabla de 4 campos? de ser así, pues no me importaría colocar todos los campos en una misma tabla. de lo contrario me parece perder tiempo en consultar una tabla de 20 campos para mirar el nombre y la clave.
La verdad no te causa ningun problema, cuantas peticiones crees que se esten haciendo al mismo tiempo?, son muchos tus usuarios?, como te dije cuando son cantidades industriales de información pues puede que el rendimiento falle, pero para unos cuantos registros y peticiones no pasa nada.....
  #5 (permalink)  
Antiguo 19/10/2010, 17:46
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Insertar datos en varias tablas a la vez

Si mi proyecto saliera bien, bueno, muy bien estaríamos hablando de unos 1000 usuarios. puede que la probabilidad sea imposible, pero no me gusta dejar ninguna puerta abierta a problemas. Imagino que debe haber un sistema que usen las grandes compañias para solventar este tipo de obstáculos. Sólo me gustaría conocerlo.
  #6 (permalink)  
Antiguo 19/10/2010, 17:56
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Insertar datos en varias tablas a la vez

pues normalmente segun lei en varios tutoriales y me enseñaron en el tecno es bueno tener varias tablas relacionadas por ejemplo (usuario,perfil) por medio de un id siendo esta relacion uno a uno, que base de datos usas?? suponiendo que sea mysql hay un comando que te permite obtener el ultimo id creado mysql_last_insert_id , primero tendrias que hacer el insert en tu tabla usuario, lugo traer este dato y realizar el insert en la tabla donde tendras los demas datos es un problema sencillo y creo que mejor se maneja de esta manera segun lo que he leido y escuchado pero cada quien es dueño de sus desarrollos y lo hace de la manera que mas le guste saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 19/10/2010, 23:51
Avatar de Thedavids  
Fecha de Ingreso: octubre-2010
Mensajes: 16
Antigüedad: 14 años, 1 mes
Puntos: 0
Cita:
Iniciado por carlos_belisario Ver Mensaje
pues normalmente segun lei en varios tutoriales y me enseñaron en el tecno es bueno tener varias tablas relacionadas por ejemplo (usuario,perfil) por medio de un id siendo esta relacion uno a uno, que base de datos usas?? suponiendo que sea mysql hay un comando que te permite obtener el ultimo id creado [URL="http://translate.google.co.ve/translate?hl=es&sl=en&u=http://php.net/manual/en/function.mysql-insert-id.php&ei=yS--TLPoJoX6lwenipnkBw&sa=X&oi=translate&ct=result&res num=2&ved=0CCQQ7gEwAQ&prev=/search%3Fq%3Dmysql_last_insert_id%26hl%3Des%26biw% 3D922%26bih%3D497"]mysql_last_insert_id [/URL], primero tendrias que hacer el insert en tu tabla usuario, lugo traer este dato y realizar el insert en la tabla donde tendras los demas datos es un problema sencillo y creo que mejor se maneja de esta manera segun lo que he leido y escuchado pero cada quien es dueño de sus desarrollos y lo hace de la manera que mas le guste saludos
exactamente como dice este amigo. con la funcion mysql_insert_id te traes el ultimo id que se creo automáticamente por ser auto-incrementable en el insert into

entonses lo que haces es:

Código PHP:
$consulta "insert into tabla_acceso values ( ' ' , '$nombre','$clave')";
$respuesta mysql_query($consulta,$nombre de la cadena de conexión);
$var=mysql_insert_id();
$consulta_2="insert into tabla_info values ( '$var ' , '$dirección','$teléfono')";
$respuesta_2 mysql_query($consulta_2,$nombre de la cadena de conexión); 
y bueno si funciona , ami me toco hacerlo resientemete en un proyecto que estoy llevando a acabo

Última edición por GatorV; 20/10/2010 a las 08:29
  #8 (permalink)  
Antiguo 06/04/2015, 21:55
Avatar de cortess_13  
Fecha de Ingreso: abril-2015
Ubicación: Tijuana
Mensajes: 14
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Insertar datos en varias tablas a la vez

excellente es lo que buscaba

Etiquetas: tablas
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 12:16.