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] Obtenir le jour de la semaine correspondant à une date tiré d'un tableau


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] Obtenir le jour de la semaine correspondant à une date tiré d'un tableau
    Hello,

    Voilà mon problème : j'ai un tableau ($aDates) contenant plusieurs dates au format YYYY,mm,dd. Pour chaque date de ce tableau j'aimerais obtenir le jour de la semaine lui correspondant.

    Sur les FAQ du site j'ai trouvé la fonction qui retourne le jour de la semaine correspondant à la date d'aujourd'hui, je l'ai un peu modifier pour qu'elle me retourne le jour de la semaine pour chaque date de mon tableau, mais j'obtiens une erreur: Undefined offset!

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for ($i = 0; $i<count($aDates);$i++)
    	{
    		// tableau des jours de la semaine
    		$joursem = array('dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam');
    		// extraction des jour, mois, an de la date
    		list($jour, $mois, $annee) = explode('/', $aDates[$i]);
    		// calcul du timestamp
    		$timestamp = mktime (0, 0, 0, $mois, $jour, $annee);
    		// affichage du jour de la semaine
    		echo $joursem[date("w",$timestamp)];
    	}
    Pouvez-vous m'aider???

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Bonjour,

    as-tu fait un echo de $jour, $mois et $annee ? Si oui, cela te renvoit quoi ?
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tout simplement parce que tu es hors du tableau d'où l'erreur du offset.

    Il faudrait que testes ce qui t'es renvoyé au cours de ton script

  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
    Citation Envoyé par navis84

    as-tu fait un echo de $jour, $mois et $annee ? Si oui, cela te renvoit quoi ?
    oui j'ai fait un echo et ça me retourne chaque date contenu dans mon tableau

  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
    Au cours de mon script, j'ai fait des echo des variables $jour, $mois, $annee, pour chaque ligne de mon tableau ça me retourne les dates qui correspondent, mais par contre le jour correspondant à la date est toujours samedi.

    Je comprends pas trop le fait d'être en dehors du tableau, il me semble pourtant être dedans non??????

  6. #6
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    tu dis que le format est YYYY,mm,dd
    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($jour, $mois, $annee) = explode('/', $aDates[$i]);
    est alors faux
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($annee, $mois, $jour) = explode(',', $aDates[$i]);

  7. #7
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    A quelle ligne ton erreur se produit-elle ?
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  8. #8
    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
    Un echo du code suivant me retourne pour chaque date 6, sam
    Je ne vois pas comment faire autrement


  9. #9
    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
    Citation Envoyé par frol
    tu dis que le format est YYYY,mm,dd
    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($jour, $mois, $annee) = explode('/', $aDates[$i]);
    est alors faux
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($annee, $mois, $jour) = explode(',', $aDates[$i]);
    En ayant changé comme tu me l'as indiqué, j'obtiens une nouvelle erreur :

    --> mktime(): Windows does not support negative values for this function

  10. #10
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Reprenons depuis le début..le format est bien YYYY,MM,DD ? car pour le reste il y a aucun problème avec le code.

    Ton problème ne peut venir que de la récupération des informations

  11. #11
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    il faudrait fire un test du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    list($jour, $mois, $annee) = explode('/', $aDates[1]);
    echo $jour,$mois,$annee
    et toutes les dates dans la tableau sont bien valides??

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ton echo n'est pas valide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $jour.','.$mois.','.$annee;

  13. #13
    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
    Citation Envoyé par frol
    il faudrait fire un test du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    list($jour, $mois, $annee) = explode('/', $aDates[1]);
    echo $jour,$mois,$annee
    et toutes les dates dans la tableau sont bien valides??

    Oui toutes les dates de mon tableau son valide et elles sont bien au format YYYY-MM-DD, voici tout le code qui pourra peut-être vous aider a mieux comprendre mon problème car au départ j'ai une autre fonction qui me retourne le tableau de date.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function getDatesBetween ($dStart, $dEnd) 
    	{
    		 $iStart = strtotime ($dStart);
    		 $iEnd = strtotime ($dEnd);
    		 if (false === $iStart || false === $iEnd) 
    		 {
    		  return false;
    		 }
    		 $aStart = explode ('-', $dStart);
    		 $aEnd = explode ('-', $dEnd);
    		 if (count ($aStart) !== 3 || count ($aEnd) !== 3) 
    		 {
    		  return false;
    		 }
    		 if (false === checkdate ($aStart[1], $aStart[2], $aStart[0]) || false === checkdate ($aEnd[1], $aEnd[2], $aEnd[0]) || $iEnd <= $iStart) 
    		 {
    		  return false;
    		 }
    		 for ($i = $iStart+86400; $i <$iEnd; $i += 86400 ) 
    		 {
    		  $aDates[] = strftime ('%Y-%m-%d', $i);
    		 }
    		 if (isset ($aDates) && !empty ($aDates)) 
    		 {
    		  return $aDates;
    		 } 
    		 else 
    		 {
    		  return false;
    		 }
    	}
     
    // appel de la fonction
    $aDates = getDatesBetween ('2006-08-10', '2006-08-14');
    array_push($aDates,'2006-08-10');
    array_push($aDates,'2006-08-14');
     
    echo '<pre>', print_r ($aDates), '</pre>';	
     
     
    // date du jour
    for ($i = 0; $i<count($aDates);$i++)
    	{
    		// tableau des jours de la semaine
    		$joursem = array('dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam');
    		// extraction des jour, mois, an de la date
    		list($annee, $mois, $jour) = explode('/', $aDates[$i]);
    		// calcul du timestamp
    		$timestamp = mktime (0, 0, 0, $annee, $mois, $jour );
    		// affichage du jour de la semaine
    		echo $joursem[date("w",$timestamp)];
    		//echo date('w',$timestamp);
    	}

  14. #14
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Dans ce cas c'est plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($annee, $mois, $jour) = explode('-', $aDates[$i]);
    Et ton timestamp est faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $timestamp = mktime (0, 0, 0, $mois, $jour, $annee);
    		// affichage du jour de la semaine

  15. #15
    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
    Mille MERCI!!!

    Mnt ça fonctionne à merveille je suis trop contente merci merci merci!!!


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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2011, 09h05
  2. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 17h54
  3. Retrouver le jour de la semaine correspondant à une date
    Par christophe_halgand dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/01/2008, 10h28
  4. [Dates] nombre de jours de la semaine entre 2 dates
    Par arkienou dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2007, 19h38
  5. Réponses: 1
    Dernier message: 07/08/2007, 22h49

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