Probleme avec le calendrier de cobaye

Eléphant du PHP | 258 Messages

10 déc. 2006, 20:13

Salut merci pour ces presision.

Oui je comprend un peut mieux, enfin je pense.

$données en faite et une variable assigné au nom du tableau.

Mais c'est cette premiere ligne que je ne comprend pas car deja c'est bien de la que vient la variable donnees?

Sinon le reste j'est ce que j'ai bien compris ou pas?

ViPHP
ViPHP | 3607 Messages

10 déc. 2006, 21:27

en fait, j'utilise une classe personnalisée pour l'accès aux bases de données...
Donc c'est peut-être moins compréhensible... :? ...
Mais ne t'inquiète pas, c'est tout à fait possible de faire avec des fonctions classique d'accès aux données d'une bdd...
je suppose que tu sait recueillir les infos dans une bdd ?
Si oui, le tableau $donnees, contient sur chaque ligne un nom de groupe, des petites infos, et surtout, un horaire, qui nous permet d'ajouter une date au calendrier... voici le code commenté...
//on oubli la boucle while, elle permet simplement de récupérer les données de la bdd dans $donnees
//vient le foreach, qui va parcourir chaque ligne du tableau à deux dimension $donnees, on stocke chaque ligne dans $donnee (sans s)
foreach($donnees as $donnee){ 

    //je transforme la date issue de la bdd au bon format (la date est contenue dans le champ 'date_concert'
    $date=explode(' ',$donnee['date_concert']); 
    $jour=explode('-',$date[0]); 
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]);
    // j'ai maintenant dans la variable $jour la date au format accepté par le calendrier de cobaye

    //ensuite on va utilisé la fonction affec_day, qui affecte un évènement à un jour ($jour)
    $calendrier->affec_day(
 
                       $jour,        // premier paramètre, la date

                       'dates.php?tri='.$date[0],  // deuxième paramètre, l'url de l'évènemnet

                       'eventday',    // troisième paramètre -je sais plus, j'ai plus mon code d'origine sous les yeux je te reconfirmerai un autre jour-

                       $donnee['nom_groupe'],  // nom de l'évènement

                       "Nom du groupe: ".$donnee['nom_groupe']."\nSalle: ."$donnee['salle']."\nHoraire: ".$date[1]  //description supplémentaire
                  );
} 
Seulement comme tu as pu le constater, il y a quelques paramètres en plus, seuelemnt, je le répète, je n'ai plus le code sous les yeux, je regarde dans la semaine...

Eléphant du PHP | 258 Messages

10 déc. 2006, 21:47

Merci jojolapine je pense pouvoir y arriver enfin sauf que je ne sais pas ou placer ce code si c'est dans calendrier.php au la ou j'affiche le calendrier?

Je pense que c'est dans calendrier.php mais j'ai peur de faire une boulette.

Dis moi si je me trompe mais ne seresse pas à la pace de :

Code : Tout sélectionner

$jour1 = mktime(0,0,0,9,18,2006); $jour2 = mktime(0,0,0,9,20,2006); $calendrier->affec_day($jour1, '#','','test event'); $calendrier->affec_day($jour2, '#','','test event 2');
Dans la page calendrier.php
Je vais essayer de toute facon on verra bien.

C'est aussi cette variable $donnees car tu l'initialise en faisant
$donnees=array();
Doit je faire pareil?

ViPHP
ViPHP | 3607 Messages

11 déc. 2006, 10:23

Bonjour,
alors oui tu dois mettre tes appels à affec_day dans le fichier calendrier.php, qui sera appeler ensuite dans ta page...
Ensuite, pour ce qui est du tableau $donnees, je l'ai initialisé comme ceci, pour pouvoir faire un array_push, qui ne fonctionne que sur une variable de type tableau, mais ne t'occupe pas de ça, fait ton affaire avec mysql_fetch_assoc()...
fait un bout de code et revient nous voir si ça ne fonctionne pas ;)

Eléphant du PHP | 258 Messages

11 déc. 2006, 11:39

Bon j'ai fais ceci :
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTagenda = "SELECT * FROM tagenda ORDER BY DATEa ASC LIMIT 0,10";
$RTagenda = mysql_query($query_RTagenda, $Debaseconnect) or die(mysql_error());
$donnees = mysql_fetch_assoc($RTagenda);

 

