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 :

Numéro de la semaine selon le mois.


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Numéro de la semaine selon le mois.
    Bien le bonjour,

    Le problème est le suivant :

    Pour éviter d'avoir des dates à répétition et un affichage plus pratique, j'ai opté pour la numérotation des semaines (1, 2, 3, 4) Or les mois ne se ressemblant absolument pas, et ayant des semaines pouvant commencer ou se terminer sur des mois différents, j'ai assez de mal à écrire le code qui convient.

    Doooooonc, le probleme !
    Actuellement, dans mon code, il récupère la date du jour, à partir de la, j'aimerais pouvoir savoir si le jour en question fait parti d'une semaine (complète) appartenant au mois en question et donc par la suite lui attribuer une variable $semaine = 1, 2, 3 ou 4
    Si il s'agit seulement d'un début de semaine et que la fin se termine sur un autre mois, $semaine = 1 et le mois est celui où cela se termine.
    Et de même si il s'agit d'une fin de semaine, $semaine = 1 et le mois en question.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     <?php
     
       	$date=date("Y-m-d");
       	$t=explode('-',$date);
       	$d=$t[2].'/'.$t[1].'/'.$t[0];
     
    	$jour=date('N');
    	$jmois=date('t');
    	$semaine=0;
     
    for ($i=1; $i<=7; $i++)
    {
    if ($jour==$i)
    {
    	if ($t[2] <= 10 && $t[2]+7 <= 10)
    	{
    	$semaine=1;
    	}	
    	elseif ($t[2] <= 17  && $t[2]+7 <= 17)
    	{
    	$semaine=2;
    	}
    	elseif ($t[2] <= 24  && $t[2]+7 <= 24)
    	{
    	$semaine=3;
    	}
    	elseif( $t[2] <= $jmois  && $t[2]+7 <= $jmois)
    	{
    	$semaine=4;
    	}
    	else 
    	{
    	$semaine=1;
    	$t[1]=$t[1]+1;
    	$t[2] = 1;
    	if ($t[1] == 13)
    	{
    		$t[1]=1;
    	}
    	else 
    	{
    		$t[1]=$t[1];
    	}
    	}
    }
    }
     
    print(' </br>semaine : '. $semaine.' </br>mois : '. $t[1].' </br>jour : '. $t[2].' </br>nombre de jour dans le mois '. $jmois.' </br></br></br></br>');
     
    ?>

    Oui c'est moche, j'ai fais je sais pas combien de test, là c'est la dernière avant que j'abandonne!

    Je sais pas trop si vous avez compris la situation, mais je me ferais un plaisir pour vous éclaircir sur les points sombres!

    Merci par avance,
    Cordialement,

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

    Dernière modification par Domi2 ; 26/06/2016 à 13h23. Motif: Lien non pérenne

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'avais déjà connaissance de ces fonctions, j'tenais vraiment pas à passé par les fonctions SQL, surtout que sans date précise, j'aurais pas pu.

    Bref, j'avais juste oublié de rajouter une variable qui variait selon le jour actuel.

    J'pense que ça marche pour n'importe quel cas, à vérifier tout de même! J'en ai teste qu'une 10ene.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
      <?php
     
       	$date=date("Y-m-d");
       	$t=explode('-',$date);
       	$d=$t[2].'/'.$t[1].'/'.$t[0];
     
    	$jour=date('N');
    	$jmois=date('t');
    	$semaine=0;
     
    	switch($jour)
    	{
    		case 1 : $j =6;break;
    		case 2 : $j =5;break;
    		case 3 : $j =4;break;
    		case 4 : $j =3;break; 
    		case 5 : $j =2;break; 
    		case 6 : $j =1;break;
    		case 7 : $j =0;break; 
     
    	}
     
    for ($i=1; $i<=7; $i++)
    {
    if ($jour==$i)
    {
    	if ($t[2] <= 10 && $t[2]+$j <= 10)
    	{
    	$semaine=1;
    	}	
    	elseif ($t[2] <= 17  && $t[2]+$j <= 17)
    	{
    	$semaine=2;
    	}
    	elseif ($t[2] <= 24  && $t[2]+$j <= 24)
    	{
    	$semaine=3;
    	}
    	elseif( $t[2] <= $jmois  && $t[2]+$j <= $jmois)
    	{
    	$semaine=4;
    	}
    	else 
    	{
    	$semaine=1;
    	$t[1]=$t[1]+1;
    	if ($t[1] == 13)
    	{
    		$t[1]=1;
    	}
    	else 
    	{
    		$t[1]=$t[1];
    	}
    	}
    }
    }
     
    print(' </br>semaine : '. $semaine.' </br>mois : '. $t[1].' </br>jour : '. $t[2].' </br>nombre de jour dans le mois '. $jmois.' </br></br></br></br>');
     
    ?>

    Si quelqu'un à besoin, voila !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y a un problème dans ton algo :
    2015-12-30 - mois : 1 semaine : 1
    2015-12-31 - mois : 1 semaine : 1
    2016-01-01 - mois : 01 semaine : 1
    2016-01-02 - mois : 01 semaine : 1
    2016-01-03 - mois : 01 semaine : 1
    2016-01-04 - mois : 01 semaine : 1
    2016-01-05 - mois : 01 semaine : 1
    2016-01-06 - mois : 01 semaine : 1
    2016-01-07 - mois : 01 semaine : 1
    2016-01-08 - mois : 01 semaine : 1
    2016-01-09 - mois : 01 semaine : 1
    Je ne suis pas sûr d'avoir tout bien compris sur les règles que tu voulais mais je te propose quelque chose de plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function semaine($date) {
        $objDate = date_create($date);
        if ($objDate->format('N') != 7) { $objDate->modify('next sunday'); }
    	$semaine = intval($objDate->format('d') / 7) + 1;
    	return array($semaine, $objDate->format('n'));
    }
     
    $t = semaine('2016-06-25');
    echo 'mois : ' . $t[1] . ' semaine : ' . $t[0];
    On se retrouve par contre avec des choses qui peuvent surprendre.
    La semaine du 26/10/2015 au 01/11/2015, ayant le dimanche en novembre est donc la semaine 1 de novembre (alors que les 6 premiers jours sont en octobre).
    Et le semaine finissant le 29/11/2015 est donc la semaine 5 de novembre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'comprend meme pas tes résultats avec mon algo, chez moi ça avait l'air de marché..
    Fin d'un côté je récupère pas de la meme facon les résultats vu qu'ils vont allé alimenter une bdd au jour le jour.

    Nom : semaine.png
