Page 1 sur 1

Afficher nombre de secondes en temps

Posté : 15 nov. 2014, 00:53
par Couin
Hello :)

Nouvelle interrogation de mon coté :D

Voilà, sur une page php qui affiche quelques données obtenues par uen requète, je voudrais que l'affichage d'un temps qui est totalisé en nombre de secondes par la requete, se fasse en format temps (00:00:00) .

Voici la requète qui me permet de recueprer les données :
SELECT inter_stamp, id_eqpt, eqpt_name, SUM( inter_stamp ) AS total_time
FROM trs_events
LEFT JOIN trs_eqpts ON trs_eqpts.eqpt_id = trs_events.id_eqpt
GROUP BY id_eqpt
ORDER BY `total_time` DESC
LIMIT 5
 
Dans laquelle "inter_stamp" est le nombre de secondes que dure une intervention , id_eqpt était l'ID de l'équipement sur lequel a lieu l'intervention, eqpt_name est son nom. La table trs_events est la table dans laquelle sont enregiqstrés chaque intervention (évenements), trs_eqpts est la table listant tous les équipements. Une jonction entre les deux t ables permet d'avoir le nom de l'équipement de chaque itnervention en fonction de l'ID de l'équipement.
Je défini total_time comme la somme de toutes les durées d'interventions.

Voici le code complet de ma page PHP :
	<tr> 
	<?php
    //requête SQL:
    $sql = "SELECT inter_stamp, id_eqpt, eqpt_name, SUM( inter_stamp ) AS total_time
FROM trs_events
LEFT JOIN trs_eqpts ON trs_eqpts.eqpt_id = trs_events.id_eqpt
GROUP BY id_eqpt
ORDER BY `total_time` DESC 
LIMITE 5
			";
	
	    //exécution de la requête:
    $requete = mysql_query( $sql ) ;
	
?>
<?php
    //affichage des données:
    while( $result = mysql_fetch_object( $requete ) )
    { ?>
			<td><?php echo($result->eqpt_name);?></td><td><?php echo($result->total_time);?></td>
	<?php 
	} ?>
	</tr>
L'idée étant de faire un top 5 des équipements qui ont nécéssité le plus de temps d'intervention, avec bien sur , le temps total d'intervention pour chaqu'un d'eux.
Actuellement, ca s'affiche en secondes, ce qui n'est pas top. Je oudrias que ca s'affiche en temps , alors voilà ce que j'ai essayé :

J'ai ajouté la ligne suivante :
$total_time = gmdate("H:i:s", $total_time);
avant celle ci :
$requete = mysql_query( $sql ) ;
Mais à ma grande déception, cela ne fonctionne pas .
J'ai testé en mettant
$total_time = gmdate("H:i:s", 60);

pour lui faire afficher volontairement 00:01:00 masi ca ne focntionne pas non plus. J'ai l'impression que c'est tout simplement comme si la ligne n'était même pas prise en compte.

Si quelqu'un a une piste, ca serait cool :)

Merci :wink:
Couin

Re: Afficher nombre de secondes en temps

Posté : 15 nov. 2014, 01:08
par Nestecha
Utilise mysqli, pas mysql.

Sinon en faisant ça ça ne fonctionne pas non plus ?
<tr>
    <?php
    //requête SQL:
    $sql = "SELECT inter_stamp, id_eqpt, eqpt_name, SUM( inter_stamp ) AS total_time
FROM trs_events
LEFT JOIN trs_eqpts ON trs_eqpts.eqpt_id = trs_events.id_eqpt
GROUP BY id_eqpt
ORDER BY `total_time` DESC 
LIMITE 5
                        ";

    //exécution de la requête:
    $requete = mysql_query( $sql ) ;

    ?>
    <?php
    //affichage des données:
    while( $result = mysql_fetch_object( $requete ) )
    { ?>
        <td><?php echo($result->eqpt_name);?></td><td><?php echo gmdate("H:i:s", $result->total_time);?></td>
    <?php
    } ?>
</tr>
A préciser qu'il ne faut pas que $result->total_time soit supérieur à 86400, le nombre de secondes dans une journée. Sinon, il reviendra à zéro (jour suivant) et 90000 n'affichera pas 25:00:00 mais 01:00:00.

Re: Afficher nombre de secondes en temps

Posté : 15 nov. 2014, 01:40
par Couin
Hello,

J'ai testé avec le code
<?php echo gmdate("H:i:s", $result->total_time);?>
Je ne pensais pas qu'on pouvais faire directement la conversion dans la commande echo, mais c'est bon à savoir.

Ca correspond parfaitement à mon besoin, et pour les 25 heures, beoin ce n'est pas important car un équipement ne peut pas etre en panne plus de 24h par jour (sachant que la production ne dure en plus pas 24H, mais commence vers 11H le matin pour finir a 6 le lendemain).

Merci beaucoup et rendez vous à ma prochaine colle, ce qui ne devrait pas tarder :)