CALENDRIER PHP

DreamPush Messages postés 11 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 16 mars 2007 - 29 avril 2004 à 22:48
cs_nonopat Messages postés 3 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 3 mai 2006 - 29 mai 2006 à 11:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22390-calendrier-php

cs_nonopat Messages postés 3 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 3 mai 2006
29 mai 2006 à 11:53
Effectivement c'est ok pour nous également, merci beaucoup.
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
22 mai 2006 à 19:43
bonsoir et merci de signaler ce bug (car c'en est un )
la ligne 44 de la fonction :
@sort($evenement);
effectue un trie alphanumerique du tableau et la le 2 se retrouve appres le 15
dans le cas du mois de mai
la ligne corrigee devrait etre :
@sort($evenement,SORT_NUMERIC ); // pour garder l'ordre des chiffres

je vient de faire le test en local et cela semble ok
cs_nonopat Messages postés 3 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 3 mai 2006
22 mai 2006 à 16:17
Salut j'ai un petit probléme tout les lien ne s'affiche pas pourais ton m'aidé svp voici le code merci d'avance

Sujet : Re : Aide

Message :
Merci mille fois, voici le script :

<?php/* Date de création: 04/04/2006 */?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Calendrier du mois en cour , affichage simple </title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1">
<link rel="StyleSheet" href="ete.css" type="text/css">
</head>



<?php
/* pour limiter les donnes transmises, seul une valeur timestamp est utilisee */
if (!isset ($ref)) { $ref=time(); } // pour 1er affichage
if (isset($_GET["ref"])) { $ref=$_GET["ref"]; } // pour les suivants
$Mois=date("n",$ref); // important n => Mois sans les zéros initiaux
$Annee=date("Y",$ref); // Y pour l'annee en format long
// le calcul est reference sur un jour du mois(le 1er ici) si absent, erreurs possible
$prec= mktime (0,0,0,$Mois-1,1,$Annee); // calcul le mois precedent
$suivant= mktime (0,0,0,$Mois+1,1,$Annee); // calcul le mois suivant
$url= $_SERVER['PHP_SELF']; // faut bien faire tourner le compteur

$evenement = array ( // le tableau des liens tries dans l'ordre des dates
1 => array(
0=>"1,../evenement/janvier/1/1janvier.php,BONNE ANNEE", // date, page, infos
1=>"2,../evenement/janvier/2/2janvier.php,BONNE ANNEE",
2=>"3,../evenement/janvier/3/3janvier.php,BONNE ANNEE",
3=>"4,../evenement/janvier/4/4janvier.php,BONNE ANNEE", // date, page
4=>"5,../evenement/janvier/5/5janvier.php,BONNE ANNEE", // date, page default, halt
5=>"6,../evenement/janvier/6/6janvier.php,BONNE ANNEE",
6=>"7,../evenement/janvier/7/7janvier.php,BONNE ANNEE",
7=>"8,../evenement/janvier/8/8janvier.php,BONNE ANNEE",
8=>"9,../evenement/janvier/9/9janvier.php,BONNE ANNEE",
9=>"10,../evenement/janvier/10/10janvier.php,BONNE ANNEE",
10=>"11,../evenement/janvier/11/11janvier.php,BONNE ANNEE",
11=>"12,../evenement/janvier/12/12janvier.php,BONNE ANNEE",
12=>"13,../evenement/janvier/13/13janvier.php,BONNE ANNEE",
13=>"14,../evenement/janvier/14/14janvier.php,BONNE ANNEE",
14=>"15,../evenement/janvier/15/15janvier.php,BONNE ANNEE",
15=>"16,../evenement/janvier/16/16janvier.php,BONNE ANNEE",
16=>"17,../evenement/janvier/17/17janvier.php,BONNE ANNEE",
17=>"18,../evenement/janvier/18/18janvier.php,BONNE ANNEE",
18=>"19,../evenement/janvier/19/19janvier.php,BONNE ANNEE",
19=>"20,../evenement/janvier/20/20janvier.php,BONNE ANNEE",
20=>"21,../evenement/janvier/21/21janvier.php,BONNE ANNEE",
21=>"22,../evenement/janvier/22/22janvier.php,BONNE ANNEE",
22=>"23,../evenement/janvier/23/23janvier.php,BONNE ANNEE",
23=>"24,../evenement/janvier/24/25janvier.php,BONNE ANNEE",
24=>"25,../evenement/janvier/25/25janvier.php,BONNE ANNEE",
25=>"26,../evenement/janvier/26/26janvier.php,BONNE ANNEE",
26=>"27,../evenement/janvier/27/27janvier.php,BONNE ANNEE",
27=>"28,../evenement/janvier/28/28janvier.php,BONNE ANNEE",
28=>"29,../evenement/janvier/29/29janvier.php,BONNE ANNEE",
29=>"30,../evenement/janvier/30/30janvier.php,BONNE ANNEE",
30=>"31,../evenement/janvier/31/31janvier.php,BONNE ANNEE"),

2 => array(
0=>"1,../evenement/fevrier/1/1fevrier.php,Les événements de ce jour",
1=>"2,../evenement/fevrier/2/2fevrier.php,Les événements de ce jour",
3=>"14,../evenement/evrier/14/14fevrier.php,Bonne saint Valentin",
4=>"18,../evenement/fevrier/18/18fevrier.php,Joyeux nouvel an Chinois"),
3 => array(),
4 => array(),
5 => array(
0=>"1,../evenement/mai/1/1mai.php,Les événements de ce jour",
1=>"2,../evenement/mai/2/2mai.php,Les événements de ce jour",
2=>"3,../evenement/mai/3/3mai.php,Les événements de ce jour",
3=>"4,../evenement/mai/2/2mai.php,Les événements de ce jour",
4=>"5,../evenement/mai/2/2mai.php,Les événements de ce jour",
5=>"6,../evenement/mai/2/2mai.php,Les événements de ce jour",
6=>"7,../evenement/mai/2/2mai.php,Les événements de ce jour",
7=>"8,../evenement/mai/8/8mai.php,Les événements de ce jour",
8=>"12,../evenement/mai/12/12mai.php,Les événements de ce jour",
9=>"13,../evenement/mai/13/13mai.php,Les événements de ce jour",
10=>"14,../evenement/mai/14/14mai.php,Les événements de ce jour",
11=>"15,../evenement/mai/15/15mai.php,Les événements de ce jour"),
6 => array(),
7 => array(),
8 => array(),
9 => array(),
10 => array(0=>"28,../evenement/octobre/28/28octobre.php,Les événements de ce jour"),
11 => array(),
12 => array()
);
?>
<NOBR>
[<?php print $url. ">]

[<?php print $url;?> ]

[<?php print $url. ">]
</NOBR>


<?php
include ("AfficheCalendrier.php"); // charger la fonction
AfficheCalendrier(0,$Mois,$Annee,$evenement[$Mois],$_SERVER['PHP_SELF'],0); // affiche le calendrier
?>



</html>
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
4 févr. 2006 à 17:11
bonjour a tous .
si quelqu'un se proposait de traduire le fichier doc,
cela serait tres utiles a tous ; le script est populaire meme a l'etranger.
merci d'avance
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
30 avril 2005 à 08:28
je te propose de prendre contact par la :
http://hrz.free.fr/forum/index.php
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
29 avril 2005 à 20:02
oui le probleme j'avé pas vu la variable sur la fonction donc j'ai reglé ca merci quand meme ;-)

ta msn ???
je tente de developper un truc en parallele de ton calendrier....

et ouais ca serait classe une option qui fasse ca
ton mois d'aout commence le dimanche et les jours avant au lieu de rien afficher on affiche le mois precedent... et pareil pour la fin de mois....

voila c une idee.
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
29 avril 2005 à 19:39
c'est une idee / option
a voir donc !
utilise comme sur la demo ce n'est pas tres pertinant mais si c'est pour afficher un mois unique c'est loin d'etre anacronique.

pour ce qui est de ton prob de faire debuter le lundi
tu as du neuf la dessus ?
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
29 avril 2005 à 16:50
il te manque un truc
qui serait bien dans ton calendrier c'est une option qui rajouterait les jour du mois precendant que le mois en cours commence en fin de semaine par exemple !

et pareil pour le mois suivant
tu vois ce que je veux dire ???
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
26 avril 2005 à 20:53
salut
precise un peu ,je vient de verifier en local et je n'est pas eu le prob.

dans le fichier index.php du zip ,c'est sur la ligne d'appel de la fonction qu'il faut changer
0 pour dimanche
1 pour lundi

en fait tout autre valeur que 1 demare l'affichage le dimanche

dans l'exemple ,la ligne devient :
AfficheCalendrier(1,$MoisEncour,$Annee,$evenement[$MoisEncour],$Page);

est ce bien la version 1.4 que tu a telecharger sur:
http://hrz.free.fr/calendrier/archives/AfficheCalendrier-1.4.zip

ou alors j'ai fait une erreur dans le zip mais tu est le 1er a signaler
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
26 avril 2005 à 02:22
c fou
depuis la nouvelle version impossible de faire commencer la semaine un lundi kelkun c faire ?
orangepix Messages postés 2 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 19 mars 2005
19 mars 2005 à 11:55
Désolé c'est pas la bonne source
orangepix Messages postés 2 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 19 mars 2005
19 mars 2005 à 11:48
Bonjour

j'ai apporté une modification toute simple

if (!$_GET ['dt']){

$year = date("Y");
$now = date("Y/m/d");
$month = date("m");
$day = date("d");
}

else{
$data=explode(" ",$_GET ['dt']);
$year=$data[0];
$month=$data[1];
$day=$data[2];
$now=date("Y/m/d", mktime(0,0,0,$month,$day,$year));
}

ça permet de passer la variable $dt si register_global est off

a+
WinterMute Messages postés 1 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 16 mars 2005
16 mars 2005 à 13:13
J'ai aussi eu le bug d'affichage des lignes vides (pas grave) et un autre plus gênant : certains mois de 31 jours qui n'en comptaient plus que 30.
J'ai résolu le pb en remplaçant à la fin du script :
if ($NoJour >= $JourMax){ $semaine ++; }
par :
if ($NoJour > $JourMax){ $semaine ++; }
le "=" qui change tout ;-)

En tout cas merci pour ce sript qui m'a bien rendu service !
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
3 févr. 2005 à 18:54
la version 1.4 est dispo sur site pour des test

elle reste compatible avec la precedente et elle doit permettre de s'afranchir du @ devant (pour les message d'erreurs )
mais surtout elle doit permetre des passer des parametre avec le lien transmis a la fonction et aussi de ne passer qu'une parties des parametres sans passer les precedents

