Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sumar variable [Array recorrido]

Estas en el tema de Sumar variable [Array recorrido] en el foro de PHP en Foros del Web. Hola a todos. Voy al grano estoy desarrollando una cesta y a la hora de sumar el precio de todos los productos y no se ...
  #1 (permalink)  
Antiguo 01/03/2013, 16:54
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Sumar variable [Array recorrido]

Hola a todos. Voy al grano estoy desarrollando una cesta y a la hora de sumar el precio de todos los productos y no se me ocurre la manera correcta de hacerlo, aqui dejo un poco de codigo.

Metodo de la clase donde saco la informacion del producto.

Código PHP:
    public function getInfoProductoSession($id$tabla){
        
$conexion Database::datos();
        
$consulta "SELECT * FROM productos WHERE id = '$id'";
        
$ejecutar $conexion->query($consulta);
        
$result $ejecutar->fetch_assoc();
        return 
$result[$tabla];
    } 
Aqui donde visualizo la cesta y la instancia de la clase para usar el metodo getInfoProductoSession.

Código PHP:
<?php
foreach($_SESSION["cesta"] as $indice => $valor){
    
?>
        <tr class="tdbody">
            <td class="unidades"><span class="unidadesspan"><?php echo $valor?></span></td>
            <td class="articulo"><?php echo $producto->getInfoProductoSession($indice'nombre_producto'); ?></td>
            <td class="preciou" ><?php echo $producto->getInfoProductoSession($indice'precio'); ?>&euro;</td>
            <td class="subtotal"><?php echo $producto->getInfoProductoSession($indice'precio')*$valor?>&euro;</td>
            <td class="subtotal"><a href="eliminar_producto.php?producto=<?php echo $indice?>"><img src="images/eliminar.png"></a></td>
        </tr>
    <?php
    
}
    
?>
La session cesta, lleva como indice la ID del producto y el valor es la cantidad de dicho producto que quiere comprar.
Lo que llevo intentando unas cuantas horas es que el precio total osea:

Código PHP:
<?php echo $producto->getInfoProductoSession($indice'precio'); ?>
Se sume, si hay 3 productos el valor seria:

Código PHP:
<?php 
echo $producto->getInfoProductoSession($indice'precio');
// Resultado: 100 450 300
?>
Que seria el precio y me gustaria sumar esos precios/numeros para luego hacer un calculo para el iva.

Un saludo y espero haberme explicado bien.

Gracias.
  #2 (permalink)  
Antiguo 01/03/2013, 18:14
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Sumar variable [Array recorrido]

No te entiendo..
Te refieres a que, donde tienes
Código PHP:
Ver original
  1. <?php echo $producto->getInfoProductoSession($indice, 'precio')*$valor; ?>
hagas
Código PHP:
Ver original
  1. <?php $subT=$producto->getInfoProductoSession($indice, 'precio')*$valor;
  2.            $sum+=$subT;
  3.            echo $subT;
  4.  ?>
Para al final hacer
Código PHP:
Ver original
  1. <?php
  2.        echo $sum;
  3. ?>
  #3 (permalink)  
Antiguo 01/03/2013, 18:25
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Sumar variable [Array recorrido]

Lo siento, sabia que no me había explicado muy bien, no se ni como explicar lo que me pasa la verdad jajaja.

En el trozo donde se visualizan los productos de la 'carro.php':
Suponga monos que hay 3 productos:
Producto 1 con valor de 100€
Producto 2 con valor de 200€
Producto 3 con valor de 300€.

Código PHP:
 <?php
foreach($_SESSION["cesta"] as $indice => $valor){
    
?>
        <tr class="tdbody">
            <td class="unidades"><span class="unidadesspan"><?php echo $valor?></span></td>
            <td class="articulo"><?php echo $producto->getInfoProductoSession($indice'nombre_producto'); ?></td>
            <td class="preciou" ><?php echo $producto->getInfoProductoSession($indice'precio'); ?>&euro;</td>
            <td class="subtotal"><?php echo $producto->getInfoProductoSession($indice'precio')*$valor?>&euro;</td>
            <td class="subtotal"><a href="eliminar_producto.php?producto=<?php echo $indice?>"><img src="images/eliminar.png"></a></td>
        </tr>
    <?php
    
}
    
?> 
        <tr align="right" valign="middle"> 
            <td id="total"></td>
               <td id="total" colspan="3">IVA: 21%</th>
          </tr>
        <tr align="right" valign="middle"> 
               <th id="total" colspan="4">Total: <?php echo $producto->getInfoProductoSession($indice'precio'); ?>&euro;</th>
          </tr>
En Total: va a salir el precio total de todos los productos y no la suma, ej:

Código HTML:
<tr align="right" valign="middle"> 
	   		<th id="total" colspan="4">Total: 100 200 300&euro;</th>
	  	</tr> 
Entonces una solucion que e pensado es almacenar en una variable esos valores:

Código PHP:
<?php $total $producto->getInfoProductoSession($indice'precio'); // Resultado: 100 200 300?>
Y sumarlo. Solo que como los valores estan en una misma variable no se me ocurre como sumarlo, el hecho de estar en el foreach creo que dificulta bastante ya que tambien e intentado utilizar array y añadirlos mediante array_push y no a resultado con exito.

Saludos y espero que me haya explicado mejor lo siento.
  #4 (permalink)  
Antiguo 01/03/2013, 18:39
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Sumar variable [Array recorrido]

Y mantener en una variable la concatenación de subtotales, y en otra la suma?
Y si no, a partir de la variable con la concatenación:
Código PHP:
Ver original
  1. $sum=array_sum(explode(" ",$subTotales));

O mantener los subtotales en un array, y hacer implode (para la lista) y array_sum (para el total)..

Hay mil formas de hacerlo.
  #5 (permalink)  
Antiguo 01/03/2013, 18:53
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Sumar variable [Array recorrido]

El problema es que con array_sum me salen las sumas de los primeros productos mira, a si es lo que estoy probando:

Código PHP:
        $p=array();
        foreach(
$_SESSION["cesta"] as $indice => $valor){
                
                
$test=array_push($p,$producto->getInfoProductoSession($indice'precio'));
                
//var_dump($p);
                
echo array_sum($p);

// Resultado de var_dump : array(1) { [0]=> string(3) "250" } array(2) { [0]=> string(3) "250" [1]=> string(2) "30" } array(3) { [0]=> string(3) "250" [1]=> string(2) "30" [2]=> string(3) "450" } 

// Resultado de echo array_sum:
250 280 730 
Fijate que crea 3 array, el resultado que quiero seria el ultimo de array_sum los 730 que es la suma de todos.

Muchas gracias por la ayuda, la verdad es que llevo todo el dia con esto.

Saludos
  #6 (permalink)  
Antiguo 01/03/2013, 19:00
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Sumar variable [Array recorrido]

...Y por qué pones el echo del array_sum() dentro del bucle?
Ponlo *fuera* del bucle, obviamente, cuando ya hayas metido todos los valores dentro del array, no mientras los pones...
  #7 (permalink)  
Antiguo 01/03/2013, 19:16
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Sumar variable [Array recorrido]

Muchas gracias dashtrash, el problema era el array_sum que estaba dentro del bucle, tienes razon.

Etiquetas: select, tabla, variable
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 07:51.