[PhP] Parcourir des dates
Résolu/Fermé
kaopimp
Messages postés
44
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
8 juillet 2008
-
25 juin 2007 à 10:58
kaopimp Messages postés 44 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 8 juillet 2008 - 25 juin 2007 à 16:18
kaopimp Messages postés 44 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 8 juillet 2008 - 25 juin 2007 à 16:18
A voir également:
- [PhP] Parcourir des dates
- Easy php - Télécharger - Divers Web & Internet
- Excel compris entre deux dates ✓ - Forum Excel
- Calcul nombre de nuits entre deux dates excel ✓ - Forum Excel
- Bouton php - Forum PHP
- Alignez la date à droite. alignez "monsieur le directeur” à gauche. alignez des deux côtés le texte du courrier. ✓ - Forum Word
5 réponses
J'ai trouvé ça dans mes archives est ce que tu peux t'en servir ?
un petit script pour générer un calendrier en PHP et le mettre en page en CSS.
Présentation
Dans mon exemple j'ai séparé le code en un fichier index principal et trois fichiers à inclure (string.inc.php, calendrier.inc, calendrier.css). Le calendrier généré ne contient pas de tableau mais une liste d'éléments.
string.inc.php contient des fonctions de gestion de chaines:
// fonctions utiles, $valeur représente une date au format AAAA-MM-JJ
function getSecond($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getHour($valeur) {
return substr($valeur, 11, 2);
}
function getDay($valeur) {
return substr($valeur, 8, 2);
}
function getMonth($valeur) {
return substr($valeur, 5, 2);
}
function getYear($valeur) {
return substr($valeur, 0, 4);
}
function monthNumToName($mois) {
$tableau = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
}
calendrier.inc.php, contient le script générant le calendrier:
// Fonction pour afficher le calendrier
function showCalendar($periode) {
$leCalendrier = "";
// Tableau des valeurs possibles pour un numéro de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
$pas = 0;
$indexe = 1;
// Affichage du mois et de l'année
$leCalendrier .= "\n\t<h2>» " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2>";
// Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li>L</li>
\t<li>M</li>
\t<li>M</li>
\t<li>J</li>
\t<li>V</li>
\t<li>S</li>
\t<li>D</li>
</ul>";
// Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) {
if ($indexe == 1) $leCalendrier .= "\n\t<ul class=\"ligne\">";
// Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
// Si jour calendrier == aujourd'hui
$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem\"";
}
else {
// 1 est toujours vrai => on affiche un lien à chaque fois
// A vous de faire les tests nécessaire si vous gérer un agenda par exemple
if (1) {
$class = " class=\"itemExistingItem\"";
$afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>";
}
else {
$class = "";
}
}
// Ajout de la case avec la date
$leCalendrier .= "\n\t\t<li$class>$afficheJour</li>";
$pas++;
}
//
else {
// Ajout d'une case vide
$leCalendrier .= "\n\t\t<li> </li>";
}
if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
}
// Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) {
$leCalendrier .= "\n\t\t<li> </li>";
}
$leCalendrier .= "\n\t</ul>\n";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
Utilisation
Il suffit d'appeler la fonction showCalendar() en passant en paramètre le mois et l'année sous la forme YYYY-MM.
Pour le mois en cours:
echo showCalendar(date("Y-m"));
un petit script pour générer un calendrier en PHP et le mettre en page en CSS.
Présentation
Dans mon exemple j'ai séparé le code en un fichier index principal et trois fichiers à inclure (string.inc.php, calendrier.inc, calendrier.css). Le calendrier généré ne contient pas de tableau mais une liste d'éléments.
string.inc.php contient des fonctions de gestion de chaines:
// fonctions utiles, $valeur représente une date au format AAAA-MM-JJ
function getSecond($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getHour($valeur) {
return substr($valeur, 11, 2);
}
function getDay($valeur) {
return substr($valeur, 8, 2);
}
function getMonth($valeur) {
return substr($valeur, 5, 2);
}
function getYear($valeur) {
return substr($valeur, 0, 4);
}
function monthNumToName($mois) {
$tableau = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
}
calendrier.inc.php, contient le script générant le calendrier:
// Fonction pour afficher le calendrier
function showCalendar($periode) {
$leCalendrier = "";
// Tableau des valeurs possibles pour un numéro de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
$pas = 0;
$indexe = 1;
// Affichage du mois et de l'année
$leCalendrier .= "\n\t<h2>» " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2>";
// Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li>L</li>
\t<li>M</li>
\t<li>M</li>
\t<li>J</li>
\t<li>V</li>
\t<li>S</li>
\t<li>D</li>
</ul>";
// Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) {
if ($indexe == 1) $leCalendrier .= "\n\t<ul class=\"ligne\">";
// Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
// Si jour calendrier == aujourd'hui
$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
$class = " class=\"itemCurrentItem\"";
}
else {
// 1 est toujours vrai => on affiche un lien à chaque fois
// A vous de faire les tests nécessaire si vous gérer un agenda par exemple
if (1) {
$class = " class=\"itemExistingItem\"";
$afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>";
}
else {
$class = "";
}
}
// Ajout de la case avec la date
$leCalendrier .= "\n\t\t<li$class>$afficheJour</li>";
$pas++;
}
//
else {
// Ajout d'une case vide
$leCalendrier .= "\n\t\t<li> </li>";
}
if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
}
// Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) {
$leCalendrier .= "\n\t\t<li> </li>";
}
$leCalendrier .= "\n\t</ul>\n";
// Retour de la chaine contenant le Calendrier
return $leCalendrier;
}
Utilisation
Il suffit d'appeler la fonction showCalendar() en passant en paramètre le mois et l'année sous la forme YYYY-MM.
Pour le mois en cours:
echo showCalendar(date("Y-m"));
Utilisateur anonyme
25 juin 2007 à 11:12
25 juin 2007 à 11:12
Salut,
Des solutions sont données ici :
https://codes-sources.commentcamarche.net/
Des solutions sont données ici :
https://codes-sources.commentcamarche.net/
kaopimp
Messages postés
44
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
8 juillet 2008
35
25 juin 2007 à 11:30
25 juin 2007 à 11:30
merci ca m'avance deja un ptit peu, mais en fait j'explique mon probleme
il s'agit d'afficher dans un calendrier (deja cree), les periode d'absences, et donc de parcourir les jours pour afficher dans le calandrier 'abs' (tout ca est deja gerer) et de compter donc ses jours mais en n'affichant pas les dimanche et samedi et en ne les comptant pas. pour le moment je fais tout ca a la main.
en fait j'ai avance, ce qu'il me faudrait c'est de connaitre le jour d'une date donnée, mais aussi connaitre la longueur (28 ou 30 ou31) du mois selon l'année.
il s'agit d'afficher dans un calendrier (deja cree), les periode d'absences, et donc de parcourir les jours pour afficher dans le calandrier 'abs' (tout ca est deja gerer) et de compter donc ses jours mais en n'affichant pas les dimanche et samedi et en ne les comptant pas. pour le moment je fais tout ca a la main.
en fait j'ai avance, ce qu'il me faudrait c'est de connaitre le jour d'une date donnée, mais aussi connaitre la longueur (28 ou 30 ou31) du mois selon l'année.
kaopimp
Messages postés
44
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
8 juillet 2008
35
25 juin 2007 à 14:05
25 juin 2007 à 14:05
ba voila j'ai trouve donc je poste pour qu'elqun qui aurait le meme problem que moi, ya la gestion des années bissextiles, et ca permet de savoir quel jour de la semaine correspond la date passe en parametre.
http://www.codyx.org/snippet_determiner-jour-semaine-date_255_l_php_10.aspx
je rajoute pour etre complet comment obtenir le jour, le mois, et l'année a partir du format AAAA-MM-JJ
$date = $_POST['date'];
$dtemp = explode("-",$date);
$jour = $dtemp[2];
$mois =$dtemp[1];
$annee = $dtemp[0];
$j = getday($jour,$mois,$annee);
et voila $j prend des valeurs de 0 a 6, attention 0= lundi 6= dimanche !!
http://www.codyx.org/snippet_determiner-jour-semaine-date_255_l_php_10.aspx
je rajoute pour etre complet comment obtenir le jour, le mois, et l'année a partir du format AAAA-MM-JJ
$date = $_POST['date'];
$dtemp = explode("-",$date);
$jour = $dtemp[2];
$mois =$dtemp[1];
$annee = $dtemp[0];
$j = getday($jour,$mois,$annee);
et voila $j prend des valeurs de 0 a 6, attention 0= lundi 6= dimanche !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kaopimp
Messages postés
44
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
8 juillet 2008
35
25 juin 2007 à 16:18
25 juin 2007 à 16:18
merci ca je comptai le faire a la main mais tu m'as drolement facilite le travail