[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 =)
A voir également:

3 réponses

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
Alain_42 Messages postés 5413 Statut Membre 894
 
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
patrick
 
merci pour ce script

petite modification et le voic intégré dans mon prog
0
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
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
Arkha
 
Merci beaucoup l'ami :)

Je vais m'y inspirer grandement :)
0