par
guigui69 » 04 mars 2009, 18:59
merci j'ai étudier le code mais je but enormement.
je voudrait savoir quel méthode employé pour utiliser ce calendrier.
En fait je recuperer de ma base Date, et commentaire et je voudrait les retrouver dans le calendrier.
J'ai étudier le code, mais je n'y arrive pas.
J'ai télécharger les sources installer pour le site intranet.
<span id="calendrier">';
include "../../calendar/calendrier.php";
echo '</span> ';
$query = sql_planning_client($id_client);
$res=mysql_query($query) or die('Erreur SQL !'.$query.'<br />'.mysql_error());
while ($row = mysql_fetch_array($res))
{
$calendrier->affec_day($row["date_planning"], '#','',''.$row["commentaire_planning"].'-'.$row["nom_user"].''.$row["prenom_user"].'');
echo $row["date_planning"]; echo $row["commentaire_planning"]; echo $row["nom_user"]; echo $row["prenom_user"];
}
$mois = isset($_GET['mois']) ? $_GET['mois'] : date('m');
$annee = isset($_GET['annee']) ? $_GET['annee'] : date('Y');
/**
* création du calendrier
*/
$calendrier = new calendrier($annee, $mois);
/**
* définit les boutons suivant, précédent et l'évènement pas défaut
*/
$calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
$calendrier->affec_next($mois, $annee,"mois_suiv.jpg");
$calendrier->affec_event_default("test",time());
/**
* ajout d'évènement sur plusieurs jours
* affec_periode($debut, $fin, $link='#', $class='',$titre='')
*/
/**
* Affiche une première colonne permettant de sélectionner la semaine
* affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">")
*/
$calendrier->affec_semaine(false);
/**
* Affiche le calendrier
*/
echo $calendrier->affiche();
calendrier.php
<?php
/**
* @package Ajax-PHP
*/
/**
* calendrier
*
* Class qui gérère un calendrier autonome.
* <ul>
* <li>Affichage possible, en popup, en inclusion, en div ...</li>
* <li>Afficher un évènement avec le titre en rollover sur une date</li>
* <li>Afficher un évènement s'étalant sur une période avec le titre en rollover sur une date</li>
* <li>Définir un évènement par défaut</li>
* <li>Affiche ou pas une sélection pour une semaine</li>
* <li>Changer de mois sans recherger la page (merci ajax)</li>
* </ul>
*
* @example test.php
* @package sample
* @author LE CORRE
* @copyright Copyright (c) 2006
* @version 1
* @access public
**/
class calendrier
{
/**
* Année de référence du calendrier.
*
* @var Int
*/
var $year;
/**
* Mois de référence du calendrier.
*
* @var Int
*/
var $month;
/**
* Jours du calendrier.
*
* @var Array
*/
var $days;
/**
* Longueur de la chaine indiquant le nom du mois.
*
* @var Int
*/
var $day_name_length;
/**
* Lien clicable vers un mois.
*
* @var String
*/
var $month_href;
/**
* Position du premier jour du mois.
*
* @var Int
*/
var $first_day;
/**
* Évènement à afficher.
*
* @var String
*/
var $event;
/**
* calendrier::calendrier().
*
* Constructeur de la classe.
* Définit les propriétés de l'objet
*
* @param string $year
* @param string $month
* @return Object calendrier
* @access public
*/
function calendrier($year=null, $month=null)
{
/**
* Définit l'année par défaut
*/
$this->year = isset($year) ? $year : date('Y');
/**
* Définit le mois pas défaut
*/
$this->month = isset($month) ? $month : date('m');
/**
* tableau des jours cliquables
*/
$this->day = array();
/**
* Définit le nombre de caractère pour afficher les semaines
*/
$this->day_name_length = 3;
/**
* Contient le lien cliquable sur le mois
*/
$this->month_href = null;
/**
* Définit le première jour
*/
$this->first_day = 0;
/**
* Contient l'évènement à afficher par défaut
*/
$this->event = " ";
/**
* Valeur par défaut
*/
$this->semaine= false;
$this->calendar = "";
/**
* Définit la langue du calendrier
*/
$oldlocale = setlocale(LC_TIME, NULL);
setlocale(LC_TIME, 'fr_FR');
}
/**
* calendrier::affec_previous().
*
* Permet de personnaliser le bouton "prévious" pour afficher le mois précédent.
* Exemple :
* <code><?php
* $calendrier = new calendrier($annee, $mois);
* $calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
* //...
* ?></code>
*
* @param mixed $mois mois en cours, sert à définir le mois précédent
* @param mixed $annee mois en cours, sert à définir l'année précédente
* @param string $img chemin de l'image du bouton précédent optionnel
* @param string $alt texte sur le lien optionnel par défaut "Mois précédent"
* @param string $class style css à appliquer au lien
* @return Void
* @access public
*/
function affec_previous($mois, $annee, $img='lol.jpg', $alt='Mois précédent', $class='')
{
$precedentannee = $annee;
$precedentmois = $mois-1;
if($precedentmois==0)
{
$precedentmois = 12;
$precedentannee = $annee-1;
}
$previous = "<span class=\"".$class."\"><a href=\"javascript: go(".$precedentmois.",".$precedentannee.");\">";
if($img!="")
{
$previous.="<img src=\"".$img."\" alt=\"".$alt."\" />";
}
else
{
$previous.= "<";
}
$previous.="</a></span> ";
$this->previous = $previous;
}
/**
* calendrier::affec_next().
*
* Permet de personnaliser le bouton next pour afficher le mois suivant.
*
* Exemple :
* <code><?php
* $calendrier = new calendrier($annee, $mois);
* $calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
* $calendrier->affec_next($mois, $annee,"mois_suiv.jpg");
* //...
* ?></code>
*
* @param String $mois mois en cours, sert à définir le mois suivant.
* @param String $annee mois en cours, sert à définir l'année suivante.
* @param String $img chemin de l'image du bouton suivant optionnel.
* @param String $alt texte sur le lien optionnel par défaut "Mois suivant".
* @param String $class style css à appliquer au lien.
* @return void
* @access public
*/
function affec_next($mois, $annee, $img='', $alt='Mois suivant', $class='')
{
$suivantmois = $mois+1;
$suivantannee = $annee;
if($suivantmois==13)
{
$suivantmois = 1;
$suivantannee = $annee+1;
}
$next = " <span class=\"".$class."\"><a href=\"javascript: go(".$suivantmois.", ".$suivantannee.");\">";
if($img!="")
{
$next.="<img src=\"".$img."\" alt=\"".$alt."\" />";
}else{
$next.= ">";
}
$next.="</a></span>";
$this->next = $next;
}
/**
* calendrier::affec_event_default()
*
* @param mixed $event évènement à afficher par défaut
* @param mixed $jour date de l'évènement à afficher par défaut optionnel
* @param string $link lien de l'évènement à afficher par défaut optionnel
* @param string $class Class css de l'évènement à afficher par défaut optionnel
* @return void
* @access public
*/
function affec_event_default($event,$jour='', $link='', $class='')
{
$this->event = $event;
if($jour!="")
{
$this->affec_day($jour);
}
}
/**
* calendrier::affec_link_month()
*
* @param mixed $link lien à mettre sur le mois en cours
* @return void
* @access public
*/
function affec_link_month($link)
{
$this->month_href = $link;
}
/**
* calendrier::affec_day()
*
* @param mixed $day date d'un évènement
* @param mixed $link lien vers cette évènement optionnel
* @param string $class class css du lien optionnel
* @param string $titre titre à mettre sur le lien optionnel
* @return void
* @access public
*/
function affec_day($day, $link='#', $class='',$titre='')
{
if(date('m',$day)==$this->month && date('Y',$day)==$this->year)
{
$jour = intval(date('d', $day));
$lien = '<td'.($class ? ' class="'.htmlspecialchars($class).'">' : '>');
if(isset($this->day[$jour]))
{
$onblur = ("onmouseover=\"document.getElementById('event').innerHTML='Plusieurs évènements ce jour'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"");
}else{
$onblur = ($titre ? "onmouseover=\"document.getElementById('event').innerHTML='".$titre."'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"" : "");
}
$lien .= ($link ? '<a href="'.htmlspecialchars($link).'" '.$onblur.'>'.$jour.'</a>' : $jour).'</td>';
$this->day[$jour] = $lien;
}
}
/**
* calendrier::affec_periode()
*
* @param mixed $debut date de début d'un évènelent
* @param mixed $fin date de fin de l'évènement
* @param mixed $link lien vers cette évènement optionnel
* @param string $class class css du lien optionnel
* @param string $titre titre à mettre sur le lien optionnel
* @return void
* @access public
*/
function affec_periode($debut, $fin, $link, $class='', $titre='')
{
$premierdate = mktime(0,0,0,date('m', $debut), date('d', $debut), date('Y', $debut));
$dernierdate = mktime(0,0,0,date('m', $fin), date('d', $fin), date('Y', $fin));
$jour = date('d', $debut);
while($premierdate<=$dernierdate)
{
//echo "date ajouter :".date("d/m/Y", $premierdate)."<br />";
$this->affec_day($premierdate,"#",$class, $titre);
$jour++;
$premierdate = mktime(0,0,0,date('m', $debut), $jour, date('Y', $debut));
}
}
/**
* calendrier::affec_semaine()
*
* @param Boolean $affiche active ou pas l'affichage de la colonne semaine
* @param string $link lien pour la semaine optionnel
* @param string $variable1 nom de la première variabl à envoyer optionnel
* @param string $variable2 nom de la deuxième varaible à envoyer optionnel
* @param string $titre libelle qui apparait dans la colonne optionnel
* @return void
* @access public
*/
function affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">")
{
if($affiche)
{
$this->semaine = true;
$this->semainelink = $link;
$this->semainevariable1 = $variable1;
$this->semainevariable2 = $variable1;
$this->semainetitre = $titre;
}
}
/**
* calendrier::prepare_calendrier()
*
* @return void
* @access public
*/
function prepare_calendrier()
{
/**
* définit le premier jour
*/
$first_of_month = gmmktime(0,0,0,$this->month,1,$this->year);
/**
* initialise le calendrier
*/
$day_names = array();
for($n=0,$t=(3+$this->first_day)*86400; $n<7; $n++,$t+=86400)
$day_names[$n] = ucfirst(gmstrftime('%A',$t));
list($this->month, $this->year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
$weekday = ($weekday + 7 - $this->first_day) % 7;
$title = htmlentities(ucfirst($month_name)).' '.$this->year;
/**
* début de la création du tableau du calendrier
*/
$this->calendar = '<table id="tabcalendrier" summary="Calendrier des évènements">'."\n";
/**
* affichage du mois
*/
$this->calendar.= '<caption class="calendar-month">'.$this->previous.($this->month_href ? '<a href="'.htmlspecialchars($this->month_href).'">'.$title.'</a>' : $title).$this->next."\n";
/**
* affichage du titre de l'évènement s'il y en a un
*/
$this->calendar.="<br /><span style='color: black' id=\"event\">".$this->event."</span>";
/**
* fin de l'entete du tableau
*/
$this->calendar.= "</caption><thead><tr>";
if($this->semaine) $this->calendar.="<th abbr=\"semaine\"> </th>";
/**
* Affichage de le ligne de jour de la semaine
*/
if($this->day_name_length)
{
foreach($day_names as $d)
{
$this->calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($this->day_name_length < 4 ? substr($d,0,$this->day_name_length) : $d).'</th>';
}
$this->calendar .= "</tr></thead>\n<tbody id=\"jours\"><tr>[semaine]";
}
/**
* affichage des cellule vide avant le 1er jour
*/
if($weekday > 0) $this->calendar .= '<td colspan="'.$weekday.'"> </td>';
/**
* boucle pour afficher l'ensemble de jour du mois
*/
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++)
{
if(!isset($premier_jour)) $premier_jour=$day;
if($weekday == 7)
{
$weekday = 0; #start a new week
if($this->semaine)
{
$liensemaine = "<a href=\"".$this->semainelink."?".$this->semainevariable1."=".$premier_jour."/".$this->month."/".$this->year."&".$this->semainevariable2."=".($day-1)."/".$this->month."/".$this->year."\">";
$this->calendar = str_replace("[semaine]", "<td>".$liensemaine.$this->semainetitre."</a></td>", $this->calendar);
}else{
$this->calendar = str_replace("[semaine]","",$this->calendar);
}
$this->calendar .= "</tr>\n<tr>[semaine]";
$premier_jour = $day;
}
if(isset($this->day[$day]))
{
$this->calendar.= $this->day[$day];
}else{
$this->calendar .= "<td>$day</td>";
}
}
/**
* affichage des cellule vide après le dernier jour du mois
*/
if($weekday != 7) $this->calendar .= '<td colspan="'.(7-$weekday).'"> </td>'; #remaining "empty" days
if($this->semaine==true)
{
$liensemaine = "<a href=\"".$this->semainelink."?".$this->semainevariable1."=".$premier_jour."/".$this->month."/".$this->year."&".$this->semainevariable2."=".($day-1)."/".$this->month."/".$this->year."\">";
$this->calendar = str_replace("[semaine]", "<td>".$liensemaine.$this->semainetitre."</a></td>", $this->calendar);
}else{
$this->calendar = str_replace("[semaine]","",$this->calendar);
}
/**
* fin du tableau du calendrier
*/
$this->calendar = $this->calendar."</tr>\n</tbody></table>\n";
}
/**
* calendrier::affiche().
*
* Retourner le calendier.
*
* @return String Code html du calendrier.
* @access public
*/
function affiche()
{
$this->prepare_calendrier();
return $this->calendar;
}
}
J'ai laisser dans le fichier calendrier.php la class pour créer le calendrier. et dans mon document php j'ai ajouter include puis j'ai essayer d'affiche le calendrier.
Premier probleme, il m'affiche 2 calendriers. Pourquoi ?
Suis-je partie sur de mauvaise base?
Quels sont mes erreurs ?
Merci
guigui69
merci j'ai étudier le code mais je but enormement.
je voudrait savoir quel méthode employé pour utiliser ce calendrier.
En fait je recuperer de ma base Date, et commentaire et je voudrait les retrouver dans le calendrier.
J'ai étudier le code, mais je n'y arrive pas.
J'ai télécharger les sources installer pour le site intranet.
[php]
<span id="calendrier">';
include "../../calendar/calendrier.php";
echo '</span> ';
$query = sql_planning_client($id_client);
$res=mysql_query($query) or die('Erreur SQL !'.$query.'<br />'.mysql_error());
while ($row = mysql_fetch_array($res))
{
$calendrier->affec_day($row["date_planning"], '#','',''.$row["commentaire_planning"].'-'.$row["nom_user"].''.$row["prenom_user"].'');
echo $row["date_planning"]; echo $row["commentaire_planning"]; echo $row["nom_user"]; echo $row["prenom_user"];
}
$mois = isset($_GET['mois']) ? $_GET['mois'] : date('m');
$annee = isset($_GET['annee']) ? $_GET['annee'] : date('Y');
/**
* création du calendrier
*/
$calendrier = new calendrier($annee, $mois);
/**
* définit les boutons suivant, précédent et l'évènement pas défaut
*/
$calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
$calendrier->affec_next($mois, $annee,"mois_suiv.jpg");
$calendrier->affec_event_default("test",time());
/**
* ajout d'évènement sur plusieurs jours
* affec_periode($debut, $fin, $link='#', $class='',$titre='')
*/
/**
* Affiche une première colonne permettant de sélectionner la semaine
* affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">")
*/
$calendrier->affec_semaine(false);
/**
* Affiche le calendrier
*/
echo $calendrier->affiche();
[/php]
calendrier.php
[php]
<?php
/**
* @package Ajax-PHP
*/
/**
* calendrier
*
* Class qui gérère un calendrier autonome.
* <ul>
* <li>Affichage possible, en popup, en inclusion, en div ...</li>
* <li>Afficher un évènement avec le titre en rollover sur une date</li>
* <li>Afficher un évènement s'étalant sur une période avec le titre en rollover sur une date</li>
* <li>Définir un évènement par défaut</li>
* <li>Affiche ou pas une sélection pour une semaine</li>
* <li>Changer de mois sans recherger la page (merci ajax)</li>
* </ul>
*
* @example test.php
* @package sample
* @author LE CORRE
* @copyright Copyright (c) 2006
* @version 1
* @access public
**/
class calendrier
{
/**
* Année de référence du calendrier.
*
* @var Int
*/
var $year;
/**
* Mois de référence du calendrier.
*
* @var Int
*/
var $month;
/**
* Jours du calendrier.
*
* @var Array
*/
var $days;
/**
* Longueur de la chaine indiquant le nom du mois.
*
* @var Int
*/
var $day_name_length;
/**
* Lien clicable vers un mois.
*
* @var String
*/
var $month_href;
/**
* Position du premier jour du mois.
*
* @var Int
*/
var $first_day;
/**
* Évènement à afficher.
*
* @var String
*/
var $event;
/**
* calendrier::calendrier().
*
* Constructeur de la classe.
* Définit les propriétés de l'objet
*
* @param string $year
* @param string $month
* @return Object calendrier
* @access public
*/
function calendrier($year=null, $month=null)
{
/**
* Définit l'année par défaut
*/
$this->year = isset($year) ? $year : date('Y');
/**
* Définit le mois pas défaut
*/
$this->month = isset($month) ? $month : date('m');
/**
* tableau des jours cliquables
*/
$this->day = array();
/**
* Définit le nombre de caractère pour afficher les semaines
*/
$this->day_name_length = 3;
/**
* Contient le lien cliquable sur le mois
*/
$this->month_href = null;
/**
* Définit le première jour
*/
$this->first_day = 0;
/**
* Contient l'évènement à afficher par défaut
*/
$this->event = " ";
/**
* Valeur par défaut
*/
$this->semaine= false;
$this->calendar = "";
/**
* Définit la langue du calendrier
*/
$oldlocale = setlocale(LC_TIME, NULL);
setlocale(LC_TIME, 'fr_FR');
}
/**
* calendrier::affec_previous().
*
* Permet de personnaliser le bouton "prévious" pour afficher le mois précédent.
* Exemple :
* <code><?php
* $calendrier = new calendrier($annee, $mois);
* $calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
* //...
* ?></code>
*
* @param mixed $mois mois en cours, sert à définir le mois précédent
* @param mixed $annee mois en cours, sert à définir l'année précédente
* @param string $img chemin de l'image du bouton précédent optionnel
* @param string $alt texte sur le lien optionnel par défaut "Mois précédent"
* @param string $class style css à appliquer au lien
* @return Void
* @access public
*/
function affec_previous($mois, $annee, $img='lol.jpg', $alt='Mois précédent', $class='')
{
$precedentannee = $annee;
$precedentmois = $mois-1;
if($precedentmois==0)
{
$precedentmois = 12;
$precedentannee = $annee-1;
}
$previous = "<span class=\"".$class."\"><a href=\"javascript: go(".$precedentmois.",".$precedentannee.");\">";
if($img!="")
{
$previous.="<img src=\"".$img."\" alt=\"".$alt."\" />";
}
else
{
$previous.= "<";
}
$previous.="</a></span> ";
$this->previous = $previous;
}
/**
* calendrier::affec_next().
*
* Permet de personnaliser le bouton next pour afficher le mois suivant.
*
* Exemple :
* <code><?php
* $calendrier = new calendrier($annee, $mois);
* $calendrier->affec_previous($mois, $annee, "mois_prec.jpg");
* $calendrier->affec_next($mois, $annee,"mois_suiv.jpg");
* //...
* ?></code>
*
* @param String $mois mois en cours, sert à définir le mois suivant.
* @param String $annee mois en cours, sert à définir l'année suivante.
* @param String $img chemin de l'image du bouton suivant optionnel.
* @param String $alt texte sur le lien optionnel par défaut "Mois suivant".
* @param String $class style css à appliquer au lien.
* @return void
* @access public
*/
function affec_next($mois, $annee, $img='', $alt='Mois suivant', $class='')
{
$suivantmois = $mois+1;
$suivantannee = $annee;
if($suivantmois==13)
{
$suivantmois = 1;
$suivantannee = $annee+1;
}
$next = " <span class=\"".$class."\"><a href=\"javascript: go(".$suivantmois.", ".$suivantannee.");\">";
if($img!="")
{
$next.="<img src=\"".$img."\" alt=\"".$alt."\" />";
}else{
$next.= ">";
}
$next.="</a></span>";
$this->next = $next;
}
/**
* calendrier::affec_event_default()
*
* @param mixed $event évènement à afficher par défaut
* @param mixed $jour date de l'évènement à afficher par défaut optionnel
* @param string $link lien de l'évènement à afficher par défaut optionnel
* @param string $class Class css de l'évènement à afficher par défaut optionnel
* @return void
* @access public
*/
function affec_event_default($event,$jour='', $link='', $class='')
{
$this->event = $event;
if($jour!="")
{
$this->affec_day($jour);
}
}
/**
* calendrier::affec_link_month()
*
* @param mixed $link lien à mettre sur le mois en cours
* @return void
* @access public
*/
function affec_link_month($link)
{
$this->month_href = $link;
}
/**
* calendrier::affec_day()
*
* @param mixed $day date d'un évènement
* @param mixed $link lien vers cette évènement optionnel
* @param string $class class css du lien optionnel
* @param string $titre titre à mettre sur le lien optionnel
* @return void
* @access public
*/
function affec_day($day, $link='#', $class='',$titre='')
{
if(date('m',$day)==$this->month && date('Y',$day)==$this->year)
{
$jour = intval(date('d', $day));
$lien = '<td'.($class ? ' class="'.htmlspecialchars($class).'">' : '>');
if(isset($this->day[$jour]))
{
$onblur = ("onmouseover=\"document.getElementById('event').innerHTML='Plusieurs évènements ce jour'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"");
}else{
$onblur = ($titre ? "onmouseover=\"document.getElementById('event').innerHTML='".$titre."'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"" : "");
}
$lien .= ($link ? '<a href="'.htmlspecialchars($link).'" '.$onblur.'>'.$jour.'</a>' : $jour).'</td>';
$this->day[$jour] = $lien;
}
}
/**
* calendrier::affec_periode()
*
* @param mixed $debut date de début d'un évènelent
* @param mixed $fin date de fin de l'évènement
* @param mixed $link lien vers cette évènement optionnel
* @param string $class class css du lien optionnel
* @param string $titre titre à mettre sur le lien optionnel
* @return void
* @access public
*/
function affec_periode($debut, $fin, $link, $class='', $titre='')
{
$premierdate = mktime(0,0,0,date('m', $debut), date('d', $debut), date('Y', $debut));
$dernierdate = mktime(0,0,0,date('m', $fin), date('d', $fin), date('Y', $fin));
$jour = date('d', $debut);
while($premierdate<=$dernierdate)
{
//echo "date ajouter :".date("d/m/Y", $premierdate)."<br />";
$this->affec_day($premierdate,"#",$class, $titre);
$jour++;
$premierdate = mktime(0,0,0,date('m', $debut), $jour, date('Y', $debut));
}
}
/**
* calendrier::affec_semaine()
*
* @param Boolean $affiche active ou pas l'affichage de la colonne semaine
* @param string $link lien pour la semaine optionnel
* @param string $variable1 nom de la première variabl à envoyer optionnel
* @param string $variable2 nom de la deuxième varaible à envoyer optionnel
* @param string $titre libelle qui apparait dans la colonne optionnel
* @return void
* @access public
*/
function affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">")
{
if($affiche)
{
$this->semaine = true;
$this->semainelink = $link;
$this->semainevariable1 = $variable1;
$this->semainevariable2 = $variable1;
$this->semainetitre = $titre;
}
}
/**
* calendrier::prepare_calendrier()
*
* @return void
* @access public
*/
function prepare_calendrier()
{
/**
* définit le premier jour
*/
$first_of_month = gmmktime(0,0,0,$this->month,1,$this->year);
/**
* initialise le calendrier
*/
$day_names = array();
for($n=0,$t=(3+$this->first_day)*86400; $n<7; $n++,$t+=86400)
$day_names[$n] = ucfirst(gmstrftime('%A',$t));
list($this->month, $this->year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
$weekday = ($weekday + 7 - $this->first_day) % 7;
$title = htmlentities(ucfirst($month_name)).' '.$this->year;
/**
* début de la création du tableau du calendrier
*/
$this->calendar = '<table id="tabcalendrier" summary="Calendrier des évènements">'."\n";
/**
* affichage du mois
*/
$this->calendar.= '<caption class="calendar-month">'.$this->previous.($this->month_href ? '<a href="'.htmlspecialchars($this->month_href).'">'.$title.'</a>' : $title).$this->next."\n";
/**
* affichage du titre de l'évènement s'il y en a un
*/
$this->calendar.="<br /><span style='color: black' id=\"event\">".$this->event."</span>";
/**
* fin de l'entete du tableau
*/
$this->calendar.= "</caption><thead><tr>";
if($this->semaine) $this->calendar.="<th abbr=\"semaine\"> </th>";
/**
* Affichage de le ligne de jour de la semaine
*/
if($this->day_name_length)
{
foreach($day_names as $d)
{
$this->calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($this->day_name_length < 4 ? substr($d,0,$this->day_name_length) : $d).'</th>';
}
$this->calendar .= "</tr></thead>\n<tbody id=\"jours\"><tr>[semaine]";
}
/**
* affichage des cellule vide avant le 1er jour
*/
if($weekday > 0) $this->calendar .= '<td colspan="'.$weekday.'"> </td>';
/**
* boucle pour afficher l'ensemble de jour du mois
*/
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++)
{
if(!isset($premier_jour)) $premier_jour=$day;
if($weekday == 7)
{
$weekday = 0; #start a new week
if($this->semaine)
{
$liensemaine = "<a href=\"".$this->semainelink."?".$this->semainevariable1."=".$premier_jour."/".$this->month."/".$this->year."&".$this->semainevariable2."=".($day-1)."/".$this->month."/".$this->year."\">";
$this->calendar = str_replace("[semaine]", "<td>".$liensemaine.$this->semainetitre."</a></td>", $this->calendar);
}else{
$this->calendar = str_replace("[semaine]","",$this->calendar);
}
$this->calendar .= "</tr>\n<tr>[semaine]";
$premier_jour = $day;
}
if(isset($this->day[$day]))
{
$this->calendar.= $this->day[$day];
}else{
$this->calendar .= "<td>$day</td>";
}
}
/**
* affichage des cellule vide après le dernier jour du mois
*/
if($weekday != 7) $this->calendar .= '<td colspan="'.(7-$weekday).'"> </td>'; #remaining "empty" days
if($this->semaine==true)
{
$liensemaine = "<a href=\"".$this->semainelink."?".$this->semainevariable1."=".$premier_jour."/".$this->month."/".$this->year."&".$this->semainevariable2."=".($day-1)."/".$this->month."/".$this->year."\">";
$this->calendar = str_replace("[semaine]", "<td>".$liensemaine.$this->semainetitre."</a></td>", $this->calendar);
}else{
$this->calendar = str_replace("[semaine]","",$this->calendar);
}
/**
* fin du tableau du calendrier
*/
$this->calendar = $this->calendar."</tr>\n</tbody></table>\n";
}
/**
* calendrier::affiche().
*
* Retourner le calendier.
*
* @return String Code html du calendrier.
* @access public
*/
function affiche()
{
$this->prepare_calendrier();
return $this->calendar;
}
}
[/php]
J'ai laisser dans le fichier calendrier.php la class pour créer le calendrier. et dans mon document php j'ai ajouter include puis j'ai essayer d'affiche le calendrier.
Premier probleme, il m'affiche 2 calendriers. Pourquoi ?
Suis-je partie sur de mauvaise base?
Quels sont mes erreurs ?
Merci
guigui69