je cherche a la prendre en default avant de la poster ici
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
7 nov. 2004 à 12:05
modifier les dernieres ligne en :

print "</TD>\n"; // journee suivante
}
if ($NoJour >= $JourMax){ $semaine ++; } // on echappe la derniere ligne si vide
print " </TR>\n"; // semaine suivante
}
print "</TABLE>\n"; // le mois est affiche
}

ici j'utilise un $Semaine ++ un simple break ne convient pas
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
7 nov. 2004 à 11:36
changer au debut du script la ligne
if ($NoJour >0 && $Aff ==1) { $NoJour -=7;} // on s'assure du debut de l'affichage a la 1ere ligne du tableau
en
if ($NoJour >1 && $Aff ==1) { $NoJour -=7;} // on s'assure du debut de l'affichage a la 1ere ligne du tableau

restera une ligne vide en bas du tableau pour certains mois
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
7 nov. 2004 à 11:26
pour le formatage de l'affichage voir le manuel php rubrique :
sprintf

(PHP 3, PHP 4 )
sprintf -- Retourne une chaîne formattée
Description
string sprintf ( string format [, mixed args])

pour la ligne vide quand le mois commence un lundi
un petit bug j'avais pas vue lol
est ce un reel probleme ?
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
5 nov. 2004 à 19:41
Derniere question comment faire pour avoir les jour avec les ZERO devant (01,02,03....) pareil pour les mois !!!!???

ca fait bcp de question mais la je galere serieusement !
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
5 nov. 2004 à 19:25
pkoi pour les mois qui comment un LUNDI, il y a une ligne qui ne sert a rien au dessus (entre les jour et le debut du mois ????????)

merci la c une vrai question
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
5 nov. 2004 à 12:53
ok merci g trouvé merci lol dsl
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
5 nov. 2004 à 12:51
comment faire pour faire debuter la semaine un LUNDI car la elle commence un dimanche merci :-)
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
13 juil. 2004 à 18:50
une mise a jour qui repond aussi a mo.kain
mo.kain Messages postés 22 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 4 octobre 2005
7 juil. 2004 à 10:17
Salut à tous !

Je n'ai pas fait un super post pour proposer ma modif la derniere fois !

L'idée était d'avoir des liens différents chaque mois, avec un minimum de modif sur le script d'origine...

Pour le tableau de tableaux c'est à peut près claire...
Pour le traitement, je pensais utiliser un table MySQL en utilisant les parametres : NoJour=$NoJour&Mois=$Mois&Annee=$Annee
ce qui laisse pas mal de marge pour le coté "universel" du script !

Voilà !

Maintenant, je n'utilise ce script que pour afficher l'année entière...

Vraiment pratique ce script !!! merci !
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
6 juil. 2004 à 21:06
si le mois est demande alors utiliser celui ci
sinon prendre le mois en cour

bon d'accord ca manque de panache mais ca ma permis de faire qq controles en passant
et je ne me suis pas poser la question de savoir le contraire de isset ()
:(
pgpp Messages postés 58 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 2 septembre 2004
6 juil. 2004 à 11:13
Juste un ptit détail... qui m'a quand même surpris (j'ai jamais vu ça) :
Au lieu d'écrire :
if (isset($Mois)) {}else{$Mois=date("n" );}
Pourquoi n'écris-tu pas :
if (!isset($Mois)) $Mois=date("n" );

Je trouve ça plus... logique, non ?
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
3 juil. 2004 à 16:18
desole pour la modif elle est bonne en elle meme mais je ne la passe pas sur le zip :
1 elle concerne plus specialement le script test (exemple pour afficher une annee voir ci dessus)
2 la modif dans la fonction rend celle ci - passe partout voir plus du tout (j'ai d'autre utilisation perso avec celle ci et ca ne marche pas avec )
3 =".PATH_MODULES_CALENDRIER." est en fait gerer dirrectement dans la version 1.1 en telechargement avec la variable $Page

mon idee est de traiter les mois un par un avec un passage des evenement pour chaque

bien que moin universelle ton idee reste bonne pour le script exemple :)
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
30 juin 2004 à 17:45
bien vue pour l'idee de passe un tableau de tableaux :) ,j'avais pas chercher dans ce sens la ,mon idee etait de traite les mois un par un et dans le script exemple j'ai utilise toujours le meme tableau de liens .
bien vue tu passe tout dans la meme boucle et simplifie le code par la meme pour les affichages de plusieurs mois.
pour la 2eme partie de la modif c'est moin clair ,a quel niveaux tu la fait (j'ai pas encore fait les tests ) je pense dans la partie fonction ?
explique un peut plus stp
avant que je l'inclu dans le zip
mo.kain Messages postés 22 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 4 octobre 2005
28 juin 2004 à 08:46
Bonjour,
j'ai apporté une petite amélioration sur les liens externes de ton script.

La modif du code permet de préciser des dates différentes pour chaque mois....

C'est pas grand chose mais c'est super pratique !

Donc :

$evenement = array (
1 => array(1,2,4,12),
2 => array(1,2,3,27),
3 => array(5),
4 => array(8,12,15,16),
5 => array(5,7,9,13,16,18,22),
6 => array(2,5,9,12,25),
7 => array(8,12),
8 => array(15,21,25,29),
9 => array(1,5,9),
10 => array(6,10),
11 => array(25),
12 => array(13,15,19)
);

et :

if (isset($evenement[$Mois][$Liens]) && $NoJour >0 && $NoJour == $evenement[$Mois][$Liens]){
echo "[.$PHP_SELF. ".$NoJour."]"; // s'il existe afficher le liens
$Liens++; // incrementer le tableau des liens
}else{
print "$NoJour";
}

Voila !
J'espere que c'est claire... c'est la première fois que je poste un truc sur ce site !!!

Bonne journée à tous
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
2 mai 2004 à 13:38
cs_hrz Messages postés 43 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 4 avril 2010
30 avril 2004 à 17:15
a jeff
effectivement c'etait une solution javais pas eus ton msg avant ma 1ere maj mais ce n'est pas celle que j'ais retenue

a DreamPush
voila c'est fait

a tous
je prevoit de faire varier l'aspect et l'affichage
cs_jeff Messages postés 18 Date d'inscription mercredi 10 octobre 2001 Statut Membre Dernière intervention 1 avril 2005
30 avril 2004 à 11:22
pour les liens externes, il te suffit de les mettre dans un tableau $evenement($liens)
DreamPush Messages postés 11 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 16 mars 2007
29 avril 2004 à 22:48
J'attends ce que tu nous promet concernant les liens externes, ça pourrait alors TB...

Bon coding

[}:)] DreamPush [}:)]
Rejoignez-nous