foreach($donnees as $donnee){  

    //je transforme la date issue de la bdd au bon format (la date est contenue dans le champ 'date_concert' 
    $date=explode(' ',$donnee['DATEa']);  
    $jour=explode('-',$date[0]);  
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); 
    // j'ai maintenant dans la variable $jour la date au format accepté par le calendrier de cobaye 

    //ensuite on va utilisé la fonction affec_day, qui affecte un évènement à un jour ($jour) 
    $calendrier->affec_day( 
  
                       $jour,        // premier paramètre, la date 

                       'Agenda.php',  // deuxième paramètre, l'url de l'évènemnet 

                       $donnee['TITagenda ']);  // nom de l'évènement "
					   }
Et comme vous vous en doutez ca ne marche pas.

Déja je pense qu'il y a un probleme avec ma date car elle est dans ma BD au format 'date' c'est à dire année, moi, jour.

Donc je crois qui'il faut que j'enleve
$date=explode(' ',$donnee['DATEa']); 
???????

ViPHP
ViPHP | 3607 Messages

11 déc. 2006, 11:46

oui enlève le explode, car moi je stockai au forma datetime, ensuite, pour vérifier si $donnees est bien rempli, fait un print_r de ce dernier

Eléphant du PHP | 258 Messages

11 déc. 2006, 11:56

Alors j'ai que 2 evenements mais le print_r m'affiche ceci :
Array ( [IDa] => 17 [DATEa] => 2006-11-19 [TITagenda] => Bourse au jouet [TEXagenda] => Bourse au jouets a saucats. A la salle dzs fêtes. ) Array ( [IDa] => 17 [DATEa] => 2006-11-19 [TITagenda] => Bourse au jouet [TEXagenda] => Bourse au jouets a saucats. A la salle dzs fêtes. ) Array ( [IDa] => 17 [DATEa] => 2006-11-19 [TITagenda] => Bourse au jouet [TEXagenda] => Bourse au jouets a saucats. A la salle dzs fêtes. ) Array ( [IDa] => 17 [DATEa] => 2006-11-19 [TITagenda] => Bourse au jouet [TEXagenda] => Bourse au jouets a saucats. A la salle dzs fêtes. )
et dans ma page agenda, donc, la normalement, il y a tous les evenement affiché, un peut comme des news , mais au lieu de m'afficher mes 2 evenements il ne m'en affiche plus q'un.

Voici mon code:
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTagenda = "SELECT * FROM tagenda ORDER BY DATEa ASC LIMIT 0,10";
$RTagenda = mysql_query($query_RTagenda, $Debaseconnect) or die(mysql_error());
$donnees = mysql_fetch_assoc($RTagenda);

 

foreach($donnees as $donnee){  
print_r ($donnees) ;
    //je transforme la date issue de la bdd au bon format (la date est contenue dans le champ 'date_concert' 
    $jour=$donnee['DATEa'];  
   // j'ai maintenant dans la variable $jour la date au format accepté par le calendrier de cobaye 

    //ensuite on va utilisé la fonction affec_day, qui affecte un évènement à un jour ($jour) 
    $calendrier->affec_day( 
  
                       $jour,        // premier paramètre, la date 

                       'Agenda.php',  // deuxième paramètre, l'url de l'évènemnet 

                       $donnee['TITagenda ']);  // nom de l'évènement					   
}

ViPHP
ViPHP | 3607 Messages

11 déc. 2006, 12:05

attention, il faut quand même garder ceci:
$jour=explode('-',$donnee['DATEa']);  
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]);  
car le format de date doit être un timestamp unix il me semble!
reessaye avec ceci ;-)

Eléphant du PHP | 258 Messages

11 déc. 2006, 12:10

Voila les erreur qui'l me met :
otice: Undefined offset: 1 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 267

Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 495

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 267

Voici la ligne 495 :
$jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]);
Voici la ligne 267 :
if(date('m',$day)==$this->month && date('Y',$day)==$this->year)

Mammouth du PHP | 19672 Messages

11 déc. 2006, 13:17

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\program files\easyphp1-7\www\sitedebase\calendrier.php on line 267
Traduction : Sous Windows, on ne peut pas traiter des dates antérieures au 1er janvier 1970 à 00h00'00" (qui correspond à la date 0 de l'ère UNIX) Il te faudra donc pour ces dates procéder autrement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

11 déc. 2006, 20:00

