Voila le dernier essai que jai essayé cette nuit avec les codes des pages precedentes, ce que je souhaite faire (et mes parametres sont expliqué ci dessus
Ce code ne maffiche aucune erreur mais je nai pas les liens en fonction des dates ds ma base de données
Code du fichier calendrier.php (il ya aussi la page index.php (fourni ds le zip de depart) et la page ou jinclue le calendrier mais la je nai rien retouché )
<?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='', $alt='Mois précédent', $class='')
{
$precedentannee = $annee;
$precedentmois = $mois-1;
if($precedentmois==0)
{
$precedentmois = 12;
$precedentannee = $annee-1;
}
$previous = "<a href=\"index.php\" onClick=\"go(".$precedentmois.",".$precedentannee."); return false;\">";
if($img!="")
{
$previous.="<img class=\"".$class."\" src=\"".$img."\" alt=\"".$alt."\" />";
}
else
{
$previous.= "<";
}
$previous.="</a>";
$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 = "<a href=\"index.php\" onClick=\"go(".$suivantmois.", ".$suivantannee."); return false;\">";
if($img!="")
{
$next.="<img class=\"".$class."\" src=\"".$img."\" alt=\"".$alt."\" />";
}else{
$next.= ">";
}
$next.="</a>";
$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
*/
//la fonction affect_day
function affec_day($day, $link,$class)
{
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="'.$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;
}
}
/**
* Partie procédurale de la génération du calendrier.
*/
/**
* Définit le mois et l'année en cours
*/
$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, "../css/img/mois_prec.gif","Mois précédent","prenext");
$calendrier->affec_next($mois, $annee,"../css/img/mois_suiv.gif","Mois précédent","prenext");
//récupération des données et affectation
include ("connect.php"); // Importe ce fichier
$query_RTagenda = "SELECT date FROM resumes ORDER BY date ASC ";
$RTagenda = mysql_query($query_RTagenda, $link) or die(mysql_error());
$totalRows_RTagenda = mysql_num_rows($RTagenda);
$donnees = mysql_fetch_assoc($RTagenda);
print_r ($donnees) ;
$donnees=array();
//while($value=$connec_calendrier->fetchNextRow(MYSQL_ASSOC)) array_push($donnees,$value);
foreach($donnees as $donnee){
$date=explode(' ',$donnee['date']);
$jour=explode('-',$date[0]);
$jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]);
$calendrier->affec_day($jour, 'mon article.php?tri='.$date[0]);
}
echo $calendrier->affiche();
?>
merci