Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Attributo valorizzato solo su MySql, non su PHP

    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

  2. #2

  3. #3
    Continua a sembrarmi che converta una data in secondi.

    Ore.ore è un attributo data e me lo restituisce in secondi, su cui poi faccio tutti i normali calcoli che voglio fare (DOPO la conversione).

    Prendo l'ora (che è in formato hh:mm:ss), la trasformo in secondi, la divido per 3600 (e ottengo l'orario in formato decimale) e poi la moltiplico per il costoOrario.

    Ed infatti su MySql mi fa tutto correttamente.

    Se però eseguo la stessa query su una pagina PHP il campo risultato 'TotOre' non mi contiene nessun valore.

    Non capisco a che errore tu ti riferisca

  4. #4
    scusa, ma se provi a stampare la QUERY che esegui in PHP e la esegui in un terminale MySQL, ottieni il valore corretto?

  5. #5

  6. #6
    prova un print_r($res_SUMore); per vedere che contiene, magari sbagli la chiave dell'array

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.