PHP: Date en Decimal

SPykees
Invité n'ayant pas de compte PHPfrance

22 févr. 2013, 14:24

Premièrement bonjour et merci d'avance à ceux qui m'aideront. J'ai fouillé sur le web et j'ai trouvé des tonne de réponse, mais impossible de les comprendre. Je débute en php et malheureusement les réponse sont souvent donnée à des personnes plus expertes que mois :)

Voici ma question:

J’intègre dans une BDD des heures au format 00:00:00 celles-ci sont cumulée à mesur que la personne effectue des heures. Jusque la aucun souci. J'aimerais intégrer une "Paye" et pour cela j'ai besoin de calculé ces heure en décimal pour les multiplier par le prix de l'heure. exemple 1:35:00 = 1,35 que je multiplie par le prix de l'heure ensuite.

Je ne comprends pas comment obtenir ces décimal. Je précise que le format heure pourra facilement dépasser les 24h et afficher 356:30:00 par exemple 356,5 Heure

Voici le code que j'ai fait jusqu'ici :
if($query = "SELECT NbrPassengers, SUM(NbrPassengers)as Tpass, CargoWeight, SUM(CargoWeight) as Tcargo, totalfuel, SUM(totalfuel)as Tfuel, TotalBlockTime, SEC_TO_TIME(SUM(TotalBlockTime))as Theure, TotalBlockTimeNight, SEC_TO_TIME(SUM(TotalBlockTimeNight))as Tnheure, TotalAirbornTime, SEC_TO_TIME(SUM(TotalAirbornTime))as Tvol, TotalTimeOnGround, SEC_TO_TIME(SUM(TotalTimeOnGround)) as Tsol, TotalDistance, SUM(TotalDistance)as Tdist, BonusPoints, SUM(BonusPoints)as Tpoint, PenalityPoints, SUM(PenalityPoints)as Tpen  FROM flights WHERE PilotName='$plid'")
    $result=@mysql_query($query);if(!$result){echo "SQL Error - ".mysql_error();return;}
	$fetch = mysql_fetch_assoc($result);


echo 'Total passagers :'.$fetch['Tpass'].'<br>';
echo 'Total cargo :'.$fetch['Tcargo'].'<br>';
echo 'Total carburant:'.$fetch['Tfuel'].'<br>';
echo 'Total des heures de jours :'.$fetch['Theure'].'<br>';
echo 'Total des heures de nuits :'.$fetch['Tnheure'].'<br>';
echo 'Temps en vol :'.$fetch['Tvol'].'<br>';
echo 'Temps au sol :'.$fetch['Tsol'].'<br>';
echo 'Distance parcourue :'.$fetch['Tdist'].'<br>';
echo 'Total Pen. :'.$fetch['Tpen'].'<br>';
echo 'Total des points :'.$fetch['Tpoint'].'<br>';

//calcul des grades
if($fetch['Tvol'] < '50:00:00'){
	$paye = 20;
	$grade = 'Pilote';}
if($fetch['Tvol'] >= '100:00:00'){
	$paye = 100;
	$grade = 'Capitaine';}
if($fetch['Tvol'] >= '300:00:00'){
	$paye = 300;
	$grade = 'Commandant';}
if($fetch['Tvol'] >= '1000:00:00'){
	$paye = 500;
	$grade = 'Premier Officier';}

//convertion heure en decimal ?? pour l'intégrer dans $salaire ($salaire= $paye* ?? )

echo 'Vous etes au garde de : '.$grade.'<br>';
echo 'Votre portefeuille : '.$salaire.'Frs';

Un grand merci d'avance

SPykees
Invité n'ayant pas de compte PHPfrance

22 févr. 2013, 14:27

Ho j'ai oublié de précisé que la variable à mutiplié est celle venant de
 SEC_TO_TIME(SUM(TotalAirbornTime))as Tvol
Merci encore

Mammouth du PHP | 571 Messages

22 févr. 2013, 18:50

bonjour,
as-tu pensé à la fonction php explode?
$h="1:35:00";
$tab=explode(':',$h);

$val=(float)$tab[0].'.'.$tab[1]; //affiche le nombre 1.35
//pour multiplier par le taux horaire ($th)

$salaire=$val*$th;

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2013, 23:09

1h35 ça fait pas 1.35h :)

le plus simple c'est de stocker des minutes ensuite tu divise par 60 pour le nombre d'heure :)



@+
Il en faut peu pour être heureux ......