Eseguendo una query direttamente su MySql mi ritorna tranquillamente il risultato (un campo numerico, una somma).
Se invece provo ad usare quel valore da PHP mi ritorna valore NULL.
Questo per modificare il metodo con cui viene fatta una somma di ore (la prima query), mentre io vorrei evitare errori di approssimazione ed usare le funzioni interne di MySql (seconda query).
Il codice è questo:
codice:
$query_ore="SELECT `ore`.`Ore`
FROM `ore`
WHERE `ore`.`IDprogetto`='$arr_prog_con_ore[$k]'
AND `ore`.`IDattivita`='$row_att[2]'
AND `ore`.`IDutente`='$arr_ute_con_ore[$r]'
AND `ore`.`Data`
BETWEEN '$init' AND '$end'";
$query_SUMore="SELECT (SUM(TIME_TO_SEC(`ore`.`Ore`))/3600) as TotOre
FROM `ore`
WHERE `ore`.`IDprogetto`='$arr_prog_con_ore[$k]'
AND `ore`.`IDattivita`='$row_att[2]'
AND `ore`.`IDutente`='$arr_ute_con_ore[$r]'
AND `ore`.`Data`
BETWEEN '$init' AND '$end'";
$res_ore = mysql_query($query_ore, $conn);
$num_ore = mysql_num_rows($res_ore);
$res_SUMore = mysql_query($query_SUMore, $conn);
//$num_SUMore = mysql_num_rows($res_SUMore);
$row_SUMore = mysql_fetch_array($res_SUMore);
echo "
TOTALE ORE : $query_SUMore";
if($num_ore<=0){
$arrOre[$r]="";
$arrCosto[$r]="";
}else{
/*
//calcola le ore totali per utente per ogni attivita'
$ore=0;
$min=0;
for($w=0; $w<=$num_ore; $w++){
$row_ore=mysql_fetch_row($res_ore);
$time=$row_ore[0];
$arrt=explode(":", $time);
$ore=$ore+$arrt[0];
$min=$min+$arrt[1];
}
$m=($min/60);
$t= $ore + $m ; // Ore totali, senza il resto dei minuti (minore di un'ora)
$ttt=round($t,2);
//calcola il costo totale per utente per ogni attivita'
$costot= $t*$arrc[$r];
*/
// prova di calcolo delle ore direttamente in SQL, evitando gli eventuali scarti di calcolo
echo "
" . (is_null($res_SUMore['TotOre'])?"NULL":$res_SUMore['TotOre']) . " * " . $arrc[$r];
$costot= $res_SUMore['TotOre']*$arrc[$r];
$ccc=round($costot,2);
//$arrOre[$r]=$ttt;
$arrOre[$r] = buildOra($ore, $min);
$arrCosto[$r]= str_replace(",",".",$ccc);
}
Sapete dirmi perchè $res_SUMore['TotOre'] mi ritorna sempre NULL se lo eseguo da PHP?
Io non ci cavo le gambe