Sumar cantidad de productos en php

¿Cómo estas?
Ayer te hice algunas preguntas, espero que te acuerdes de mi.
Me di cuenta que hay un problema.
Por ej si el cliente selecciona que quiere comprar 3 unidades de un articulo y luego se le ocurre que quiere comprar otras 3 del mismo, en mi lista donde aparece todo lo que compro esas unidades no se suman, es más aparece así:
1
1 Balanza 150 kgs
3
3
3 Jarra Eléctrica
1 Vibratone
No solo que no se suman sino que aparece el nombre una sola vez.
Me gustaría que si son 6 las unidades totales que compro aparezca el 6, no 3 y 3.
Te copio el código que en gran parte es lo que vos me pasaste.
Te recuerdo que en mi base de datos hay tres tablas, una de clientes con todos sus datos, una de productos y otra de realcion de ambas que aparecen el id del cliente, el id del producto y el precio de cada producto que se agrego.
$result=mysql_query("select * from orden where id_zona=1 order by fecha");
    while($row=mysql_fetch_array($result)){
    echo '
<div id="listado1"><br /><span class="fecha">|'.$row['fecha'].'|</span><br /><br /><b>'.$row['nom_ape'].'</b> ha solicitado los siguientes productos: <br />';
    $result2=mysql_query("select * from rel_ord_prod where id_orden=".$row['id']);
    $productos = array();
    while($rowpedidos=mysql_fetch_array($result2)){
    array_push($productos, $rowpedidos['id_productos']);
    $total += $rowpedidos['precio']*$rowpedidos['cantidad'];
    }
    $result3 = mysql_query("select * from productos where id in (".implode(',',$productos).")");
    echo "
<ul>
";
    while($rowproductos=mysql_fetch_array($result3)){
    $result4 = mysql_query("select * from rel_ord_prod where id_orden=".$row['id']." and id_productos=".$rowproductos['id']);
    while($cantidad=mysql_fetch_array($result4)){
    echo '
<li>'.$cantidad['cantidad'].' ';
    }
    echo $rowproductos['nombre'].'</li>
';
    }
    echo "
</ul>
";
    echo '
<div class="izq"><span>Usuario: </span>'.$row['usuario'].'</div>
';
    echo '
<div class="izq"><span>Direccion: </span>'.$row['direccion'].'</div>
';
    echo '
<div class="izq"><span>Horario: </span>'.$row['horario'].'</div>
';
    echo '
<div class="izq"><span>Telefonos: </span>'.$row['telefono'].'</div>
';
    $result4 = mysql_query("select * from metodo_pago where id =".$row['id_metodo']);
    while($rowmetodo=mysql_fetch_array($result4)){
    echo '
<div class="izq"<span>Metodo de pago: </span>'.$rowmetodo['valor'].'</div>
';
    }
    echo '
<div class="izq"><span>Comentarios: </span>'.$row['comentarios'].'</div>
';
    echo '
<div class="izq"><span>Valor de envio: </span>$ 0.-</div>
';
    echo '
<div class="izq"><span>Total a pagar: </span>$ '.$total.'</div>
';
    echo '
<div class="izq"><span>Abona con: </span>'.$row['abona_con'].'.-</div>
';
    echo '
<div id="links"><a class="mod_borr" href="envios.php?seccion=7&cli='.$row["id"].'">modificar</a><span id="minil">|</span> ';
    echo '<a class="mod_borr" href="borrar_cl.php?cli='.$row["id"].'">borrar</a></div>
</div>
';
    echo '<img src="linea.png" id="linea" />';
    unset($total);
    }

1 respuesta

Respuesta
1
$result4 = mysql_query("select *, sum(cantidad) as cantidadespedidas from rel_ord_prod where id_orden=".$row['id']." and id_productos=".$rowproductos['id']." group by id_productos");
Con la clausula group by id_productos, se agrupan los productos que tengan el mismo id_producto; y con el sum estamos sumando la cantidad que correspondería de cada agrupación de id_producto (en vez de sacar $cantidad['cantidad'] tendrías que poner $cantidad['cantidadespedidas'])
Si no te funciona bien me lo dices, que lo he hecho un poco al vuelo sin comprobarlo ni na...
    $result4 = mysql_query("select * from rel_ord_prod where id_orden=".$row['id']." and id_productos=".$rowproductos['id']);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas