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 :

Soustraire 2 temps


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Par défaut Soustraire 2 temps
    Bonjour tout le monde,
    Depuis ce matin j'essaie de faire la soustraction de 2 temps mais je n'arrive pas.
    J'ai réussi à faire ce code
    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
    23
    24
    25
    26
    27
    <?php
    $heure1 = '18:25:00';
    $array_heure=explode(":",$heure1); 
    $secondes1=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2];
     
    $heure2 = '20:30:00';
    $array_heure2=explode(":",$heure2); 
    $secondes2=3600*$array_heure2[0]+60*$array_heure2[1]+$array_heure2[2];
     
    $diff=$secondes2-$secondes1; 
     
     
    $s=$diff % 60; //reste de la division en minutes => secondes 
    $m1=($diff-$s) / 60; //minutes totales 
    $m=$m1 % 60;//reste de la division en heures => minutes 
    $h=($m1-$m) / 60;
     
    if ($h <10 and $m <10 )
    $resultat='0'.$h.":0".$m."";
    else if ($h <10 and $m >10 )
    $resultat='0'.$h.":".$m."";
    else if ($h >10 and $m <10 )
    $resultat=$h.":0".$m.""; 
    else
    $resultat=$h.":".$m."";
     
    echo $resultat;
    qui fonctionne très bien mais quand je change la valeur de $heure1 et de $heure2 par $_POST['heure1'] et $_POST['heure2'] qui sont des champs time, ça me met l'erreur :
    PHP Fatal error: Uncaught PDOException: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'nbr_h' at row 1.
    Merci d'avance de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- C'est quoi, ce "bricolage" ??
    Qu'est-ce que tu n'as pas compris dans ton autre discussion ?

    2- Le message indique une erreur PDO.
    Or, il n'y a rien en rapport avec PDO dans le code que tu montres.

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 140
    Par défaut
    Salut

    Mise à part le message d'erreur, la syntaxe de la condition if ne me semble pas conforme, il manque des { et des }.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    ...la syntaxe de la condition if ne me semble pas conforme, il manque des { et des }.
    @ProgElecT
    Les accolades ne sont pas obligatoires quand il n'y a qu'UNE SEULE instruction (ce qui est le cas ici).
    Néanmoins, il est préférable de toujours les mettre.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Par défaut
    @jreaux62, ta réponse de la discussion d'hier m'a été très utile.
    Il s'agit maintenant d'un autre problème.
    j'utilise PDO pour l'insertion du résultat dans la base de données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     $statement = $this->pdo->prepare('INSERT INTO table (h_debut,h_fin, nbr_h) VALUES (?, ?, ?)');
       return $statement->execute([
    	  $_POST['h_debut'],
    	  $_POST['h_fin'],
               $resultat,
     
              ]);

  6. #6
    Invité
    Invité(e)
    Par défaut
    1-
    "Data truncated for column 'nbr_h' "
    Quel est le FORMAT de la colonne "nbr_h" dans la table SQL ?
    Manifestement, ce n'est pas le bon.

    2- $resultat est de la forme hh:mm.

    Visiblement, tu n'utilises pas du tout le code que j'ai donné (dans l'autre discussion)...
    Selon l'autre discussion, il suffit décrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = $interval->format('%H:%I');
    Ou, avec les secondes (de la forme hh:mm:ss) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = $interval->format('%H:%I:%S');
    Dernière modification par Invité ; 27/12/2019 à 15h11.

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

Discussions similaires

  1. Soustraire deux unités de temps au format perso
    Par zika27 dans le forum Langage
    Réponses: 10
    Dernier message: 06/12/2013, 13h35
  2. Soustraire 2 valeurs temps
    Par Evanton dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/06/2007, 17h23
  3. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53
  4. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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