Subtotales por grupos

David de la respuesta que me diste hace unos minutos, te comento que funciona bien, solo me estoy dando cuenta que el último bloque no tiene subtotales, me imagino por que en la variable $ship al terminar de hacer el While se pone en blanco y no me pone el subtotal de esta ultima categoria, he intentado cambiar el valor pero no he podido, me podrías ayudar ??
Leonel
Hola,
te propongo usar lo que ya tienes para aprovecharlo. Algo como esto:
<?php
$consulta=mysql_query("SELECT * FROM tblproductos RIGHT JOIN $tabla ON modelo = model ORDER BY ship_to_name, model");
$totales=mysql_query("SELECT shipt_to_name, SUM(order_qty) AS sumorder, SUM(tot_qty) AS total FROM tblproductos RIGHT JOIN $tabla ON modelo = model GROUP BY ship_to_name ORDER BY ship_to_name");
$ship='';
while($row = mysql_fetch_array($consulta)){
if ($ship > '' && $ship <> $row["ship_to_name"]) {
$sub = mysql_fetch_array($totales);
echo "
<table>
<tr>
<td>$sub[ship_to_name]</td>
<td>$sub[sumorder]</td>
<td>$sub[total]</td>
</tr>
</table>
";
}
$ship=$row["ship_to_name"];
$usermodel=$row["model"];
$pcmodel=$row["modelo"];
$qty=number_format($row["order_qty"],0);
$t_qty=number_format($row["tot_qty"],0);
$largo=$row["Largo"];
$ancho=$row["Ancho"];
$alto=$row["Alto"];
$tot_amt=number_format($row["net_amt_txn"],2);
$vol=number_format(($largo*$ancho*$alto)*$qty,2);
$piso=number_format($vol/47,2);
$granel=number_format($vol/95,2);
echo("
<table border='0' width='100%'cellspacing='0' cellpadding='0'>
\n");
echo("
<tr>
\n");
echo("
<td width='34%'>
<p align='left'><b><font face='Tahoma' size='1'>$ship</font></b></td>
\n");
echo("
<td width='13%'>
<p align='left'><b><font face='Tahoma' size='1'>$usermodel</font></b></td>
\n");
echo("
<td width='13%'>
<p align='left'><b><font face='Tahoma' size='1'color='#CCOOOO'>$pcmodel</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$qty</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$tot_amt</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$vol</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$piso</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$granel</font></b></td>
\n");
echo("
</tr>
\n");
echo("
</table>
\n");
}
Saludos.
David Cortés Braña

1 respuesta

Respuesta
1
Para que te haga el último subtotal tendrás que añadir el código del subtotal también después del bucle while para que lo realice cuando ya no queden más registros:
<?php
$consulta=mysql_query("SELECT * FROM tblproductos RIGHT JOIN $tabla ON modelo = model ORDER BY ship_to_name, model");
$totales=mysql_query("SELECT shipt_to_name, SUM(order_qty) AS sumorder, SUM(tot_qty) AS total FROM tblproductos RIGHT JOIN $tabla ON modelo = model GROUP BY ship_to_name ORDER BY ship_to_name");
$ship='';
while($row = mysql_fetch_array($consulta)){
if ($ship > '' && $ship <> $row["ship_to_name"]) {
$sub = mysql_fetch_array($totales);
echo "
<table>
<tr>
<td>$sub[ship_to_name]</td>
<td>$sub[sumorder]</td>
<td>$sub[total]</td>
</tr>
</table>
";
}
$ship=$row["ship_to_name"];
$usermodel=$row["model"];
$pcmodel=$row["modelo"];
$qty=number_format($row["order_qty"],0);
$t_qty=number_format($row["tot_qty"],0);
$largo=$row["Largo"];
$ancho=$row["Ancho"];
$alto=$row["Alto"];
$tot_amt=number_format($row["net_amt_txn"],2);
$vol=number_format(($largo*$ancho*$alto)*$qty,2);
$piso=number_format($vol/47,2);
$granel=number_format($vol/95,2);
echo("
<table border='0' width='100%'cellspacing='0' cellpadding='0'>
\n");
echo("
<tr>
\n");
echo("
<td width='34%'>
<p align='left'><b><font face='Tahoma' size='1'>$ship</font></b></td>
\n");
echo("
<td width='13%'>
<p align='left'><b><font face='Tahoma' size='1'>$usermodel</font></b></td>
\n");
echo("
<td width='13%'>
<p align='left'><b><font face='Tahoma' size='1'color='#CCOOOO'>$pcmodel</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$qty</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$tot_amt</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$vol</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$piso</font></b></td>
\n");
echo("
<td width='8%'>
<p align='right'><b><font face='Tahoma' size='1'>$granel</font></b></td>
\n");
echo("
</tr>
\n");
echo("
</table>
\n");
}
if ($ship > '' && $ship <> $row["ship_to_name"]) {
$sub = mysql_fetch_array($totales);
echo "
<table>
<tr>
<td>$sub[ship_to_name]</td>
<td>$sub[sumorder]</td>
<td>$sub[total]</td>
</tr>
</table>
";
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas