CALENDRIER ULTRA SIMPLE ET PERSONNALISABLE

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 20 sept. 2007 à 23:02
murof15 Messages postés 1 Date d'inscription samedi 20 octobre 2012 Statut Membre Dernière intervention 20 octobre 2012 - 20 oct. 2012 à 14:49
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/44133-calendrier-ultra-simple-et-personnalisable

murof15 Messages postés 1 Date d'inscription samedi 20 octobre 2012 Statut Membre Dernière intervention 20 octobre 2012
20 oct. 2012 à 14:49
Bonjour,

Je viens de télécharger et installer le script, mais chez moi il ne fait qu'afficher un calendrier et impossible de sélectionner une date.
Si cela est possible (ce que j'éspère) qu'est-ce que j'ai raté.

Merci.
timoute Messages postés 1 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 31 juillet 2009
31 juil. 2009 à 11:27
Bonjours à tous
Je suis débutant et donc j’apprends petit à petit
Mais j'ai une petite question:
Tu n'utilise pas une base de données?
Si tu en utilise pourrais-tu ajouter dans le zip le fichier .SQL
Ce serai génial et sa m'aiderai à comprendre
Merci beaucoup theplayer777
aevan Messages postés 1 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 22 mai 2009
22 mai 2009 à 17:18
Je ne comprends pas cette ligne :

jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);

On utilise la fonction cal_to_jd qui convertit un calendrier en nombre de jours Julien en prenant comme premier paramètre l'une des constantes suivantes : CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH ou CAL_FRENCH.

Dans le code ci-dessus on rajoute un '$' ce qui veut dire que c'est une variable qui est envoyée et non plus une constante. Le plus étrange c'est que ça passe niquel en exécutant le fichier "index.php" fourni dans le pack mais dès lors qu'on cherche à implémenter la fonction calendrier() ailleurs dans nos pages on se retrouve avec un joli "Notice: Undefined variable: CAL_FRENCH in /Users/xxxx/Sites/calendrier/calendrier.php on line xx", ce qui est logique finalement. Car j'ai beau chercher dans tous les fichiers du pack, je ne trouve aucun endroit ou $CAL_FRENCH a été définie. Et si, dans index.php vous la remplacez par $cequevousvoulez ça passe toujours aussi bien...

Cerise sur le gâteau, en enlevant le $ à CAL_FRENCH et en passant donc la constante (au lieu de la variable) en premier paramètre de la fonction cal_to_jd(), le calendrier ne calcule plus bien les jours du mois précédant celui affiché.

J'ai finalement résolu le problème en passant CAL_GREGORIAN à la fonction cal_to_jd(), sachant que de nos jours le calendrier Julien a été abandonné depuis belle lurette et qu'on est en grégorien. À priori ça fonctionne, mais j'apprécierai que l'auteur du script le vérifie par lui-même... Voilà, j'espère avoir été assez clair :).

Merci :D
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
24 févr. 2009 à 00:17
@cheznounours: Merci pour votre commentaire, ça fait toujours plaisir ;)

@lam55: mettez un $ devant CALL_FRENCH et cela devrait régler le problème.

@bourricot17: Il y aurait certainement un moyen de faire cela mais il faudrait y passer un peu de temps... temps que je n'ai malheureusement pas vraiment ces temps (je suis aux études) mais envoyez-moi un mail avec quelques précisions et je verrai ce que je peux faire
lam55 Messages postés 2 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 24 février 2009
24 févr. 2009 à 00:17
wéé j'ai réussi à le faire integrer , merci beaucouuuuup
davi-domo Messages postés 17 Date d'inscription dimanche 23 octobre 2005 Statut Membre Dernière intervention 23 novembre 2014
23 févr. 2009 à 23:02
bonjour,

vraiment simple a utiliser
très bon descriptif

10/10
lam55 Messages postés 2 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 24 février 2009
18 févr. 2009 à 19:08
commznt reglez cette erreur svp
merci d'avance
Notice: Undefined variable: CALL_FRENCH
Utilisateur anonyme
3 déc. 2008 à 22:22
Bonjour,
Je suis vraiment novice en php, je trouve votre calendrier sympa et simple à mettre en œuvre, mais y aurait-il un complément de code qui permettrait de changer les couleurs de jours ou semaines particulières: indication de périodes réservées pour un hôtel ou gite par exemple?
Merci d'avance pour vos infos!
cs_tidave Messages postés 18 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 16 juin 2009
8 juil. 2008 à 17:04
Salut;
Ok merci, j'avais fini par faire le mien.
JE voudrais ajouter un peu d'ajax pour animer tout ça,
Exemple quand on change de mois , ici la page se recharge, je bosse sur un truc pour eviter ça. La gestion de rendez-vous et d'évenements sera aussi intégré.
A bientôt
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
8 juil. 2008 à 15:32
et bien, par exemple, tu remplace cette ligne dans calendrier.php:

$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);

par celle-ci:

$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0)+1;

ce qui aura pour effet de décaler les dates d'un jour... ensuite, dans config.php,
tu modifie cette partie:

$jours = array();
$jours[1] = "Lu";
$jours[2] = "Ma";
$jours[3] = "Me";
$jours[4] = "Je";
$jours[5] = "Ve";
$jours[6] = "Sa";
$jours[7] = "Di";

pour que ta semaine commence par dimanche, ça ferait comme ça:

$jours = array();
$jours[1] = "Di";
$jours[2] = "Lu";
$jours[3] = "Ma";
$jours[4] = "Me";
$jours[5] = "Je";
$jours[6] = "Ve";
$jours[7] = "Sa";

et le tour est joué... si tu n'a pas compris ou que tu as un problème redis-moi ;)
cs_tidave Messages postés 18 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 16 juin 2009
26 juin 2008 à 13:22
Bonjour,
OK, mais je fais ça comment , décaler l'ordre de la formule ?

Merci d'avance pour les reponses
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
26 juin 2008 à 09:55
Normalement en décalant d'un jour la formule tu devrais pouvoir t'en sortir sans trop de problème, et en changeant l'ordre des jours en haut...
cs_tidave Messages postés 18 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 16 juin 2009
26 juin 2008 à 01:46
SAlut à tous !
Comment faire pour commencer le calendrier à Dimanche , si c'est possible .
Le code à l'air ok ! et assez simple, à bidouiller facilement

A bientôt
LegGohan Messages postés 199 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 2 août 2017
27 mai 2008 à 15:58
Super code, je me suis plong? dedans et je l'ai un peu bidouiller ^^.
J'ai vu que si on avance les mois pour arriver ? l'annee suivante, on a quand m?me le jour colori?. Je m'explique, le 27 mai 2008, 27 mai 2009 ou bien 27 mai 2002 sont tous colori?.
Je pense donc qu'il faut modifier la condition en ajoutant l'ann'e:
if($jour date("d") && $m date("n") && $a == date("Y")){
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
2 oct. 2007 à 10:30
> PS : les accolades { } ne sont pas obligatoire sur les conditions lorsque qu'une seule action est faite. :)

Bien sur mais si tu n'en veux pas personnelement au pauvre gars qui va maintenir ton code, c'est quand meme plus sympa de toujours les mettre :o)

Si tu veux vraiment rester sur une ligne, tu as ca:

$m = (isset($_GET['m']) && $_GET['m']!='') ? $_GET['m'] : $m_donne;

Encore que pour rendre le code plus lisible, le mieux est de mettre tout ca dans une fonction genre:

function GetParam($szVar,$szDefault = false)
{
return (isset($_GET[szVar]) && $_GET[szVar]!='') ? $_GET[szVar] : $szDefault ;
}

Eric
cs_Marshall_Mathers Messages postés 56 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 30 novembre 2007
1 oct. 2007 à 19:49
C'est pas mieux ca :

# if ( isset($_GET['m']) && $_GET['m'] != '') $m = $_GET['m']; else $m = $m_donne;
# if ( isset($_GET['a']) && $_GET['a'] != '') $a = $_GET['a']; else $a = $a_donne;

que ca : ?

# $m = $_GET['m'];
# $a = $_GET['a'];
## if ($m "") { $m $m_donne; }# if ($a "") { $a $a_donne; }

PS : les accolades { } ne sont pas obligatoire sur les conditions lorsque qu'une seule action est faite. :)
cs_Marshall_Mathers Messages postés 56 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 30 novembre 2007
27 sept. 2007 à 07:23
Vraiment beau code,

Enfin j'n'ai pas encore analysé le code, mais ca m'a l'air assez bien !