Affichages : 789
Taille : 20,8 Ko

    J'aurais peut-etre du garder l'image, ca aurait été plus clair pour les gens.
    Juste avant cette page, j'ai un sélection du mois a faire qui va ensuite amener à cette page comportant X semaine(s) correspondant au mois.

    Comme tu peux le voir sur l'image, j'ai fais l'algo pour trier les classements selon les semaines du mois et ainsi avoir un affichage net, pour moi du moins.

    Et pour mieux expliquer ce que je recherche :

    Nom : calendrier-2016.jpg
Affichages : 2565
Taille : 157,1 Ko

    On est en juin, alors j'vais prendre juin comme exemple.
    On voit qu'à partir du 26, on tombe sur une semaine incomplète puisque qu'elle se termine en juillet, ce que je recherche c'est que la semaine du 27/06 - 03/07 fasse partir du mois de juillet.

    Après je me complique surement la vie, mais vu que j'suis un débutant, j'reste dans le cliché de quand on sait pas faire, on recherche toujours la difficulté!

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si c'est ça, mon code doit fonctionner et il y a des mois qui auront 5 semaines.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    A premiere vu ça marche, j'ai pas fait enormement de teste mais il affiche bien ce que je demande.
    En tout cas merci pour l'aide rapide!

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

Discussions similaires

  1. numéro de la semaine dans le mois
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2011, 17h56
  2. Réponses: 2
    Dernier message: 26/01/2010, 09h51
  3. Réponses: 1
    Dernier message: 16/11/2007, 23h28
  4. déterminer les numéros de semaines d'un mois
    Par yucf_miagiste dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/09/2007, 17h41
  5. Numéro de la semaine selon la norme ISO
    Par steelidol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/02/2006, 16h05

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