Foros del Web » Programando para Internet » PHP »

Almacenar en una variable la suma de todos los datos de una columna de mysql

Estas en el tema de Almacenar en una variable la suma de todos los datos de una columna de mysql en el foro de PHP en Foros del Web. hola como estan? necesito de su ayuda ya que estoy realizando un carrito de compras con una base de datos.. mi problema es que no ...
  #1 (permalink)  
Antiguo 27/11/2013, 14:50
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Almacenar en una variable la suma de todos los datos de una columna de mysql

hola como estan? necesito de su ayuda ya que estoy realizando un carrito de compras con una base de datos.. mi problema es que no consigo como sumar el precio de cada iten almacenado en mi base de datos.

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ó..

AYUDAAAAA Urgente GRACIAS..
  #2 (permalink)  
Antiguo 27/11/2013, 15:34
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Que lenguaje de programacion usas?
  #3 (permalink)  
Antiguo 27/11/2013, 15:50
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Php y mysql
  #4 (permalink)  
Antiguo 27/11/2013, 15:52
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

ponme la estructura de la tabla mysql que tienes
  #5 (permalink)  
Antiguo 27/11/2013, 15:56
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

esto es lo que tengo
Código PHP:
<?
// iniciamos session
session_start ();

// archivos necesarios
require_once 'admin/config.php';
require_once 
'admin/conexion.php';
require_once 
'admin/esUsuario.php';

// obtengo puntero de conexion con la db
$dbConn conectar();

// verificamos que este conectado el usuario
if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
    
$arrUsuario esUsuario$_SESSION['usuario'], $_SESSION['password'], $dbConn );        
}

if ( !empty(
$_POST['submit']) ) {
    
    if ( !empty(
$_POST['idNoticia']) )    $idNoticia     $_POST['idNoticia'];
    if ( !empty(
$arrUsuario['idUsuario']))    $idUsuario    $arrUsuario['idUsuario'];
    
    
// completamos la variable error si es necesario
    
if ( empty($idNoticia) )     $error['idNoticia']         = true;
    if ( empty(
$idUsuario) )     $error['idUsuario']         = true;
    
    
// si no hay errores registramos al usuario
    
if ( empty($error) ) {
        
        
// inserto los datos de registro en la db
        
$query  "INSERT INTO `carrito` (idUsuario, idNoticia) VALUES ('$idUsuario','$idNoticia')";
        
$result mysql_query($query$dbConn);
        
        
header'Location: carrito' );
        die;
        
    }
    
}
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 );
}
}
else {
    
header('Location: index.php');
}

?>
<!doctype html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Carrito</title>
</head>
<body>
    <?php 
        
if ( !empty( $arrUsuario ) ) {  
            foreach (
$arrCarrito as $carrito) {?>
                <p> <strong>Producto :</strong> <? echo $carrito['titulo']; ?> - <strong> Precio: </strong> <? echo $carrito['precio']; ?> - <strong> Agregado el:</strong>  <? echo $carrito['fAgregado']; ?></p><br>
        <?    }
        }
    else {
        
header(' Location: index .php');
    }
    
?>
</body>
</html>
  #6 (permalink)  
Antiguo 27/11/2013, 16:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

PHP es OFF TOPIC en MySQL. Leer las normas del foro de bases de datos, por favor. En lo posible antes de postear.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 27/11/2013, 16:29
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

mis conexiones a la base de datos las estoy haciendo con PHP
  #8 (permalink)  
Antiguo 27/11/2013, 16:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Sigue siendo tema de PHP.
A la base de datos no le importa ni se ocupa de dónde pones el resultado de la consulta que devuelve, entre otras cosas, porque no interactúa con el lenguaje. Devuelve resultados en un puerto y un servicio, pero no "ve" variables del lenguaje. De eso se ocupan las librerías... que son tema de programación.
Por eso he movido el post acá, y para no tener que borrar todo el código PHP, sin el cual la pregunta resulta inentendible (ver las normas del foro de bases de datos, por favor).

