IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Multiplication d'une heure récupérée dans la bdd


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 71
    Points
    71
    Par défaut Multiplication d'une heure récupérée dans la bdd
    Bonjour,

    Voici mon pb:

    Je récupère une variable "duree" de ma bdd qui est de type decimal(3,2).
    Je veux pouvoir multiplier cette valeur par un coeff nb.

    Ex:
    2,4*4=>10,4 Je veux récupérer 10h40 et non 9,6.

    Savez-vous comment faire?
    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut,
    je ne crois pas qu'il existe de fonction magique pour faire cela.
    Le plus simple est de faire comme quand tu le fais de tête :
    tu passe en minutes, tu fais ton opération, et tu repasses en heures.
    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 71
    Points
    71
    Par défaut
    Ce qui m'embête, c'est que c'est des heures avant la virgule et des minutes après et défois ce ne sont que des heures donc pas de virgule. J'ai bien pensé à me servir de explode() mais je ne sais pas si c'est la meilleur solution?
    Merci de votre aide.

  4. #4
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Tu stockes quoi dans ta base de données ?
    Dans ton exemple, le 2,4 il veut dire quoi ?
    2h40m
    ou
    2,4 heures, soit 2h24m ???

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 71
    Points
    71
    Par défaut
    je stocke 2,4 qui veux dire 2h40min et en fait mon pb que je croyais avoir résolu avec explode ne marche pas.
    Est ce que tu aurai une démarche que tu penserai bonne?
    Merci de ton aide.

  6. #6
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 267
    Points : 367
    Points
    367
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data=explode(",",$champheur);
    $heure=$data[0]; //soit 2heure
    $minute=$data[1]; //soit 4 minutes..
    cela ne marche pas? pour le 4, dis moi ce que cela affiche si tu a par exxemple 2h04minutes ?
    Loi de l’Inertie de la Programmation de Dijkstra
    Si vous ne savez pas ce que votre programme est censé faire, vous feriez bien de ne pas commencer à l’écrire.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 71
    Points
    71
    Par défaut
    le 4 de 2,4 ne doit pas faire 2h04 mais 2h40

  8. #8
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 267
    Points : 367
    Points
    367
    Par défaut
    oui mais qu'est ce qui est affiché si cela vaut 2h04m ?

    2,04 ?
    Loi de l’Inertie de la Programmation de Dijkstra
    Si vous ne savez pas ce que votre programme est censé faire, vous feriez bien de ne pas commencer à l’écrire.

  9. #9
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut, alors si je résume.
    Tu récupère un truc en base de données qui est 2,4 (on va dire que pour PHP, c'est un nombre, et qu'il est stocké dans $my_time).

    Tu dois d'abord ajouter un degré de précision (avec number_format).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $my_time = number_format($my_time, 2);
    Ensuite, tu dois séparer les décimales (les minutes) du nombre (les heures) avec floor par exemple. Entres parenthèses, c'est pas très malin d'avoir mélanger les deux ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $hours = floor($my_time);
    $minutes = $my_time - $hours;
    Puis tu passes tout en minutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $minutes_total = $hours * 60 + $minutes;
    Ensuite tu fais tamultiplication :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $minutes_mult = $minutes_tot * $coeff;
    Puis tu repasses le tout en heures,minutes.
    a+

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    cyberdevelopment
    si tu veux fraction d'heure stocke 4 et *60 tu auras des minutes,
    si tu veux 4 minutes stocke 4 et c'est le formatage sur deux digits (par une fonction maison en php ou par ta base (voir ta doc du sgbd) qui t'affiche 04).
    Je trouve un peu curieux (car pas très rigoureux et source de confusion) de faire 2,4 heure pour 2h 40 min car il faudra 2,04 pour 2 heure et 4 minutes....
    Dans ce cas tu es obligé d'écrire en plus de l'explode l'ajout d'un zero si un digit >0 après la virgule......Les voies du code sont impénétrable§

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 71
    Points
    71
    Par défaut
    Merci pour toutes vos réponse,cela m'a bien aidé!!
    @ +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/07/2008, 14h44
  2. arrondir une valeur récupérée dans une textbox
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/06/2008, 18h11
  3. [MySQL] afficher une image située dans la bdd
    Par Sh4dow49 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/05/2008, 10h44
  4. Réponses: 5
    Dernier message: 31/08/2007, 22h49
  5. Réponses: 4
    Dernier message: 12/06/2006, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo