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

PHP & Base de données Discussion :

Comment afficher le résultat de ma requête en format heure minutes seconde ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut Comment afficher le résultat de ma requête en format heure minutes seconde ?
    Bonjour tout le monde !
    J'ai un problème avec l'affichage du résultat de ma requête. Je voudrais afficher le résultat du calcul sous la forme heure minute (seconde) mais je ne trouve pas le moyen de le faire ^^'. Dans ma requête, je calcule les heures de travail que les employés ont effectué dans la semaine.

    Voila ce que j'ai écrit :

    Code php : 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
    28
    29
    30
    31
    32
    33
    34
    35
    $week=0;
    $today = getdate();
    $lundi = time() + (-($today['wday'] + 1)%7 + 1 + 1 + 7*$week)*24*60*60;
    $dateD = date('Y/m/d', $lundi);
    $dateF = date('Y/m/d', $lundi + 24*60*60*6);
     
     
    $req1="select heureFin, heureDebut
    FROM presence,equipier
    Where equipier.CodeEqu = presence.codeEquipe
    AND CodeEquipe='".$_SESSION['CodeEqu']."'
    AND Jour>'".$dateD."'
    AND Jour<'".$dateF."';";
    $res1=mysql_query($req1,$connexion);
    $lignetitre1=mysql_fetch_assoc($res1);
    $dureeT=0;
     
    while ($lignetitre1!=FALSE)
    {
    $jour=$lignetitre['jour'];
    $heureF=$lignetitre1['heureFin'];
    $heureD=$lignetitre1['heureDebut'];
    $h1=strtotime($heureD);
    $h2=strtotime($heureF);
    $duree=($h2-$h1-3600);
    $dureeT=$dureeT+$duree+3600;
    $lignetitre1=mysql_fetch_assoc($res1);
    }
     
    $dureeT=$dureeT-3600;
    $dureeT=(($dureeT+3600)/3600);
    $heure=intval(abs($dureeT));
    $minute=($dureeT-$heure)*60;
     
    echo "vous avez effectuer ".$heure.":".$minute." cette semaine. <br><br><br>";

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    as tu vu que tu peux formater date ou heure avec une fonction php par rapport à une chaine: date

    pas besoin de concaténer avec "" en php... utilise {} pour encadrer l'insertion de variable si c'est un tableau ou si tu as des lettre collées au nom de celle-ci sinon mets la directement...

    coté sql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    jour between a and b
    correspond à:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    jour>=a and jour<=b
    et jointure ça s'écrit avec l'opérateur JOIN depuis 1992, botte le cul de ton prof...

    donc ton code deviendrait:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req1="select heureFin, heureDebut
    FROM presence p
    left join equipier e on e.CodeEqu = p.codeEquipe
    where p.CodeEquipe='{$_SESSION['CodeEqu']}'
    AND Jour between '$dateD' AND '$dateF';";

    en plus, c'est mieux d'utiliser le sur-nommage de table et de préciser l'alias devant chaque colonne utilisée... question de clarté et de maintenance pour se rappeler qui est dans quoi...

    en plus, tu peux directement faire ton calcul de différence d'heure dans ta requête au lieu de faire l'usine à gaz où tu cherches à faire une soustraction sur 2 chaine de caractères qui représentent des heures... rien ne te choque en terme de typage?



    bref, toujours faire le plus simple et clair... et chercher dans les docs des différents langages...

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut
    Salut ericd69,

    Merci pour la réponse
    Non je n'avais pas vu cette page ^^' mais oui je sais que ce code

    jour BETWEEN a AND b

    correspond a celui-là

    jour>=a AND jour<=b



    Pour ce qui est de la jointure c'est vrais que ma prof ne nous la pas appris comme ça... Peut-être que c'est pas dans le programme de l'éducation national

    et pour la requête c'est ce que je pensais faire au début mais comme ça marcher pas ben j'ai fait autrement ^^

    Mais merci pour la réponse ça marche maintenant

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 10h19
  2. Réponses: 2
    Dernier message: 07/02/2012, 09h17
  3. Comment afficher le résultat d'une requête
    Par malloum dans le forum Oracle
    Réponses: 3
    Dernier message: 04/02/2011, 10h18
  4. Réponses: 13
    Dernier message: 26/07/2007, 08h50
  5. Réponses: 11
    Dernier message: 20/06/2006, 11h10

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