Los expertos en PHP están en este foro. Espera que te respondan, y no te olvides que FDW no es un soporte técnico 24/365, sino un lugar en que uno participa por vocación. Dedicamos el tiempo que podemos, pero también tenemos nuestras propias ocupaciones.
Ten paciencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 27/11/2013, 16:46
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 2 meses
Puntos: 206
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Te han pedido que pongas toda la estructura de la base de datos que tengas relacionada con el carrito, oséase la descripción de las tablas.

Tpiícamente se usa una tabla de usuarios, otra de productos, una tercera para el carrito, donde se almacena qué usuario creó ese carrito, la fecha de cuando lo hico, y a veces, el precio total del carrito; y la cuarta carrito_productos, que relaciona el id del carrito con el id del producto, y la cantidad que compró de ese producto.

Pero tú unes carrito con usuario y con noticias, ni rastro de carritos_productos. Da miedo. Pon la estructura de tu BD relacionada con el carrito.
  #10 (permalink)  
Antiguo 27/11/2013, 16:53
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

en donde tienes
Cita:
while ( $row = mysql_fetch_assoc ($resultado)) {
array_push( $arrCarrito,$row );
}
Cambialo por esto y muestrame que te sale
Cita:
while ( $row = mysql_fetch_assoc ($resultado)) {
$array[] = $row;
}
print_r($array);
exit;
  #11 (permalink)  
Antiguo 27/11/2013, 17:03
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

esto es lo que sale :

Array ( [0] => Array ( [idCarrito] => 2 [idNoticia] => 3 [fAgregado] => 2013-11-27 15:26:03 [IdUsuario] => 1 [usuario] => App Maracaibo, C.A [titulo] => hola hola [precio] => 0.00 ) [1] => Array ( [idCarrito] => 3 [idNoticia] => 6 [fAgregado] => 2013-11-27 15:26:03 [IdUsuario] => 1 [usuario] => App Maracaibo, C.A [titulo] => Hola cómo estan? [precio] => 0.00 ) [2] => Array ( [idCarrito] => 1 [idNoticia] => 3 [fAgregado] => 2013-11-27 15:16:32 [IdUsuario] => 1 [usuario] => App Maracaibo, C.A [titulo] => hola hola [precio] => 0.00 ) )
  #12 (permalink)  
Antiguo 27/11/2013, 17:08
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Te voy a dar pero no se por que realmente
Código PHP:
Ver original
  1. $total = 0;
  2. while ( $row = mysql_fetch_assoc ($resultado)) {
  3.     $total += $row['precio'];
  4.     array_push( $arrCarrito,$row );
  5. }
Pero ten en cuenta que no tienes precios asignados, y que debes solucionar por ti mismo lo del punto flotante de los precios. (aunque lo del punto flotante depende de la configuracion de php.ini que tengas)
  #13 (permalink)  
Antiguo 27/11/2013, 17:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
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)
  #14 (permalink)  
Antiguo 27/11/2013, 18:12
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

es que en realidad no soy muy nuevo en esto de las cosunltas.. cuando coloco en el codigo "NOTICIA" es porque ya habia hecho un sistema de noticias (generico) lo que estoy haciendo en este caso es colocando algunas cosas y sustituyendo otras..

Y por cierto muchas gracias Dalam me sirvió de mucho tu ayuda..

y una pregunta mas como seria la forma mas efectiva de que en vez de aparecer 2 o 3 o infinitas veces el producto se me agrupen y me muestre el precio de los articulos en total (solo del que se repite)...

y de verdad muchas gracias y disculpen no se mucho y me gustaria aprender
  #15 (permalink)  
Antiguo 27/11/2013, 18:40
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: Almacenar en una variable la suma de todos los datos de una columna de mys

Primero coge lapiz y papel y plantea las tablas de base de datos como te dijo marlanga, y luego ponte con el codigo php.
La mejor forma es poniendo tambien una columna de cantidad y asi si el usuario quiere mas de uno , tan solo tienes que hacerle un update al producto del carrito.

Etiquetas: myslq, mysql
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 16:36.