Calendrier

Soyez le premier à donner votre avis sur cette source.

Vue 9 114 fois - Téléchargée 1 296 fois

Description

Salut, tout le monde voilà j'ai créer ce petit calendrier totalement paramétrable on peut même ajouter des lien sur les jour .. bref en fait comme vous le constater ce code est très long et si quelqu'un peut m'aide à l'optimisé (diminué le nombre de ligne de code il y en a plus de 1000 ligne)

bon allé merci :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

007Julien
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
Une omission dans le code précédent, il faut revenir à un mois effectif ($mo compris entre 1 et 12 avec correction de l'année) avant de construire le tableau.
Insérer alors la ligne suivante après la définition de $jo ou de $jz :
$an=date('Y',$jo);$mo=date('n',$jo);
007Julien
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
Les plus paresseux sont les meilleurs en programmation, avec quelques boucles et cogitations ils évitent bien des répétitions !

Voici une variante commentée en moins de 50 lignes (et 2Ko au lieu de 27).

<style>
td {font-size:11px;vertical-align:middle;text-align:center;background:#b9b9b9;font-weight:900;color:#fff;}
td a {text-decoration:none;color:#fff;font-weight:900;}
</style>
<?php
// sortir les accents en précisant le charset
header("Content-Type: text/html; charset=utf-8");
// Initialisation et nom du fichier qui pourra être renommé sans autre intervention
$ms=explode('|','Janvier|Février|Mars|Avril|Mai|Juin|Juillet|Août|Septembre|Octobre|Novembre|Décembre');
$slf=basename($_SERVER['PHP_SELF']);

// Les années, mois et jours d'ouverture de la page
$an=date('Y');$mo=date('n');$jr=date('j');

// à modifier si nécessaire
if (!empty($_GET) && isset($_GET["a"])&& isset($_GET["m"])) {
$an=$_GET["a"];$mo=$_GET["m"];}

// le premier jour du mois et la colonne correspondante (à partir de 0 pour le lundi)
$jo=mktime(0,0,0,$mo,1,$an);$co=(date('w',$jo)+6)%7;
// le dernier jour du mois et la durée du mois
$jz=mktime(0,0,0,$mo+1,0,$an);$dm=date('j',$jz);

// Construire le tableau
$chnCal='';
$chnCal.='----
["'.$slf.'?a='.$an.'&m='.($mo-1).'"><<, ';
$chnCal.=''.$ms[$mo-1].' '.$an.', ';
$chnCal.='>], ';
$chnCal.='----
';
for ($cl=0;$cl<7;$cl++){$chnCal.=''.substr("LuMaMeJeVeSaDi",2*$cl,2).', ';}
$chnCal.='';
// Initialiser le quantième du mois qui doit prendre la valeur 1 dans la colonne $co
$qm=1-$co;
for ($lg=2;$lg<8;$lg++) {
$chnCal.='----
';
for ($cl=0;$cl<7;$cl++){
// Afficher les seuls quantièmes du mois
if ($qm<1 || $dm<$qm) $chnCal.=', ';
else $chnCal.=''.$qm.', ';
// incrementer le quantième
$qm++;}
$chnCal.='';}
$chnCal.='
';
// Afficher le tableau
echo $chnCal;
?>

Inutile d'aller chercher des classes et complications quant la durée d'un mois est déterminée par le quantième de son dernier jour qui est aussi, en PHP, le jour 0 du mois suivant (voir la ligne 22).

Enfin, pourquoi faire appel au serveur pour afficher un tel calendrier, de tels scripts auraient, semble-t-il, meilleure place à la rubrique javascript. Le nombre de jour du mois mo de l'année an serait alors obtenu par la simple différence 32 - new Date(an,mo,32).getDate() !

Alors bon courage pour la transcription avec de belles boucles sur nos drôles de machines...
Mister Jingles
Messages postés
4
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
25 février 2009

Bonjour,

PHP est aujourd'hui très complet au niveau des fonctions pour calculer et afficher un calendrier. (cf PHP Manual -> http://fr2.php.net/manual/fr/book.calendar.php) J'ai pas regardé en détail le code mais je pense qu'il est possible de faire le même en moins de 200 lignes (peut être même moins de 100 lignes.

Pour aider un peu, voici ma classe calendrier en PHP5:
http://www.phpcs.com/codes/CLASSE-CALENDRIER_49347.aspx

Bon courage.
cs_gabay
Messages postés
25
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
29 juin 2010

Merci énormément pour votre aide, en fait je me remet maintenant sur ce calendrier et d'ici un jour ou deux je posterai quelque chose de plus simple et biensur qui soit meilleur.

ps: je connaissais pas la fonction cal_days_in_month(CAL_GREGORIAN, date("n"), date("Y")) mais maintenant je pense qu'elle aidera beaucoup
cs_catlord
Messages postés
3
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2010

Quand deux lignes de code se ressemblent en PHP, quelque chose ne va pas... Le script est bcp trop long et il doit être normalement possible d'afficher un calendrier perpétuel en quelques lignes.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.