Ver Mensaje Individual
  #13 (permalink)  
Antiguo 27/11/2013, 17:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Vamos por el principio:
Cita:
He hecho una base de datos para mis usuarios, una para mis items y otro que es la de mi carrito, en la base de datos del carrito solo esta idCarrito, idUsuario, idItem y precio.

no cosigo hacer una sumatoria de todos los precios que le pertenezcan a cierto idItem que contenga en este el id del usuario que lo almacenó..
Esto es lo que se supone que quieres obtener. No queda muy claro si lo que necesitas es el total del carrito, el subtotal de cada producto, o alguna otra cosa, así que supondremos que se trata de ambas cosas a la vez: Subtotal y Total.
Bien, pero para lograr eso usas esto:
Código PHP:
if ( !empty( $arrUsuario ) ) { 
    
// traemos el carrito correspondiente al usuario
    
$arrCarrito = array();
    
$query "SELECT carrito.idCarrito, carrito.idNoticia, carrito.fAgregado, usuarios.IdUsuario,  usuarios. usuario, noticias.titulo, noticias.precio
    FROM `carrito` 
    INNER JOIN `usuarios` ON carrito.idUsuario = usuarios.idUsuario
    INNER JOIN `noticias` ON carrito.idNoticia = noticias.idNoticia
    WHERE noticias.idUsuario = " 
$arrUsuario['idUsuario']  ."
    ORDER BY carrito.fAgregado DESC"
;
    
$resultado mysql_query ($query$dbConn);
    while ( 
$row mysql_fetch_assoc ($resultado)) {
    
array_push$arrCarrito,$row );

Si extraigo de allí la consulta (una vez limpiada) tenemos:
Código MySQL:
Ver original
  1.     C.idCarrito,
  2.     C.idNoticia,
  3.     C.fAgregado,
  4.     U.IdUsuario,  
  5.     U. usuario,
  6.     N.titulo,
  7.     N.precio
  8. FROM `carrito` C
  9.     INNER JOIN `usuarios` U ON C.idUsuario = U.idUsuario
  10.     INNER JOIN `noticias` N ON C.idNoticia = C.idNoticia
  11. WHERE N.idUsuario = " . $arrUsuario['idUsuario']  ."
  12. ORDER BY C.fAgregado DESC
De esta consulta surgen algunas dudas, como por ejemplo, ¿qué representa "Noticia" y por qué se llama así?
Otra cosa que no queda clara es que en un carrito puede entrar más de una vez el mismo producto, porque en ese caso habría que realizar un agrupamiento por su ID de producto.
Hay algunas cosas que no tienen mucho sentido, pero si suponemos que un mismo producto entra más de una vez, la consulta sería:
Código MySQL:
Ver original
  1.     C.idCarrito,
  2.     C.idNoticia,
  3.     U.IdUsuario,  
  4.     U. usuario,
  5.     N.titulo,
  6.     N.precio,
  7.     SUM(N.precio) Subtotal
  8. FROM `carrito` C
  9.     INNER JOIN `usuarios` U ON C.idUsuario = U.idUsuario
  10.     INNER JOIN `noticias` N ON C.idNoticia = C.idNoticia
  11. WHERE N.idUsuario = " . $arrUsuario['idUsuario']  ."
  12. GROUP BY idNoticia
  13. ORDER BY C.fAgregado DESC
Eso daría una columna de subtotales, que puedes procesar, o bien para obtener un registro final con la suma tottal:
Código MySQL:
Ver original
  1.     C.idCarrito,
  2.     C.idNoticia,
  3.     U.IdUsuario,  
  4.     U. usuario,
  5.     N.titulo,
  6.     N.precio,
  7.     SUM(N.precio) Subtotal
  8. FROM `carrito` C
  9.     INNER JOIN `usuarios` U ON C.idUsuario = U.idUsuario
  10.     INNER JOIN `noticias` N ON C.idNoticia = C.idNoticia
  11. WHERE N.idUsuario = " . $arrUsuario['idUsuario']  ."
  12. ORDER BY C.fAgregado DESC
Es un poco más complicada de resultado, pero la idea sería esa.
En cualquier caso, hay cosas que no quedan muy claras, pero lo que te dice @Dalam es una solución práctica. Aunque bien debes tener en cuenta que podrías obtener la suma total simplemente:

Código MySQL:
Ver original
  1.     C.idCarrito,
  2.     U.IdUsuario,  
  3.     U. usuario,
  4.     SUM(N.precio) total
  5. FROM `carrito` C
  6.     INNER JOIN `usuarios` U ON C.idUsuario = U.idUsuario
  7.     INNER JOIN `noticias` N ON C.idNoticia = C.idNoticia
  8. WHERE N.idUsuario = " . $arrUsuario['idUsuario']  ."
  9. GROUP BY idNoticia
  10. ORDER BY C.fAgregado DESC
y leer el array resultante...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)