php - strip_tags - El mes de totales mensuales devuelve NULL y solo muestra el total acumulado
strip_tags wordpress (4)
SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) profittotal,
Debiera ser
SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) AS profittotal,
Te perdiste un "AS"
Estoy usando lo siguiente para tratar de generar mis totales mensuales en un formato como:
January
Quoted Total : £678
Parts Total : £432
Profit Total : £244
February
Quoted Total : £650
Parts Total : £345
Profit Total : £123
etc ..........
// Work Complete Totals
$query = $db->query("SELECT SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) profittotal,
DATE_FORMAT(''%Y-%m'', completeddate) AS month
FROM `jobdetails`
WHERE jobstatus=''complete''
GROUP BY DATE_FORMAT(''%Y-%m'', completeddate)");
echo ''<div style="float:right; padding-right:10px;">'';
echo ''<strong>Work Complete Totals</strong>'';
while($result = $query->fetch_object()) {
$pricequoted = number_format($result->pricequotedtotal, 2, ''.'', '''');
$partprice = number_format($result->partpricetotal, 2, ''.'', '''');
$profit = number_format($result->profittotal, 2, ''.'', '''');
echo ''<p><strong style="color:red;">Quoted Total : £''.$pricequoted.''</strong></p>'';
echo ''<p><strong style="color:Darkorange ;">Parts Total : £''.$partprice.''</strong></p>'';
echo ''<p><strong style="color:green;">Profit Total : £''.$profit.''</strong></p>'';
}
echo ''</div>'';
El problema que estoy recibiendo es que solo está produciendo los totales acumulados, así que obtengo lo siguiente al final de la página UNA VEZ, pero nada más:
Work Complete Totals
Quoted Total : £1460.00
Parts Total : £541.43
Profit Total : £918.57
Si ejecuto la consulta anterior en phpmyadmin obtengo el resultado:
pricequotedtotal partpricetotal profittotal month
1460 541.43 918.5699999999998 NULL
El diseño de mi mesa es el siguiente:
id customerID name facebookuserurl tel email address itemforrepair repairdetails otherdetails pricequoted partprice profit datepartordered jobstatus dateofcompletion datecreated itemnumber
Debajo hay una fila de muestra:
49 37ac4 Ellen Frost https://www.facebook.com/ellen.mccormick.18 Galaxy S3 (Fullsize) Blue Broken front glass and also digitiser not working. Quoted customer on whole lcd, digitiser assembly r... 140 114.98 25.02 2013-05-02 complete 2013-05-08 2013-05-01 251258104217
EDITAR >> A continuación se muestra una captura de pantalla de varias filas en la tabla.
EDIT >>
Esta es mi estructura de tabla:
Debes cambiar esto
DATE_FORMAT(''%Y-%m'', completeddate)
a
DATE_FORMAT(completeddate, ''%Y-%m'')
Es por eso que obtienes NULL
en tu columna de month
y por lo tanto solo una fila.
Ver entrada manual .
Bueno, puedes intentar esta consulta
SELECT SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) AS profittotal,
MONTHNAME(completeddate) AS month
FROM `jobdetails`
WHERE jobstatus=''complete''
GROUP BY MONTH(completeddate)
La columna ''completeddate'' no existe en la tabla anterior, en su lugar use ''dateofcompletion''
Por lo tanto, ejecutar la consulta y ponerlos en while
loop producirá exactamente lo que querías
También vi su estructura de tabla, es mejor formatear una tabla un poco usando varchar
, int
, float
, etc. columnas de text
consumen más memoria
Ian,
Supongo que la siguiente consulta te ayudará.
SELECT SUM (pricequoted) AS pricequotedtotal, SUM (partprice) AS partpricetotal, SUM (profit) profittotal, MONTHNAME (dateofcompletion) FROM jobdetails
DONDE jobstatus = ''complete'' GROUP BY DATE_FORMAT (dateofcompletion, ''% Y-% m'') ordena por fechadecompletar ;
+------------------+----------------+-------------+-----------------------------+ | pricequotedtotal | partpricetotal | profittotal | MONTHNAME(dateofcompletion) | +------------------+----------------+-------------+-----------------------------+ | 140 | 114.98 | 25.02 | May | | 140 | 114.98 | 25.02 | June | +------------------+----------------+-------------+-----------------------------+ 2 rows in set (0.00 sec)