Page 1 sur 1

Insérer un temps dans une BDD

Posté : 25 sept. 2007, 20:21
par Deltod
Bonjour à tous.
Je suis en ce moment même en train de réaliser un petit script PHP pour mon équipe sur Trackmania Nations, et j'aimerai que ma BDD contienne les records personnel des joueurs, sous la forme mm:ss:cc (mm=minute, ss=seconde, cc=centieme). L'idée final étant de faire la moyenne des records de chaque joueurs, pour obtenir un temps.
Exemple :

Joueur 1 map 1 : 00:58:10
Joueur 1 map 2 : 01:02:00
Moyenne temps joueur 1 : 1:00:00.

Je me doute que cela ne doit pas être très compliqué, mais je bloque...J'en appelle donc à votre aide !
Merci d'avance :). Bonne journée.

Posté : 25 sept. 2007, 21:17
par netsupra
Salut,
idée bete : stocker les resultat dans la plus petite unité necessaire
par exemple si tu va jusqu'a la seconde :
1:58 = 118
apres pour faire la moyenne c simple : tu recuperes tous les temps et tu divises par le nombre de résultats : tu auras le temps moyen en secondes ;)
Netsupra

Posté : 25 sept. 2007, 22:03
par Deltod
Oui c'est une bonne idée merci, j'y avais songé moi aussi en suite :).
Merci en tout cas.

EDIT : En fait j'ai un legers problèmes, je n'arrive pas à reconvertir les centièmes en minutes/secondes/centièmes...

Posté : 26 sept. 2007, 10:32
par Ryle
Une minute ça fait 60 secondes, une seconde ça fait 100 centièmes.. suffit donc de multiplier tes secondes par 100, tes minutes par 60*100, d'additionner le tout et hop, t'as une valeur en centièmes.

Pour revenir aux valeurs d'origine on fait l'inverse : tu as une valeur en centième que tu divises par 60*100 pour obtenir les minutes (en arrondissant à l'inférieure). Ce qui reste de la division (que tu peut obtenir à l'aide de l'opérateur modulo "%"), tu le divises par 60 pour obtenir les secondes (en arrondissant une fois encore à l'inférieur), et ce qui reste de cette nouvelle division ce sont tes centièmes :)
$minutes = floor( $valeur / (60 * 100) ); // nb de minutes contenues dans ta valeur
$reste1 = $valeur % (60 * 100); // nb de centièmes restants

$secondes = floor ( $reste1 / 60 ); // nb de secondes contenues dans les centièmes restants
$centiemes = $reste1 % 60; // nouveau nb de centièmes restants

Posté : 26 sept. 2007, 13:29
par Deltod
Clair, net, précis. Merci beaucoup :).

Posté : 26 sept. 2007, 13:57
par Ryle
Modération :
Si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet. ;)

Posté : 26 sept. 2007, 14:32
par Deltod
Cela fonctionne très bien, mise à part lorsque le temps est inférieur à une minute. Par exemple mon temps est 37sec39centièmes et ça m'affiche 00:62:19...Je suis en train de chercher ce qui pourrait clocher.

EDIT : J'ai compris l'erreur, elle se trouvait ici :

$secondes = floor ( $reste1 / 100 ); // nb de secondes contenues dans les centièmes restants

Car il y a 100 centième dans une seconde, non pas 60 ;). Merci de l'aide. Je pense que mon problème est maintenant résolu. Merci encore :wink: .

Posté : 26 sept. 2007, 15:10
par Ryle
Oops, au temps pour moi :)

J'ai plus l'habitude de m'arrêter aux secondes que de descendre jusqu'aux centièmes :)