Joomla.it Forum
Componenti per Joomla! => Gestione Form => : sacusimano 30 Jun 2014, 20:29:15
-
Salve a tutti, come da oggetto avrei necessità di effettuare la somma di una colonna di una specifica tabella. Ho provato diverse strade, ma senza ahimè pervenire a nessun risultato..
Allora diciamo che ho fatto la prova con chronoconnectivity e non ci sono riuscito, vi spiego brevemente cosa ho fatto brevemente:
1) ho realizzato la query, e l'ho testata tramite myphpadmin e la stessa funziona
SELECT sum( bonifico) FROM '#__avjos16_pagamenti' GROUP BY n_capitolo
2) ho provato ad inserire la stessa in general nel campo where sql di chronoconnectivity, ed il risultato è stato un errore di sintassi mysql.
3) ho provato allora di lanciarla come stringa php
<?php
$db =& JFactory::getDBO();
$query = "SELECT sum( bonifico) FROM '#__avjos16_pagamenti' GROUP BY n_capitolo";
$db->setQuery($query);
$nomes = $db->loadResult();
?>
<div>
<p>Situazione<?php echo $nomes?></p>
4) Non riuscendoci ho provato ad utilizzare la stringa in frontendlist setting, custom setting, ma ancora una volta nessun risultato.
Allora mi chiedo se qualcuno di voi ha avuto il mio stesso problema di somma di record di una colonna, premetto che uso chronoconnectivity v.4 e joomla 2.5.19. Vi ringrazio anticipatamente, se ce da cambiare strada sono propenso anche farlo..
Grazie, Salvo.
-
non so dirti di chronoetc, ma
SELECT sum( bonifico) FROM '#__avjos16_pagamenti' GROUP BY n_capitolo
se usi group by, aspettati un recordset, non uno scalare, quindi non puoi usare loadResult().
poi: che senso ha il raggruppamento se non sai a che si riferisce il totale?
per me:
SELECT sum( bonifico) as totalebonifici, n_capitolo FROM '#__avjos16_pagamenti' GROUP BY n_capitolo
conviene poi usare l'asias di colonna per poter recuperare agevolmente il valore della somma.
ciao,
marco
-
Ciao Marco,
sto facendo varie prove ma non ci riesco.. :-[ :-[ utilizzando anche il loadObjectList[/size][/color]([/font][/size][/color])[/font][/size][/color];[/font]
Allora a me occorre che mi venga dato il dato sempre diviso per numero capitolo, in poche parole inserisco un pagamento nel capitolo, creo svariate righe con pagamenti, poi le sommo singolarmente e le visualizzo singolarmente... Nuove idee?? Grazie anticipatamente.
Salvo.
-
no, solo quelle di prima. hai verificato il risultato della query? qual è la struttura del db?
Allora a me occorre che mi venga dato il dato sempre diviso per numero capitolo, in poche parole inserisco un pagamento nel capitolo, creo svariate righe con pagamenti, poi le sommo singolarmente e le visualizzo singolarmente...
secondo te si capisce ciò che vuoi?
-
Mi esprimo come un libro chiuso, provo a fare un esempio pratico e visivo, cosi da non cadere in altri errori.
la tabella del db contiene i soliti campi di chronoform più altri due campi che per comodità chiamerò n_capitolo e bonifico
la righe della tabella, quindi saranno composte in questo modo
n_ capitolo bonifico cf_id recordtime
1515 1000
1516 1250
1515 900
1516 1300
1515 200
1516 300
il risultato finale che vorrei è del tipo
n_capitolo bonifico
[size=78%]1515 2100[/size]
[/size][size=78%]1516 2850[/size]
[/size]
[/size]Spero di essere stato più chiaro, diversamente cercherò di allegare le foto. Scusate ancora.[size=78%]
-
il risultato che vuoi è esattamente quello fornito dalla query che io ti ho indicato!
ps: io mi ero limitato a copiare il tuo codice: hai usato l'apostrofo invece del backtick.
non avevo detto niente perché pensavo che la cosa fosse solo dovuta ad un errore di battitura nel forum, ma ora mi viene il dubbio che tu abbia inserito l'errore nel codice.
ciao,
marco
-
Marco, purtroppo è la mia ignoranza che mi ha indotto nell'errore, perché cercando un po di codice nei vari siti e/o forum, si corre il rischio di imbattersi in questo genere errore. Ti ringrazio per la disponibilità e le informazioni che mi dai ogni volta perché ne approfitto per studiare e colmare le mie lacune. Purtroppo non sono ne un'informatico e ne tanto mento un webmaster, mi limito solo per la curiosità ad imbattermi in tali avventure. Buona giornata.
Salvo
-
Buongiorno Marco,
finalmente sono riuscito a far funzionare la query, restano i problemi di impaginazione in tabella, ma penso che con un po di pazienza riuscirò anche in quello. Posto per tutti il codice che naturalmente ho utilizzato io, nella speranza che possa essere di aiuto a qualcun altro.
<?php
$database = &JFactory::getDBO();
$database->setQuery('SELECT SUM(bonifico) as totalebonifici, n_capitolo FROM `avjos16_pagamenti` GROUP BY n_capitolo');
$results = $database->loadObjectList();
foreach($results as $r) {
echo $r-> n_capitolo,' | ',$r-> totalebonifici,'
';
}
?>
Faccio presente che l'ho testato sia con chronoform V.,4 che chronoconnectivityV.4, in entrambi i casi rappresento che il codice non restituisce il risultato corretto nel body.
Ringrazio ancora Marco e lo staff.
Saluti,
Salvo. ;)
-
meglio
$database = JFactory::getDBO();
da php5.3 in poi niente &
rappresento che il codice non restituisce il risultato corretto nel body.
non ho capito...
ciao
-
Grazie per la dritta, intendo che se inserisco il codice nel body mi fa la stampa di tutte le righe con il totale della somma della query che ho ho lanciato.
-
continuo a non capire... :o
ti spiace provare questo codice e dirmi se non è quello che avevi messo come output desiderato nel tuo precedente post?
<?php
$db = JFactory::getDBO();
$db->setQuery('SELECT SUM(bonifico) as totalebonifici, n_capitolo FROM `#__pagamenti` GROUP BY n_capitolo');
$results = $db->loadObjectList();
echo "<table><tr><td>Capito</td><td>Totale</td></tr>";
foreach($results as $r) {
echo "<tr><td>{$r->n_capitolo}</td><td>{$r->totalebonifici}</td></tr>";
}
echo "</table>";
?>
ps: scritto senza testarlo, quindi occhio a eventuali errorini.
===
edited: infatti, corretto errorino :D
-
Riscritto in questo modo va alla grande!!!
Grazie mille ancora.
<?php
$database = JFactory::getDBO();
$database->setQuery('SELECT SUM(bonifico) as totalebonifici, n_capitolo FROM `avjos16_pagamenti` GROUP BY n_capitolo');
$results = $database->loadObjectList();
echo "<table><tr><td>Capito</td><td>Totale</td></tr>";
foreach($results as $r) {
echo "<tr><td>{$r->n_capitolo}</td><td>{$r->totalebonifici}</td></tr>";
}
echo "</table>";
?>
-
#__pagamenti non è un errore, è il modo corretto di scrivere il nome delle tabelle in modo che il codice sia indipendente dal cambio del prefisso del db.
ciao