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] Fonction qui retourne tous les jours d'une semaine en indiquand son numéro


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut [Dates] Fonction qui retourne tous les jours d'une semaine en indiquand son numéro
    Bonjour à tous,

    J'aimerais savoir s'il existe une fonction php qui permet de retrouver tous les jours d'une semaine en indiquand simplement le numéro de la semaine en question?

    D'avance merci.

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    La fonction date est ton amie.

    Voir aussi ces très bons cours et tutoriels PHP : http://php.developpez.com/cours/
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Bonjour lama85,

    date ("w") affiche le jour de la semaine de 0 (dimanche) à 6 (samedi).
    date ("W") affiche le numéro de la semaine.

    Bonne chance...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Merci je vais essayer tout ça! et je redonne des news!

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    En fait je crois que le problème n'est pas là :

    J'ai déjà le numéro de semaine (l'utilisateur le saisie dans un formulaire), et par rapport à ce numéro de semaine saisi, j'aimerais pouvoir afficher toutes les dates qui y correspondent...

    J'ai cherché à faire ca avec la fonction date() mais j'y arrive pas!

  6. #6
    Membre actif
    Avatar de nicolas.pied
    Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Janvier 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur d'Etudes

    Informations forums :
    Inscription : Janvier 2005
    Messages : 249
    Points : 235
    Points
    235
    Par défaut
    Il va falloir que tu réalise soit des calculs soit une boucle pour localiser ta semaine. Car les fonctions PHP ne le permettent pas (enfin je pense).

    Utilise mktime et date par exemple :

    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
    <?php
    $w = 7; // Pour la 7 ème semaine à rechercher
     
    // A voir pour l'année pour les numéros de semaines antérieures à la date
    // courante
     
    for($i = 1; $i <= 365; $i++) {
      $week = date("W", mktime(0, 0, 0, 1, $i, 2006));
      if($week == $w) {
        echo "Le jour " . $i . " est le premier jour de la semaine numéro : " . $w . "<br />";
        // Ensuite pour afficher tous les jours de la semaine
     
        for($d = 0; $d < 7; $d++) {
        	echo date("l d/m/Y", mktime(0, 0, 0, 1, $i+$d, 2006)) . "<br />";
        }
        break;
      }
    }
    ?>
    Cela retourne :

    Le jour 44 est le premier jour de la semaine numéro : 7
    Monday 13/02/2006
    Tuesday 14/02/2006
    Wednesday 15/02/2006
    Thursday 16/02/2006
    Friday 17/02/2006
    Saturday 18/02/2006
    Sunday 19/02/2006
    Un petit merci ?
    Un peu d'humour : jokes.guppix.fr
    Articles et actualités informatiques : Kbups.org
    Articles sur le développement informatique : nicolaspied.developpez.com

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    pas un petit merci, mais un très grand MERCI!!!!

    C'est droit ce qui me fallait!!

    Milles merci c'est trop cool!

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    J'ai un algo un petit peu différent, histoire de voir une autre méthode possible :
    La semaine 1 de l'année est la semaine du 4 janvier (première semaine qui est plus sur l'année que sur la précédente).
    On détermine donc la jour de la semaine et le timestamp du 4 janvier. On ajoute le nombre de jours pour "aller" dans la semaine qu'on désire et on a directement un timestamp dans la bonne semaine. Grâce au jour de la semaine du 04/01, on peut retrouver toutes les dates de cette semaine.

    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
     
    <?
    $semaineVoulue = 32;
     
    $janv4 = mktime(0, 0, 0, 1, 4, 2006);
    $j = date('N', $janv4); // date("N") : Représentation numérique ISO-8601 du jour de la semaine (ajouté en PHP 5.1.0)
    // jour correspondant à $j dans la semaine voulue
    $jour = $janv4 + (7*24*3600) * ($semaineVoulue - 1);    // on est déjà en semaine une, donc on ajoute une semaine de moins
     
    $tab = array();	// tableau contenant la liste des jours de la semaine voulue
    // pour un jour de la semaine donné (1 <= j <= 7), on a (j-1) jours avant dans la semaine et (7-j) jours après
    $format = 'Y-m-d';
    for($k = $j - 1 ; $k > 0 ; $k--)
        $tab[] = date($format, $jour - $k * (24*3600));
     
    $tab[] = date($format, $jour);
     
    for($k = 1 ; $k <= 7 - $j ; $k++)
        $tab[] = date($format, $jour + $k * (24*3600));
     
    print_r($tab);
    ?>
    Si quelqu'un a encore une autre méthode, ça m'intéresse

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    J'ai voulu utiliser le code ci dessous, mais, lorsqu'on passe en semaine 52 une erreur ce produit et la dernière semaine n'est pas affichée.
    En clair, quelque soit l'année ça fonctionne jusqu'à la semaine 51 mais ignore l'affichage des jours de la semaine 52 et passe à l'année suivante ....

    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
     
    <?php
    $w = 52; // Pour la 52 ème semaine à rechercher
     
    // A voir pour l'année pour les numéros de semaines antérieures à la date
    // courante
     
    for($i = 1; $i <= 365; $i++) {
      $week = date("W", mktime(0, 0, 0, 1, $i, 2011));
      if($week == $w) {
        echo "Le jour " . $i . " est le premier jour de la semaine numéro : " . $w . "<br />";
        // Ensuite pour afficher tous les jours de la semaine
     
        for($d = 0; $d < 5; $d++) {
        	echo date("l d/m/Y", mktime(0, 0, 0, 1, $i+$d, 2011)) . "<br />";
        }
        break;
      }
    }
     
     
     
    ?>
    // Retourne :

    Le jour 1 est le premier jour de la semaine numéro : 52
    Saturday 01/01/2011
    Sunday 02/01/2011
    Monday 03/01/2011
    Tuesday 04/01/2011
    Wednesday 05/01/2011

    Pourquoi ce bug et comment le corriger ?

    Merci

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/08/2014, 22h46
  2. Réponses: 4
    Dernier message: 26/02/2008, 20h01
  3. Lister tous les jours d'une année
    Par Delphi-ne dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/02/2007, 18h10
  4. Formulaire qui contient tous les champs d'une table
    Par cakeby dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 09h22
  5. Réponses: 3
    Dernier message: 18/10/2005, 15h34

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