[PHP] Jours de la semaine grâce à son numéro

Fermé
Arkha -  
 le père -
Bonjour,

Question probablement toute bête, mais après plusieurs recherches, je n'ai toujours pas trouver...

Je voudrais stocker la liste des jours d'une semaine, grâce à son numéro de semaine...

Exemple:

$array_jours_semaine = semaine(45); //pour lister les jours de la semaine 45

J'ai fait des recherches avec les fonctions de de date php, mais j'avoue que j'ai un peu de mal en ce qui concerne les dates...

Merci à ceux qui pourront essayer de m'éclairer un peu =)
Configuration: Windows XP Internet Explorer 7.0

3 réponses

  1. daveknight Messages postés 202 Statut Membre 32
     
    Salut, tard sans doute j'arrive, j'aurai eu mieux encore et plus léger :

    Tu peux également utiliser le paramètre 'N', pour connaître le numéro du jour (1 pour lundi, à 7 pour dimanche). Il suffit ensuite d'associer ce numéro à une entrée d'un array, et le tour est joué.
    <?php
    $tab_jour = array(1 => 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
    $num_jour = date('N');
    $nom_jour = $tab_jour[$num_jour];
    ?>
    // ...
    // ...
    // un peu plus loin dans ton code pour demander l'affichage ...
    
    echo $nom_jour;
    
    


    Voilà c'est ALL ;)
    2
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    Je t'ai concocté ça:

    <?php
      //fonction calcul
     function get_lundi_dimanche_from_week($sem,$an) {
    	//timestamp du premier janvier de l'annee demandee
    	$timestamp01janv=mktime(0,0,0,01,01,$an);
    	//numero du jour du premier janvier
    	$num_jour_01janv=date("w",$timestamp01janv);
    	//timestamp du lundi precedent le premier janvier (=debut de la semine 1)
    	$timestamp_lundi_sem01=$timestamp01janv - (($num_jour_01janv - 1)*24*3600);
    	
    	//pour trouver la date du lundi de la semaine cherchée
    	$timestamp_lundi_sem_n=$timestamp_lundi_sem01 + (($sem-1)*7*24*3600);
    	$array_jours_sem_n['lundi']=$timestamp_lundi_sem_n;
    	$array_jours_sem_n['mardi']=$timestamp_lundi_sem_n + (24*3600);
    	$array_jours_sem_n['mercredi']=$timestamp_lundi_sem_n + (2*24*3600);
    	$array_jours_sem_n['jeudi']=$timestamp_lundi_sem_n + (3*24*3600);
    	$array_jours_sem_n['vendredi']=$timestamp_lundi_sem_n + (4*24*3600);
    	$array_jours_sem_n['samedi']=$timestamp_lundi_sem_n + (5*24*3600);
    	$array_jours_sem_n['dimanche']=$timestamp_lundi_sem_n + (6*24*3600);
    	
    	return $array_jours_sem_n;
    }
     ?>
     
     <form name="form1" method="post" action="">
     Numero de semaine:<input type="text" name="semaine" value=""><br />
     Ann&eacute;e:
     <select name="annee">
    	 <option value="2008">2008</option>
    	 <option value="2009">2009</option>
    	 <option value="2010">2010</option>
     </select>
     <br />
     <br />
     <br />
     <input type="submit" name="calculer" value="Calculer">
     </form>
     <?php
     if(isset($_POST['calculer'])){
    	 $semaine=$_POST['semaine'];
    	 if($semaine !=""){
    	 $annee=$_POST['annee'];
    	$array_sem = get_lundi_dimanche_from_week($semaine,$annee);
    	if(sizeof($array_sem)>0){
    		foreach($array_sem as $cle => $value){
    			echo $cle." ".date("d/m/Y",$value)."<br />";
    		
    		}
    
    	}
    	}else{ echo "Veuillez saisir un num&eacute;ro de semaine !";}
    }
    ?>
    0
    1. patrick
       
      merci pour ce script

      petite modification et le voic intégré dans mon prog
      0
    2. Testeur
       
      le script ci-dessus n'est pas correct. Merci de le tester avec la semaine 45 , 2011 et vous allez voir l'affichage de la semaine ...44 !
      0
    3. le père
       
      Ce script suppose que la semaine 1 commence le lundi qui précède le 1er janvier. C'est faux.
      La numérotation ISO des semaines appelle semaine 1 la semaine du premier jeudi de l'année
      http://fr.wikipedia.org/wiki/Num%C3%A9rotation_ISO_des_semaines
      La solution de davekgnight est plus simple et évite de réinventer la roue. C'est à lui qu'il faut mettre un +
      0
  3. Arkha
     
    Merci beaucoup l'ami :)

    Je vais m'y inspirer grandement :)
    0