Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/11/2012, 03:03
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: carrito php a tabla mysql

A ver el total de orden no es estrictamente necesario, incluso si nos ponemos estrictos podria ser peligroso puesto que es un campo calculado. Siempre lo pudes calcular sumando los registros relacionados con una orden, luego para que guardarlo. Pero si en la sesion vas calculando el total tampoco seria un problema....

Luego ya no tienes problema, insertas la nueva orden, obtienes el ultimo id insertado LAST_INSERT_ID().

En la tabla CONTENIDO_ORDEN te falta un campo num_orden que es donde vas a guardar el id obtenido con la funcion que te indico.

Deberías encapsular todos los inserts en una transacción para evitar que un error deje incompleta una orden o sin contenido.

ORDEN(num_orden, id_usuario, fecha)

(con o sin total)

CONTENIDO_ORDEN(id_contenido, num_orden, id_producto. cantidad, precio)

donde id_contenido es la PK autoinc y num_orden es FK referenciando a ORDEN

Esto te permitirá hacer

Código MySQL:
Ver original
  1. SELECT o.num_orden, o.id_usuario,SUM(c.cantidad*c.precio) total, o.fecha
  2. FROM ORDEN o INNER JOIN CONTENIDO_ORDEN c ON o.num_orden=c.num_orden
  3. GROUP BY num_orden, o.id_usuario,o.fecha;

para obtener el total de cada orden.

De hecho, id_contenido tampoco es del todo necesario ya que num_orden+id_producto podrian ser una PK compuesta, esto ya depende de tu estilo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 19/11/2012 a las 03:23