Je me douter que c'est un truc comme sa mais moi je ne peut rien faire enfin peut etre que si, mais sa fait parti du fichier calendrier.php donc moi je ne prefere pas toucher.
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTagenda = "SELECT * FROM tagenda ORDER BY DATEa ASC LIMIT 0,10";
$RTagenda = mysql_query($query_RTagenda, $Debaseconnect) or die(mysql_error());
$totalRows_RTagenda = mysql_num_rows($RTagenda);

 $donnees = mysql_fetch_assoc($RTagenda);
//print_r ($donnees) ;

foreach($donnees as $donnee){  

    //je transforme la date issue de la bdd au bon format (la date est contenue dans le champ 'date_concert' 
    $jour=explode('-',$donnee['DATEa']);   
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); 
    // j'ai maintenant dans la variable $jour la date au format accepté par le calendrier de cobaye 
    //ensuite on va utilisé la fonction affec_day, qui affecte un évènement à un jour ($jour) 
    $calendrier->affec_day( 
  
                       $jour,        // premier paramètre, la date 
                       'Agenda.php',  // deuxième paramètre, l'url de l'évènemnet 
                       $donnee['TITagenda '] );  // nom de l'évèneme
} 

et voici la function affect_day avec la ligne 297 :
 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));
        }
    }

ViPHP
ViPHP | 3607 Messages

11 déc. 2006, 20:12

en fait je ne croit pas que ça vienne du calendrier en lui-même, mais plutôt de la façon dont tu récupères la date, affiche $donnee['DATEa'] pour voir ?

Eléphant du PHP | 258 Messages

11 déc. 2006, 20:27

J'ai fais sa est sa m'affiche une date :
2006-11-19

Eléphant du PHP | 258 Messages

12 déc. 2006, 12:45

Bon voila, j'ai réussi à faire la meme chose avec une boucle while, donc sa m'affiche bien les liens nickel.
Puis j'ai réussi aussi à faire se que je faulait faire au début de se post , c'est à dire le changer d'aparence, en locurence mettre une taille de 16px au mois et justement mettre les liens avec un fond de couleur orange.
MAIS et je dis bien MAIS quand je passe au mois suivant ou précédent que se soit les mois ou les fond des liens redevient normal et même quand je reviens sur le mois en cour.

Aprés le blabla voici le code.

Sur la page ou j'affiche mon agenda, c'est à dire 'agenda.php :
<style type="text/css">
//mon style CSS
#calendrier { 
color: black; 
background-color:yellow; 
font-size: 0.6em; 
}
 </style>
//pour afficher mon calendrier
   </script>
            <div id="calendrier">
              <?php 
include "calendrier.php"; 
?>


Puis apres sur ma page 'calendrier.php'
<style type="text/css">//style css pour les mois
.calendar-month {  

color: #000000;
font-size: 16px; 
font-style: normal; 
}

.stylelien {background-color:#FF9900;}//style pour le fond des liens
 </style>

//la fonction affect_day
 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="'.$link.'" '.$onblur.'>'.$jour.'</a>' : $jour).'</td>';
            $this->day[$jour] = $lien;
        }
    }

// affichage du mois
         
        $this->calendar.= '<caption class="calendar-month">'.$this->previous.($this->month_href ? '<a href="admin/%27.htmlspecialchars($this-%3Emonth_href).%27">'.$title.'</a>' : $title).$this->next."\n";

//Et le code pour afficher les dates en liens mais je pense pas que sa vien de la

while($donnees = mysql_fetch_assoc($RTagenda)){  

    //je transforme la date issue de la bdd au bon format (la date est contenue dans le champ 'date_concert' 
    $jour=explode('-',$donnees['DATEa']);   
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); 
    // j'ai maintenant dans la variable $jour la date au format accepté par le calendrier de cobaye 
    //ensuite on va utilisé la fonction affec_day, qui affecte un évènement à un jour ($jour) 
    $calendrier->affec_day( 
  
                       $jour,        // premier paramètre, la date 
                       '#'.$donnees['IDa'].'',  // deuxième paramètre, l'url de l'évènemnet
					   'stylelien',
					   $donnees['TITagenda'] );  // nom de l'évèneme
} 

ViPHP
ViPHP | 3607 Messages

12 déc. 2006, 13:03

Bon déja félicitation pour ce que tu as réussit à faire ;-)
ensuite, pour changer les apparences, il faut changer encore quelques fonctions, je vais te mettre mes différents fichiers içi:
style.css (partie calendrier)

