Aller au contenu

Sujets conseillés

Posté

Bonjour a tous,

Je suis le successeur de LiL'Skiso qui avait demandé de l'aide ici (http://www.webmaster-hub.com/index.php?showtopic=21686&st=0&gopid=228965entry228965), moi aussi débutant je viens demander un petit coup de main également concernant une requete PHP qu'il avait demandé :

$query13 = "SELECT SUM(TIME_TO_SEC(Timing)) as temps_secondes FROM rapport WHERE Valid = '2'";

$result13 = mysql_query($query13) or die("Erreur. La page est peut être en construction.");

$data13 = mysql_fetch_array($result13);

<? echo mysql_result(mysql_query('SELECT SEC_TO_TIME('.$data13[0].')'),0);?>

Cette requete fonctionne parfaitement jusqu'a se bloquer a 838:59:59 et je n'arrive pas trouver d'ou vien le problème, si vous pouviez éclaircir ma lanterne SVP :rolleyes:

Posté

Bonjour,

"838:59:59" est une valeur que tu souhaite convertir (TIME_TO_SEC) et qui ne donne pas la valeur désirée ou une valeur que tu obtiens (SEC_TO_TIME) mais qui n'est pas ce que tu espérais ?

Sois plus clair dans la formulation de ta question, donne-nous par exemple l'erreur qui se produit. Si elle provient du serveur MySQL, tu peux la récupérer ainsi en plaçant cette ligne juste après la requête postant problème :

echo 'Erreur '.mysql_errno().' : '.mysql_error();

Posté

en faite la requète fonctionne bien j'ai une table avec une colonne timing contenant des heures de vols sous la forme hh:mm:ss. pour faire un compteur il m'a été conseillé de tout transformer en seconde puis de retranscrire en hh:mm:ss lorsque j'appel le resultat avec "echo" le compteur s'incrément bien, les heures de vols sont bien ajoutés mais le comptage se fige à 838:59:59 je peut rajouter autant d'heure de vols que je veux le compteur reste bloqué à 838:59:59 et ne bouge plus...

réponse de "echo 'Erreur '.mysql_errno().' : '.mysql_error();" ---> Erreur 0 :

J'espère avoir été clair pour un débutant c'est difficile de s'exprimer correctement :blush:

Posté

D'accord, en fait tu as atteints la limite du type TIME. Pour citer le manuel de MySQL :

MySQL lit et affiche les colonnes de type TIME au format 'HH:MM:SS' (ou 'HHH:MM:SS' pour les grandes quantités d'heures). Les valeurs de TIME vont de '-838:59:59' à '838:59:59'. La raison de cet intervalle de validité si large est que les colonnes de type TIME peuvent être utilisés pour représenter non seulement des heures du jour, mais aussi des durées entre deux événements (ce qui peut dépasser largement les 24 heures, ou même, être négatif).

Donc si tu dois traiter des données plus grandes que cela tu devra recourir à un autre type de données, malheureusement je ne connais pas de type qui gère nativement (côté MySQL) de données temps de cette taille.

Comme tu souhaite mesurer une intervalle de temps tu peux éventuellement stocker l'intervalle en secondes (tu as de la marge avec le type LONGINT) et ensuite gérer l'affichage en heures, minutes et secondes dans ton langage de programmation de prédilection (PHP).

P.S. : Comme je l'avais déjà expliqué ici à LiL'Skiso à la fin de ce message.

Posté

merci TheRec j'ai pris l'option de prendre le total en secondes le diviser par 3600 pour afficher les heures et diviser le reste par 60 pour avoir les minutes avec des echo bien placer j'obtiens le résultat attendu merci beaucoup il aurait été dommage pour une compagnie aérienne de ne pas pourvoir dépassé 850 heures de vol !

Merci beaucoup et a bientot !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...