Page 1 sur 1
Calcul d'une durée (faire la différence entre deux heures)
Posté : 05 juil. 2006, 13:22
par Lama
Bonjour,
Je dois calculer la différence entre deux heures au format TIME et je n'arrive pas à obtenir les minutes:
Avec le code si dessus j'obtiens par exemple 17:00:00-13:30:00= 3 et moi j'aimerais obtenir 03:30:00 ou alors 3,5
Merci de votre aide
Posté : 05 juil. 2006, 13:39
par albat
Posté : 05 juil. 2006, 13:43
par Lama
Oui mais moi je cherche pas à calculer l'écart entre deux dates, mais entre deux heures!
Posté : 05 juil. 2006, 13:50
par ouckileou
Oui mais moi je cherche pas à calculer l'écart entre deux dates, mais entre deux heures!
Si t'avais cherché un peu dans le manuel t'aurais vu que en plus de DATEDIFF (pour les dates) il y a TIMEDIFF (pour les times)
génial non ?
Allez je vais le rajouter puisque c'est manifestement trop dur de pousser plus loin la recherche à partir de la FAQ

Posté : 27 mars 2008, 16:33
par topher72
bonjour j'ai lu le tuto et j'ai utilisé le TIMEDIFF:
et le probleme c que je ne c pas trop comment faire pour que dans un tableau il m'affiche cette durée
Posté : 27 mars 2008, 16:38
par Ryle
Ce que tu as appellé $durer est une requête sql.
Il te faut donc l'exécuter (avec mysql_query() par exemple)
puis parcourir les résultats obtenus a l'aide d'une boucle (avec mysql_fetch_row() ou mysql_fetch_assoc() en donnant un alias à ton champ)
et enfin afficher les valeurs obtenues

Posté : 27 mars 2008, 16:57
par topher72
j'ai deja une requetesql enfaite ma durée est afficher dans un tableau avec pleins d'autre chose que je prend de la base de donnée.
Code : Tout sélectionner
mysql_connect('localhost','root','')or die('Error connect');
mysql_select_db('planning');
$requeteSQL="SELECT * FROM taches ";
$resultat=mysql_query($requeteSQL);
if($resultat){
echo '<table id="table">'."\r\n";
echo "\t".'<thead><tr>'."\r\n";
echo "\t"."\t".'<th>date</th>'."\r\n";
echo "\t"."\t".'<th>heure de début</th>'."\r\n";
echo "\t"."\t".'<th>intervention à faire</th>'."\r\n";
echo "\t"."\t".'<th>demandeur</th>'."\r\n";
echo "\t"."\t".'<th>intervention effectuer</th>'."\r\n";
echo "\t"."\t".'<th>heures de fin</th>'."\r\n";
echo "\t"."\t".'<th>durée</th>'."\r\n";
echo "\t"."\t".'<th colspan="2">Actions</th>'."\r\n";
echo "\t".'</tr></thead>'."\r\n";
while($data=mysql_fetch_array($resultat)){
echo "\t".'<tr>'."\r\n";
echo "\t"."\t".'<td>'.$data['date'].'</td>'."\r\n";
echo "\t"."\t".'<td>'.$data['heured'].'</td>'."\r\n";
echo "\t"."\t".'<td style="width=200PX;">'.$data['intervaf'].'</td>'."\r\n";
echo "\t"."\t".'<td>'.$data['demandeur'].'</td>'."\r\n";
echo "\t"."\t".'<td style="width=200PX;">'.$data['intervef'].'</td>'."\r\n";
echo "\t"."\t".'<td>'.$data['heuref'].'</td>'."\r\n";
echo "\t"."\t".'<td>'.$data['durer'].'</td>'."\r\n";
echo "\t"."\t".'<td style="border:0;">> <a href="ajout.php?id='.$data['id'].'">Modifier</a></td>'."\r\n";
echo "\t"."\t".'<td style="border:1px solid #000;border-top:0;border-bottom:0;">> <a href="javascript:confirmDelete('.$data['id'].');">Supprimer</a></td>'."\r\n";
echo "\t".'</tr>'."\r\n";
}
echo '</table>'."\r\n";
}else{
echo 'Erreur';
}
je débute et pour c'est pour un stage et je c pa trop comment faire pour le TIMEDIFF
dsl de poser des question comme sa mes se serait genti de me donnée quelques bon conseils.

Posté : 27 mars 2008, 17:04
par Ryle
Si tu veux calculer la différence en SQL, il te faut remplacer le SELECT * de ta requête par un SELECT suivi de la liste des champs dont tu as besoin (c'est de toute manière une bonne habitude à avoir pour la maintenance, même s'il y a 50 champs à lister et que c'est lourd à écrire, on ne le fait qu'une fois

)
ta requête va donc ressembler à :
il te suffit alors d’ajouter en plus ton calcul dans celle-ci :
Code : Tout sélectionner
SELECT date, heured, intervaf, demandeur ...., TIMEDIFF(heured, heuref) AS delta FROM taches(ou "delta" est un alias pour la colonne calculée)
Il ne te reste plus alors qu’à récupérer et afficher la valeur de $data['delta'].
Ceci étant, tu peux tout aussi bien récupérer tes deux valeurs et calculer ensuite la différence en php

Posté : 27 mars 2008, 17:22
par topher72
Posté : 27 mars 2008, 17:28
par topher72
ah si une derniere question, est t'il possible de faire un total de toute c'est durée????
Posté : 27 mars 2008, 17:45
par Ryle
En SQL, il te faudrait une seconde requête qui ferait une somme :
Mais le plus simple est sans doute d'additionner chacune de tes $data['delta'] dans une autre variable php, ce qui à la fin de ta boucle te donnera le total également :
$total = 0;
while (...) {
...
$total = $total + $data['delta']; // ou $total+= $data['delta'];
}
echo $total;
Posté : 27 mars 2008, 17:53
par topher72
mais comment enregistrer le delta dans un champ de ma table qui s'appelle durer car sa ne m'enregistre rien?
merci d'avance!!!
Posté : 27 mars 2008, 18:42
par Ryle
Beuuh... l'intérêt d'enregistrer un calcul est très très limité, surtout quand il est aussi simple... ça t'oblige à le refaire à chaque fois qu'un des paramètres est modifié..
Maintenant, tu peux très bien faire un update de ta table à chaque fois pour stocker le calcul dans un champ spécifique :