Sommare valori di ogni periodo con SELECT

Frankie McManzi

Nuovo Utente
8 Gen 2016
7
0
0
Buongiorno ragazzi,
sono tornato dopo anni qui per chiedere aiuto per una modifica ad un programmino che feci qualche tempo fa.
Ho un db dove è presente una tabella 'fatture' dove sono presenti i campi 'periodo', 'totbn' , 'totcl'. Vorrei fare una pagina dove sia presente un SELECT che mi permetta di fare la somma per periodo di questi totali.

Ho usato
PHP:
 $query = "SELECT SUM(totbn) as somma FROM fatture WHERE periodo = 2015 09"; 
$result = mysql_query($query, $db); 
list($somma) = mysql_fetch_array($result);
print $somma;
ma continuo a ricevere Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given ...

Posso avere aiuto?
Grazie mille!!
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
cosa contiene nell'istruzione mysql_query($query, $db); la variabile $db?
da che ne so dovrebbe essere o MYSQL_ASSOC o MYSQL_NUM o MYSQL_BOTH

comunque (importante) se stai facendo il restiling passa alle istruzioni mysqli, le vecchie istruzioni mysql sono deprecate e con php 7 non più usabili
 

Frankie McManzi

Nuovo Utente
8 Gen 2016
7
0
0
Ciao e grazie per la risposta veloce.. Hai ragione, devo aggiornarmi su mysqli, dovrei mettermi a studiare (a proposito c'è una sorta di "traduttore" per passare il vecchio codice? :elvis:)..

Tornando a noi ho modificato il tutto passando a
PHP:
$q = mysql_query('SELECT SUM(totbn) AS somma_bn FROM fatture WHERE periodo = "2011 06"');
// con fetch_assoc
$r = mysql_fetch_assoc($q);

echo $r['somma_bn']; // o anche $r['SUM(voti)']
Questo però chiaramente me lo fa solo visualizzare un periodo, io invece dovrei visualizzarlo per ognuno, ho provato con GROUP BY e altro ma non trovo niente...
Grazie mille
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
non credo che esista un traduttore, io ho usato
aggiustato il file connessione.php alle metodo mysqlì
cerca e sostituisci mysql con mysqli
e dove serve aggiunto la variabile di connessione
$ris=mysqli_query($connessione, "SELECT ....";
poi cosa intendi per tutto il periodo?
quella select ti da la somma dei dati di giugno 2011
se vuoi es tutti i dati del 2011 devi modificare il whwre WHERE periodo >= "2011 01" AND periodo <= "2011 12" o usare BETWEN (tra il e il)
 

Frankie McManzi

Nuovo Utente
8 Gen 2016
7
0
0
'Periodo' è una colonna della tabella dove viene visualizzato il trimestre della fattura, non mi serve il BETWEEN credo, perchè devo visualizzarli per periodo. In pratica questo è un valore numerico (nel 2015 potrà essere 2015 3 / 2015 6 / 2015 9 / 2015 12). Io volevo una query che mi permettesse appunto di visualizzare i totali di ogni periodo di ogni anno.

Esempio (data la query precedente):

2015 3: Tot € 10
2015 6: Tot € 32,8
..
2016 3: € 5

ecc.. spero di essermi spiegato.

Grazie tante per l'aiuto.:mavieni:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
prova così
PHP:
<?php
/* dati test tabella fatture
id totbn periodo
1 	7 	2015 03
2 	2 	2015 03
3 	3 	2015 06
4 	7 	2015 09
5 	8 	2015 09
6 	6 	2015 12
7 	5 	2015 12
8 	9 	2015 12
*/
$host = 'localhost';     //nome host
$username = 'root';      //user name
$password = 'password';  //password
$db = 'prove';            // nome data base
//---connessione----------------------------------------------------
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
$sel = @mysql_select_db($db) or die (mysql_error());
$q = mysql_query('SELECT SUM(totbn) AS somma_bn FROM fatture GROUP BY periodo');
while ($r = mysql_fetch_array($q, MYSQLI_ASSOC)){
	echo $r['somma_bn']."<br>";
}
/*output
9
3
15
20
*/
?>
però usa mysqli