Foros del Web » Programando para Internet » PHP »

codigo en tabla maestro/detalle

Estas en el tema de codigo en tabla maestro/detalle en el foro de PHP en Foros del Web. Hola a todos, estoy desarrollando un pequeño sistema de ventas con php y mysql Y he llegado al momento en que tengo que insertar el ...
  #1 (permalink)  
Antiguo 23/11/2006, 21:19
 
Fecha de Ingreso: abril-2005
Ubicación: Lima-Peru
Mensajes: 313
Antigüedad: 19 años
Puntos: 1
codigo en tabla maestro/detalle

Hola a todos, estoy desarrollando un pequeño sistema de ventas con php y mysql



Y he llegado al momento en que tengo que insertar el detalle de un pedido, asi que feliz programando hasta que hago el query de insercion para el pedido(maestro) el id lo tengo como autoincrement de 10 caracteres, luego procedo a insertar el detalle pedido (claves idpedido, idprod) asi que tengo que insertar el codigo del pedido, pero de donde lo saco?, hago un select con un where? con que lo comparo y es autogenerado, la salida que pense es asignar individualemte el codigo para el pedido, guardarlo como variable y pasarlo para el detalle, estaria bien?, pero para que no sea posible que se repitan tendrian que ser correlativos,teniendo en cuenta el ultimo generado, me estoy complicando demasiado?

Y si no fuera mucho pedir si pudieran dar una breve explicacion de como manejan el tema de los codigos con los maestros/detalle

  #2 (permalink)  
Antiguo 23/11/2006, 21:45
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas

Podés usar la función LAST_INSERT_ID() de mysql (hay una función equivalente en php, pero por lo que leí, usar la de mysql es mejor).

En código php sería algo así:
Código PHP:
$consulta_id mysql_query("SELECT LAST_INSERT_ID();");
$ultimo_id mysql_result($consulta_id,0,0); 
O sea, que tendrías que hacer el primer INSERT (maestro), obtener el id con LAST_INSERT_ID(), y después usar ese dato para el próximo INSERT (detalle).

Si sólo vas a usar el id de la tabla de pedidos una vez, para insertar en el detalle, podés ahorrarte el select y hacer:

Código PHP:
INSERT INTO detalle_pedido (id_det,id_padre,otro_campoVALUES (NULL,LAST_INSERT_ID(),'algun valor'); 
(Lo puse de memoria así que antes de usarlo chequealo!)

Lo único que tendrías que tener en cuenta es que si después volvés a usar LAST_INSERT_ID después de hacer el insert en detalles, estarías obteniendo el id del segundo insert, no del primero. (Siempre trae el último autoincremental insertado por cliente; o sea que aunque justo dos personas entraran al mismo tiempo, los id no pueden mezclarse -- según la documentación de mysql, al menos).

Suerte
Califa
  #3 (permalink)  
Antiguo 23/11/2006, 21:46
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
para mysql http://www.php.net/manual/en/functio...-insert-id.php

si es otra db busca en la pagina de php por insert-id
  #4 (permalink)  
Antiguo 23/11/2006, 22:21
 
Fecha de Ingreso: abril-2005
Ubicación: Lima-Peru
Mensajes: 313
Antigüedad: 19 años
Puntos: 1
Muchas gracias "califa010" tu respuesta a sido muy explicativa, voy a revisar esa opcion que no la conocía, y tambien a "zsamer" creo que es el equivalente de lo que dice califa?, voy a chekarlo.

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 18:21.