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 :

[Dates] Calendrier php (semaine->Mois)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut [Dates] Calendrier php (semaine->Mois)
    Bonjour, je ne sais pas réellement ou mettre ce sujet donc s'il n'est pas à sa place, signalez le moi...

    En fait, je suis entrain de faire une application de saisie de charges de travail, et on les saisie par SEMAINE.

    Maintenant je dois extirper ces données pour faire des "report" par MOIS !
    Or un mois=plusieurs semaines, mois=semaines sur plusieurs mois,...

    Je ne sais pas vraiment comment faire pour recolter ces données, et au fond juste faire un total.
    Dans ma table 'loads', j'ai le numero de semaine (ex:17), et la charge pour chaque jour de la semaine (monday, tuesday,..., friday).

    Est ce que quelqu'un peut m'aider ?

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour à toi !

    Je n'ai pas d'idées précises de code en tête mais je peux te donner quelques pistes.

    Tu vas avoir besoin de récupérer la charge de chaque jour du mois à analyser. Or tes jours tu sais qu'ils sont stockés par numéro de semaine dans l'année, donc il faut procéder en plusieurs étapes:

    1/ avec date et mktime() tu récupères pour le premier jour du mois et le dernier jour du mois le numéro de ces jours dans l'année (par exemple 0 pour le 1er janvier et 365 pour le 31/12 d'une année non bissextile) et le numéro de ces jours dans leur semaine courante (dimanche = 0, lundi = 1, etc.)

    2/ tu sais ensuite dans quel numéro de semaine se placent ces jours (le 1er février est le jour 31 de l'année (ca commence a 0) donc 31/7 = 4.42..., ton mois commence dans la 4e semaine.

    3/ tu récupères de la base la totalité des jours pour les semaines concernées par ta période avec les jours en trop.

    4/ tu additionnes toutes les valeurs pour les bons jours (en l'occurrence tu sais que le 01/02/2007 est un jeudi car jour 5 de la semaine (renvoyé au 1/ par date) donc tu additionnes du jeudi de ta semaine 4 jusqu'au jour de fin du mois.

    J'espère que j'ai pas été trop brouillon...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut autre solution
    Pour moi tu as été très clair.

    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
    28
    29
    <?php
    // Ceci est une bride de code à coup sûr non fonctionnel
    // mais il te donnera une idée de comment faire
     
    // Tu récupères la période sélectionnée
    // Admettons que tu es passé par un formulaire (method=POST)
    // ou tu as saisis une date de début et une date de fin
    // et que dans ta base les dates sont stockées en BIGINT
    // et comporte des valeurs Timestamp UNIX
    $date_debut = $_POST['debut'];
    $date_fin = $_POST['fin'];
     
    // Tu te connectes au serveur MySQL et tu sélectionne la BDD
    $link = mysql_connect...
    mysql_select_db($dbname, $link);
     
    $request = "SELECT nb_heures_jour FROM table_heures 
         WHERE date_jour >= $date_debut
              AND date_jour <= $date_fin";
     
    $result = mysql_query($request);
     
    $total_heures_travaillees = 0;
    while($ligne = mysql_fetch_array($result){
        $total_heures_travaillees += $ligne['nb_heures_jour']; 
    }
    echo $total_heures_travaillees;
    mysql_close($link);
    ?>
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Si tu stockes la date AAAA-MM-JJ au lieu du N° de semaine dans ta bdd, tu ne te poseras plus ce genre de problème.
    Si tu as besoin de retrouver tes semaines, mysql et php ont tous deux des fonctions permettant de le faire à partir d'une date.

    Donc, commence par là, et tu verras, ça ira tout seul pour le reste.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Oui merci koopajah,
    En fait, il me manquerait un truc, la fonction qui permet de renvoyer qu'on est le 31eme jour de l'année pour le 1er fevier par exemple.
    Ce que je trouve ce sont les fonctions pour dire que le 31eme jour de l'année est le 1 fevrier en gros, avec mktime, mais pas le contraire.
    Pourrais tu m'aider ?

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Fais quelquechose de ce genre :

    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
     
    <?php
    // Tu fais des rapports par mois donc tu as le mois et l'année courante pour le rapport :
    $vMois 	= 2;
    $vAnnee = 2007;
     
    // On se sert de mktime pour retourner le timestamp unix du premier jour du mois
    $vTime	= mktime(0,0,0,$vMois,1,$vAnnee);
     
    // On récupere pour cette date la le numéro du jour dans l'année avec "z" (cf doc.)
    // Attention le 01/01 est 0 donc le 01/02 est 31
    $vNumJourDansAnnee	= date("z", $vTime);
     
    echo $vNumJourDansAnnee;
    ?>

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Oui merci koopajah, j'ai tout ce qu'il me faut maintenant.
    Encore merci.

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

Discussions similaires

  1. [Dates] calendrier php + outlook
    Par leclone dans le forum Langage
    Réponses: 1
    Dernier message: 02/04/2007, 12h02
  2. [Dates] calendrier : premier jour de chaque mois
    Par vodasan dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2007, 07h26
  3. Calcul de dates : début de semaine, de mois, de trimestre
    Par pyxosledisciple dans le forum Access
    Réponses: 13
    Dernier message: 22/02/2006, 08h07
  4. Réponses: 14
    Dernier message: 30/12/2005, 19h31
  5. [Dates] calendrier mois suivant, précédent
    Par t-die dans le forum Langage
    Réponses: 7
    Dernier message: 22/12/2005, 14h22

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