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

Fermé
Arkha - 22 juin 2009 à 10:27
 le père - 9 nov. 2011 à 11:06
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 199 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 22 avril 2011 32
25 mars 2011 à 15:30
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 juin 2009 à 11:14
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
merci pour ce script

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

Je vais m'y inspirer grandement :)
0