Code : Tout sélectionner

/*----calendrier-------*/ div#calendrier { padding: 0px; margin: 0px; width: 100%; text-align: center; font-size: 0.8em; } div#calendrier table#tabcalendrier { width: 100%; } div#calendrier td { margin: 0px; padding: 0px; } div#calendrier td.eventday{ background-color: orange; } div#calendrier img.prenext { border: none; padding: 0px 8px; margin: 0px; } a.infobulles { position: relative; color: black; text-decoration: none; border-bottom: 1px dotted black; } a.infobulles span { display: none; } a.infobulles:hover { background: none; z-index: 500 } a.infobulles:hover span { display: block; position: absolute; white-space: nowrap; top: 30px; left: -50px; background-color: #FFFF99; color: black; padding: 3px; border: 1px solid red; border-left: 3px solid red; opacity: 0.80; -moz-opacity: 0.80; FILTER: Alpha(Opacity=80); }
ensuite le fichier appelant:
<h2>Calendrier</h2>
<fieldset>
        <legend>Calendrier concerts</legend>
	<div id="calendrier">
<?php
include "../includes/calendrier.php";
?>
</div></fieldset>
et pour finir le fichier calendrier (attention c'est long)
<?php
/**
 * @package Ajax-PHP
 */
/**
 * calendrier
 *
 * Class qui g&eacute;r&egrave;re un calendrier autonome.
 * <ul>
 * <li>Affichage possible, en popup, en inclusion, en div ...</li>
 * <li>Afficher un &eacute;v&egrave;nement avec le titre en rollover sur une date</li>
 * <li>Afficher un &eacute;v&egrave;nement s'&eacute;talant sur une p&eacute;riode avec le titre en rollover sur une date</li>
 * <li>D&eacute;finir un &eacute;v&egrave;nement par d&eacute;faut</li>
 * <li>Affiche ou pas une s&eacute;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&eacute;e de r&eacute;f&eacute;rence du calendrier.
     *
     * @var Int
     */
    var $year;
    /**
     * Mois de r&eacute;f&eacute;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&egrave;nement à afficher.
     *
     * @var String
     */
    var $event;

    /**
     * calendrier::calendrier().
     *
     * Constructeur de la classe.
     * D&eacute;finit les propri&eacute;t&eacute;s de l'objet
     *
     * @param  string $year
     * @param  string $month
     * @return Object calendrier
     * @access public
     */
    function calendrier($year=null, $month=null)
    {
        /**
         * D&eacute;finit l'ann&eacute;e par d&eacute;faut
         */
        $this->year = isset($year) ? $year : date('Y');
        /**
         * D&eacute;finit le mois pas d&eacute;faut
         */
        $this->month = isset($month) ? $month : date('m');
        /**
         * tableau des jours cliquables
         */
        $this->day = array();
        /**
         * D&eacute;finit le nombre de caract&egrave;re pour afficher les semaines
         */
        $this->day_name_length = 3;
        /**
         * Contient le lien cliquable sur le mois
         */
        $this->month_href = null;
        /**
         * D&eacute;finit le premi&egrave;re jour
         */
        $this->first_day = 0;
        /**
         * Contient l'&eacute;v&egrave;nement à afficher par d&eacute;faut
         */
        $this->event = "&nbsp;";
        /**
         * Valeur par d&eacute;faut
         */
        $this->semaine= false;

		$this->calendar = "";

        /**
         * D&eacute;finit la langue du calendrier
         */
        $oldlocale = setlocale(LC_TIME, NULL);
        setlocale(LC_TIME, 'fr_FR');
    }

    /**
     * calendrier::affec_previous().
     *
     * Permet de personnaliser le bouton "pr&eacute;vious" pour afficher le mois pr&eacute;c&eacute;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&eacute;finir le mois pr&eacute;c&eacute;dent
     * @param  mixed    $annee  mois en cours, sert à d&eacute;finir l'ann&eacute;e pr&eacute;c&eacute;dente
     * @param  string   $img    chemin de l'image du bouton pr&eacute;c&eacute;dent optionnel
     * @param  string   $alt    texte sur le lien optionnel par d&eacute;faut "Mois pr&eacute;c&eacute;dent"
     * @param  string   $class  style css à appliquer au lien
     * @return Void
     * @access public
     */
    function affec_previous($mois, $annee, $img='', $alt='Mois pr&eacute;c&eacute;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&eacute;finir le mois suivant.
     * @param  String $annee    mois en cours, sert à d&eacute;finir l'ann&eacute;e suivante.
     * @param  String $img      chemin de l'image du bouton suivant optionnel.
     * @param  String $alt      texte sur le lien optionnel par d&eacute;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  &eacute;v&egrave;nement à afficher par d&eacute;faut
     * @param  mixed    $jour   date de l'&eacute;v&egrave;nement à afficher par d&eacute;faut optionnel
     * @param  string   $link   lien de l'&eacute;v&egrave;nement à afficher par d&eacute;faut optionnel
     * @param  string   $class  Class css de l'&eacute;v&egrave;nement à afficher par d&eacute;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 &eacute;v&egrave;nement
     * @param  mixed    $link   lien vers cette &eacute;v&egrave;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='',$info='')
    {
        if(date('m',$day)==$this->month && date('Y',$day)==$this->year)
        {
            $jour = intval(date('d', $day));
            $lien = '<td'.(!empty($class) ? ' class="'.htmlspecialchars($class).'">' : '>');
            if(isset($this->day[$jour]))
            {
                $onblur = ("onmouseover=\"document.getElementById('event').innerHTML='Plusieurs &eacute;v&egrave;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 class="infobulles" title="" href="'.htmlspecialchars($link).'" '.$onblur.'>'.$jour.(!empty($info) ? '<span>'.nl2br($info).'</span>' : '').'</a>' : $jour).'</td>';
            $this->day[$jour] = $lien;
        }
    }

    /**
     * calendrier::affec_periode()
     *
     * @param  mixed    $debut  date de d&eacute;but d'un &eacute;v&egrave;nelent
     * @param  mixed    $fin    date de fin de l'&eacute;v&egrave;nement
     * @param  mixed    $link   lien vers cette &eacute;v&egrave;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&egrave;re variabl à envoyer             optionnel
     * @param  string   $variable2  nom de la deuxi&egrave;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&eacute;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)).'&nbsp;'.$this->year;

        /**
         * d&eacute;but de la cr&eacute;ation du tableau du calendrier
         */
        $this->calendar = '<table id="tabcalendrier" summary="Calendrier des &eacute;v&egrave;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'&eacute;v&egrave;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\">&nbsp;</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.'">&nbsp;</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&egrave;s le dernier jour du mois
         */
        if($weekday != 7) $this->calendar .= '<td colspan="'.(7-$weekday).'">&nbsp;</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&eacute;durale de la g&eacute;n&eacute;ration du calendrier.
 */

/**
 * D&eacute;finit le mois et l'ann&eacute;e en cours
 */
$mois = isset($_GET['mois']) ? $_GET['mois'] : date('m');
$annee = isset($_GET['annee']) ? $_GET['annee'] : date('Y');

/**
 * cr&eacute;ation du calendrier
 */
$calendrier = new calendrier($annee, $mois);

/**
 * d&eacute;finit les boutons suivant, pr&eacute;c&eacute;dent et l'&eacute;v&egrave;nement pas d&eacute;faut
 */
$calendrier->affec_previous($mois, $annee, "../css/img/mois_prec.gif","Mois pr&eacute;c&eacute;dent","prenext");
$calendrier->affec_next($mois, $annee,"../css/img/mois_suiv.gif","Mois pr&eacute;c&eacute;dent","prenext");


//récupération des données et affectation
require_once('mysql.classe.php');
include('../config/config.php');
$connec_calendrier=new mysqlConcertation();
$sql='SELECT * FROM `dates` WHERE `poubelle`=\'non\'';
$connec_calendrier->query($sql);
$donnees=array();
while($value=$connec_calendrier->fetchNextRow(MYSQL_ASSOC)) array_push($donnees,$value);
foreach($donnees as $donnee){
    $date=explode(' ',$donnee['date_concert']);
    $jour=explode('-',$date[0]);
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]);
    $calendrier->affec_day($jour, 'dates.php?tri='.$date[0],'eventday',$donnee['nom_groupe'],"Nom du groupe: ".$donnee['nom_groupe']."\nSalle: ".$donnee['salle']."\nHoraire: ".$date[1]);
}
echo $calendrier->affiche();
?>
essaye de regarder les différences entre ton script et le mien...
déja place tout tes styles css dans la page appelante, et non dans calendrier.php