:)
t_jay Messages postés 2 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 26 septembre 2007
26 sept. 2007 à 19:03
Oups!!! le boulet que je suis!!!

Parti une démarche purement technique, j'ai perdu de vue l'aspect pratique.

Il est clair que la grande majorité des utilisations dépasse rarement les 2 siècles (voire largement moins).

J'aurais du réfléchir avant de poster

Toutes mes excuses donc.

Pour le reste, le code est au poil. Modifiable à souhait et très efficace.

Bravo et merci.
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
26 sept. 2007 à 14:24
Pour les annees bissextiles, T_JAY a raison, mais dans la pratique, la "regle du %4" fonctionne tres bien entre 1901 et 2099.

[Begin remarque off-topic]
Ca m'a toujours fait marrer de voir des gens se prendre la tete a implementer la fonction "complete" en C alors qu'ils utilisaient derriere des time_t permettant de representer des dates uniquement comprises entre 1970 et 2038 :o)
[End remarque off-topic]

Sinon ton code est tres clair et le resultat tres esthetique.
Bravo!

Eric
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 sept. 2007 à 14:09
Hello,

plutôt que de faire des formules avec d'innombrables exceptions, tu devraiyt plutôt utiliser les fonctions dates toutes faites de php pour parvenir avec certitude au bon résultat.
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
26 sept. 2007 à 08:54
Salut,

Merci pour cette précision je n'étais pas au courant de cette règle... Dès que j'y arriverai (en effet j'ai essayé hier de mettre à jour ma source mais impossible ça ne fonctionnait pas!) je rajouterai ça dans mon code.

Merci encore!
t_jay Messages postés 2 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 26 septembre 2007
25 sept. 2007 à 11:41
Bonjour,

sympa ton calendrier, c'est exactement ce que je cherchais.

Toutefois, il me semble que tu as fais une erreur sur le calcul des années bissextiles.

Règles sur les années bissextiles:
- Les années divisibles par 4 sont bissextiles, pas les autres.
- Exception: les années divisibles par 100 ne sont pas bissextiles.
- Exception à l'exception: les années divisibles par 400 sont bissextiles.

En conséquence, il me semble qu'il faudrait modifier ton code de la façon suivante:

if ( $a%400==0 || ( $a%4==0 && $a%100!=0 ) ) {
$nbrjour = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}else{
$nbrjour = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}

Merci beaucoup pour ce code en tout cas.

Jérôme
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
24 sept. 2007 à 09:01
plus... rigoureusement tu dis? Je vois pas exactement ce que tu veux que je te dise mais disons que je cherchais un calendrier tout simple que je puisse modifier à volonté et comme je ne suis pas un pro du PHP j'ai trouvé que la plupart des codes que j'avais vu étaient assez complexes alors j'en ai fais un moi-même avec du code plus basic (pour autant qu'on connaisse un minimum le php bien entendu) et avec des styles CSS pour pouvoir personnaliser facilement les couleurs et tailles des éléments du calendrier (texte,tableau,...) Voilà ;)
V4mp Messages postés 21 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 30 septembre 2007
22 sept. 2007 à 10:34
Euh, ça a l'air prometteur mais explique nous plus rigoureusement enfin j'aimerais bien :p !
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
21 sept. 2007 à 12:06
Merci, me voilà moins...
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 11:57
Google -> Yahoo User Interface
A connaître d'urgence.
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
21 sept. 2007 à 10:49
Evangun, un lien ?
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 10:14
D'accord, merci.
Bon, ce n'est pas pour diminuer ton mérite du tout, mais je dois dire à tous ceux qui cherchent un calendrier d'aller voir aussi les librairies Yahoo (YUI), il y a des scripts vraiment très bien foutus, calendriers cliquables et tout.
theplayer777 Messages postés 27 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 9 avril 2008 2
21 sept. 2007 à 00:09
Oui C'est en fait un calendrier tout simple qui affiche le mois en cours avec la date du jour dans une couleur différente. On peut aussi passer de mois en mois dans le passé et le futur. Ce qui est bien c'est qu'il est facilement utilisable et personnalisable même pour des débutants.
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
20 sept. 2007 à 23:02
Bonjour,

est-ce que tu pourrais détailler les fonctions de ton calendrier stp ?
Histoire de ne pas avoir à analyser la source pour savoir pourquoi je devrais l'utiliser.
Merci
Rejoignez-nous