Foros del Web » Programando para Internet » PHP »

ingresar 2 registros, uno dependiendo del otro

Estas en el tema de ingresar 2 registros, uno dependiendo del otro en el foro de PHP en Foros del Web. Hola, que tal? Estoy haciendo una parte de mi pagina para registrar usuarios, pero estoy teniendo un problema a la hora de añadir los registros ...
  #1 (permalink)  
Antiguo 10/09/2011, 12:12
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 13 años, 4 meses
Puntos: 8
ingresar 2 registros, uno dependiendo del otro

Hola, que tal?

Estoy haciendo una parte de mi pagina para registrar usuarios, pero estoy teniendo un problema a la hora de añadir los registros a las tablas.

El problema es que a la hora de registrarse se debe crear 1 registro en una tabla, y otro en otra tabla, pero con el id de la primera (que se genera automaticamente) debe de ser añadido en la otra tabla. Por ejemplo.

Tabla Cliente:
cliente_id (se genera automaticamente)
nombre
apellido

Tabla Opciones_Clientes:
opciones_cliente_id (se genera automaticamente)
cliente_id
opcion_1
opcion_2

Este es mi codigo:
Código PHP:
<?php
$clientes
="INSERT INTO clientes (cliente_id, nombre, apellido)
VALUES
('','$_POST[nombre]','$_POST[apellido]')"
;
$cliente_id=//id del cliente que se acaba de agregar;
$opciones_clientes="INSERT INTO opciones_clientes (opciones_cliente_id, cliente_id, opcion_1, opcion_2)
VALUES
('','$cliente_id','0','0')"
;
?>

Última edición por morfasto; 10/09/2011 a las 12:25
  #2 (permalink)  
Antiguo 10/09/2011, 13:15
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: ingresar 2 registros, uno dependiendo del otro

imagino que el problema es que desconoces el id asignado al ultimo registro insertado.

Así lo obtendrías:
$cliente_id=mysql_insert_id();

Última edición por ocp001a; 10/09/2011 a las 14:08
  #3 (permalink)  
Antiguo 10/09/2011, 14:19
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: ingresar 2 registros, uno dependiendo del otro

Te refieres a la funcion: mysql_insert_id()

Hice como dijiste:

Código PHP:
<?php
$clientes
="INSERT INTO clientes (cliente_id, nombre, apellido)
VALUES
('','$_POST[nombre]','$_POST[apellido]')"
;
$cliente_id=mysql_insert_id();
$opciones_clientes="INSERT INTO opciones_clientes (opciones_cliente_id, cliente_id, opcion_1, opcion_2)
VALUES
('','$cliente_id','0','0')"
;
?>
Pero en el campo cliente_id de la tabla opciones_clientes se llena con el valor "0"

Alguna idea de porque sale asi?

Gracias!
  #4 (permalink)  
Antiguo 10/09/2011, 14:32
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 11 meses
Puntos: 18
Respuesta: ingresar 2 registros, uno dependiendo del otro

solo estas asignando la consulta a una variable, no estas ejecutandola con un
mysql_query($clientes);... a menos que lo hallas echo por simplificar tu ejemplo.

y dado que pones null en el campo del id de usuario ('','$_POST['nombre']','$_POST['apellido']).
asumo que tienes el campo del id auto incremente y primary key.

de lo contrario asignalo auto increment y primary key.
corres la consulta y despues el mysql_insert_id().

pero deberias checar los inconvenientes de usar mysql_insert_id. ya que devuelve el ultimo id ingresado, mas no necesariamente en esa consulta, puede ser que varias personas registren al mismo tiempo y que varios usuarios cuenten con el mismo id que devuelve la funcion.

por eso checa los inconvenientes.
  #5 (permalink)  
Antiguo 10/09/2011, 15:24
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: ingresar 2 registros, uno dependiendo del otro

Tal vez mejor sea comprobar que el registro existe a la hora de loguearse, y si no existe, crearlo.

Gracias por los aportes!

Etiquetas: dependiendo, ingresar, registro, registros, tabla, usuarios
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 21:13.