Joomla.it Forum

Componenti per Joomla! => Gestione Form => : kamer67 17 Nov 2013, 10:50:40

: [RISOLTO]chronoforms sommare i record di una tabella
: kamer67 17 Nov 2013, 10:50:40
Ciao a tutti sono nuovo del forum, mi sono avvicinato da poco a chronoforms sto sviluppando una mia idea e non riesco a ricavare la somma dai record di una tabella.
Questo quello che faccio:

Nel form inserisco come actions un custom code composto così:

<?php
$db =& JFactory::getDBO();
$query = "
    SELECT SUM(importo) FROM `tabella`
      ";
$db->setQuery($query);
$data = $db->loadObjectList();

foreach($data as $a) {
echo $data;
 }
?>

Non mi da nessun errore ma Il risultato che compare è Array al posto della somma.

Potete aiutarmi?

Grazie
Mario
: Re:chronoforms sommare i record di una tabella
: tomtomeight 17 Nov 2013, 11:31:18
Ciao e benvenuto nel forum
Nella tua query non si capisce cosa vuoi sommare se dei valori di campi o il numero delle ricorrenze dei campi.
: Re:chronoforms sommare i record di una tabella
: kamer67 17 Nov 2013, 12:02:56
Grazie per la risposta, vorrei sommare il campo importo per avere un totale generale.

Mario

: Re:chronoforms sommare i record di una tabella
: tomtomeight 17 Nov 2013, 12:43:12
prova con questa query:
:

$q = mysql_query('SELECT SUM(importo) AS somma FROM tabella');

$r = mysql_fetch_assoc($q);
echo $r['somma'];
: Re:chronoforms sommare i record di una tabella
: mmleoni 17 Nov 2013, 13:32:18
:
<?php
$db 
JFactory::getDBO();
$query "SELECT SUM(importo) FROM `tabella`";
$db->setQuery($query);
$sum$db->loadResult();
echo 
$sum
?>


ciao kamer67.

bene l'uso delle funzioni del framework di joomla, ma due cose:

:
$db = JFactory::getDBO();l'uso di & è deprecato, dato che gli oggetti sono sempre restituiti come puntatori.

:
$sum= $db->loadResult();se devi leggere uno scalare usi loadResult(), se devi leggere un vettore loadObjectList; in questo ultimo caso devi sempre usare un alias per le funzioni di aggregazione altrimenti non puoi recuperarne il valore.

:
SUM(importo) AS somma
ciao,
marco


: Re:chronoforms sommare i record di una tabella
: mmleoni 17 Nov 2013, 13:36:31
dimenticavo:

:
foreach($data as $a) {
  echo $data;
}

meglio così:  ;D
:
foreach($data as $a) {
  echo $a;
}

ciao.
: Re:chronoforms sommare i record di una tabella
: kamer67 17 Nov 2013, 13:44:34
OK grazie per il prezioso aiuto.

Con i vostri consigli e qualche ricerca sono arrivato a questa conclusione che funziona:

<?php

mysql_connect("localhost", "admin", "password") or die(mysql_error());

mysql_select_db("database") or die(mysql_error());


$query = "
SELECT SUM(importo) FROM tabella
      ";
$db = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($db)){
    echo "Totale ". "  € ". $row['SUM(importo)'];
    echo "
";
}
?>

Ora devo legare la somma ai soli campi appartenenti all'utente loggato.

Penso di  intervenire sulla query.
Ovvero ottengo l'ID dell'utente loggato e lo passo come parametro alla query.
Giusto?

Mario


: Re:chronoforms sommare i record di una tabella
: mmleoni 17 Nov 2013, 13:58:38
se cambi provider sei fregato: non funziona più niente e bisogna capire il perché, quindi non usare mai credenziali hard coded e stai sulle funzioni del framework di joomla.

ps: l'uso delle funzioni mysql_* è deprecato.

ciao