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

Outils MySQL Discussion :

Addition d'horaire


Sujet :

Outils MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Addition d'horaire
    Bonjour,

    Je cherche actuellement à additionner 2 valeur TIME.
    L'une est récupérée dans un formulaire.
    L'autre se trouve dans ma table "pilotes".

    Voici le script que j'essayes de faire fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //récupération de la valeur temps deja effectuée
    $heures = "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
    $result = mysql_query($heures);
    while ($timepilot = mysql_fetch_array($result, MYSQL_NUM));
     
    {
    echo $timepilot['heures'];
    }
     
    //calcul
    $sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot ."))))";
    $res = mysql_query($sql);
    echo "$sql";
     
    // ajout du nombre d'heures dans la base pilotes
    $secondes = "(TIME_TO_SEC($duree))"; // valeur du formulaire transformee en secondes
    $rq =     "UPDATE pilotes ".
            "SET heures='($res)' ".
            "WHERE callsign='". $callsign ."'";
     
    $result = mysql_query($rq)
        or die ("Execution de la requete du calcul impossible");
    Alors j'ai deux questions:
    - Est-ce que vous auriez fait de meme pour additionner ces deux valeurs (en sachant que ADDTIME ne peut etre utilisé à cause de ma version antérieure de mysql)
    - Si vous considérez ce script comme valable, voyez-vous des erreurs.

    ça fait pas mal de jours que je suis dessus et là je bloque vraiment.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    la requête que tu envoyes après le commentaire "calcul" n'est pas du tout valide, je pense que tu dois au moins ajouter "SELECT " au début pour qu'il te retourne la valeur

    sinon si tu as besoin de fonction pour le traitement des heures regarde sur la page suivante :
    http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    l'ajout de SELECT ne change rien ni meme de SELECT... FROM

    je suis bloqué depuis des jours

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: Addition d'horaire
    Citation Envoyé par jemflight
    je suis bloqué depuis des jours
    Ok, ça m'a l'air sérieux comme problème alors. (t'es pas un de ces rigolos qui veulent qu'on fasse leur devoir à leur place)

    Citation Envoyé par jemflight
    - Si vous considérez ce script comme valable, voyez-vous des erreurs.
    Le problème, c'est que je ne vois même pas ce qu'il est censé faire... Sinon, oui, je vois des erreurs...

    Citation Envoyé par jemflight
    (en sachant que ADDTIME ne peut etre utilisé à cause de ma version antérieure de mysql)
    Faudrait être un peu plus explicite (dire exactement de quelle version il s'agit)

    Est-ce que tu pourrais formuler ton problème de manière plus générale, stp? Du genre: "J'ai une table machin, avec les champs bidule de type truc. Je cherche à faire ceci (ajouter des durées, oui, mais sur quoi?). Comment faire ?"
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    J'ai mysql 4.0.18

    Je cherche a additionner 2 valeur TIME.
    - l'une se trouve dansun formulaire (j'arrive à la récupérer sans pb)
    - l'autre se trouve dans ma table "pilotes"

    Je veux additioner ces 2 valeurs.
    Je me suis lancé sur la piste du TIME_TO_SEC pour pouvoir additionner les valeurs.

    Voila mon dernier script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //récupération de la valeur temps deja effectuée
    $heures = "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
    $result = mysql_query($heures);
    while ($timepilot = mysql_fetch_array($result, MYSQL_NUM));
     
    {
    echo $timepilot['heures'];
    }
     
    //calcul
    $sql = "SELECT(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot['heures'] ."))))FROM pilotes";
    $res = mysql_query($sql);
    echo "$sql";
     
    // ajout du nombre d'heures dans la base pilotes
    $secondes = "(TIME_TO_SEC($duree))"; // valeur du formulaire transformee en secondes
    $rq =     "UPDATE pilotes ".
            "SET heures='($res)' ".
            "WHERE callsign='". $callsign ."'";
     
    $result = mysql_query($rq)
        or die ("Execution de la requete du calcul impossible");
    et voici l'echo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rapport de vol envoyéSELECT(SEC_TO_TIME(TIME_TO_SEC(02:00:00) + (TIME_TO_SEC())))FROM pilotes

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Et simplement la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE pilotes 
    SET heures=SEC_TO_TIME( TIME_TO_SEC(heures) + TIME_TO_SEC($duree) )
    WHERE callsign='$callsign' ;
    plutôt que ton script un peu che-lou, ça peut pas marcher ?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "UPDATE pilotes SET heures='SEC_TO_TIME( TIME_TO_SEC(heures) + TIME_TO_SEC($duree) )'
    WHERE callsign='$callsign'" ;
    $result = mysql_query($sql);
    mais le pb: si j'ai une valeur 01:00:00 et que je rentre une valeur 02:00:00, au lieu d'updater et de mettre 03:00:00, il remplace simplement 01:00:00 par 02:00:00

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Dis moi, est-ce que dans ma requête tu m'as vu mettre de simples quotes (') autour du SEC_TO_TIME? Non? Alors c'est qu'il y a une bonne raison ! (vire moi ces horreurs !)

    Sinon, j'ai essayé chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SEC_TO_TIME( TIME_TO_SEC('01:00:00') + TIME_TO_SEC('02:00:00') ) ;
    Et ça me retourne bien :
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    $sql = "UPDATE pilotes SET heures= SEC_TO_TIME( TIME_TO_SEC(heures) + TIME_TO_SEC('$duree') ) ;
    WHERE callsign='$callsign'" ;
    $result = mysql_query($sql);
    Alros j'ai supprimé les quotes mais là ça ne fait plus rien...

  10. #10
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Bravo pour le ';' juste après le SEC_TO_TIME, je sens qu'on va bien se marrer avec toi !

    Bon, petit conseil: tu prends un outil comme phpMyAdmin et tu testes tes requêtes petit à petit. Tu commences par un petit SELECT pour vérifier que les fonctions d'heure retournent le bon résultat, puis tu fais intervenir la table Pilote, puis la condition WHERE, jusqu'à arriver à ta requête finale que tu intègres à ton script PHP...

    Edit: enlevé une citation qui ne plaisait pas à certains.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    ça y est !!

    La formule magique était bien plus simple que je ne pensais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "UPDATE pilotes SET heures = SEC_TO_TIME( TIME_TO_SEC('$duree') + TIME_TO_SEC(heures) ) WHERE callsign = '$callsign'" ;
    $result = mysql_query($sql);
    Merci à vous ! Je vais enfin pouvoir passer à autre chose.

    Encore merci !

  12. #12
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Et bien tu vois, quand on y va étape par étape, on y arrive tout seul comme un grand ! (j'avais juste oublié les quotes autourde $duree, mais dans le principe, c'est ça: pas besoin de faire un cript compliqué !)

    Pense au bouton "Résolu"...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/10/2014, 21h13
  2. [XL-MAC 2011] Addition de cellules valeur horaire
    Par Yann1971 dans le forum Excel
    Réponses: 3
    Dernier message: 01/12/2011, 00h05
  3. Addition et multiplications
    Par Yayel dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/04/2003, 23h15
  4. [VB6] Problème d'addition de dates et de nombres
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/11/2002, 21h12
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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