Bonjour � tous et merci d'avance de votre lecture,

Voil� je suis confront� � un probl�me vraiment incompr�hensible pour moi en tout cas..., je vais essayer de vous l'expliquer � l'�crit du mieux que je peut

Dans mon code, je g�n�re un calendrier dynamique en PHP, � l'int�rieur pour g�rer des "�v�nements"*j'utilise du JS, certes c'est d�gueu et �a veut dire que le code et mal construit, mais c'est trop tard pour recommencer certaine partie, le code venant pas de moi et la dite personne n'�tant plus dans le service (L'utilisation du "JE" n'est pas vraiment appropri� mais j'ai pas envie de m'emb�ter avec �a :p). Plus simplement la moulinette PHP trouve un �v�nement dans la BDD, et ajoute un

Code : S�lectionner tout - Visualiser dans une fen�tre � part
class="event_case" onclick="evenement(13);"
dans la <td></td> appropri�. ce qui permet de changer le CSS de la TD pour afficher visuellement l��v�nement (ici : un point noir, venant d'une image) , et lors d'un clique sur la case logiquement le onclick="evenement(13);" fait effet et renvoie � une fonction toute simple js qui permet l'affichage (display:block de la description de l��v�nement contenue dans la BDD. Mais ce n'est pas tout ! J'ai aussi des boutons permettant d'afficher le bon calendrier c�d, le bon mois,

ex : le mois actuelle afficher par d�faut, mais possibilit� de cliquer sur le bouton SEPTEMBRE pour mes �v�nements de SEPTEMBRE.

Avec quelques effets de style en CSS3/JS, lors du clique cela change le CSS pour faire appara�tre le calendrier d'une belle fa�on (Hors de l'�crans et fait sont chemin vers l� ou il doit �tre).

*Ces �v�nements sont stock� dans une base de donn�e, sont extrait en d�but de page et g�rer ensuite par un algo qui g�re les dates en timestamp.

Alors voil� ! tout fonctionne parfaitement... parfaitement ? non,... un groupe d�irr�ductible bugs r�siste toujours au d�veloppeur.

Voici mon probl�me : Comme vous le savez maintenant le PHP cr�er un case avec

Code : S�lectionner tout - Visualiser dans une fen�tre � part
class="event_case" onclick="evenement(13);"
dans la TD, certes donc impossibilit� d'avoir l'un ou l'autre... c'est les deux ou rien je pr�cise, car la suite est plut�t ?dr�le? au chargement de ma page (log effectu�, moulinette, affichage du calendrier par d�faut, css associ�) le calendrier s'affiche correctement, avec l��v�nement dans la bonne case, et le bon CSS (point noir). MAISlorsque je clique sur la case qui est sens� �tre :

Code html : S�lectionner tout - Visualiser dans une fen�tre � part
<td class="event_case" onclick="evenement(13);">9</td>

rien ne se passe, alors je v�rifie (firebug, et developperTools de Chrome) mais la TD dans le code est :


Voil�... Je ne comprend pas du tout les navigateurs affiche le CSS associ�, mais le JS ne fonctionne absolument pas, et de plus <le myst�re> c'est qu'il affiche quand m�me le CSS alors qu'il n'y a qu'un simple <td></td>.

Petit pr�cision, lorsque je change de calendrier, et je reviens sur le "bugu�" tout re-fonctionne (JS + CSS), et dans le DevelopperTools il affiche bien le event_case et le onclick.

Le code CSS

Calendrier

Code css : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.calendar table{
        box-shadow: 5px 5px 5px 7px grey;
    border-collapse:collapse;
        overflow: hidden;
        border: 3px;
        width:442px;
    left: 20%;
    position: fixed;
    font-family: Helvetica, 'Lucida Grande', Arial, sans-serif;
    font-size: 14px;
    font-weight: bold;
    color: #406da0;
    margin: 15px;  
    float: left;
    opacity: 0;
    -webkit-transition: all .4s ease-in;
    -moz-transition: all .4s ease-in;
    -o-transition: all .4s ease-in;
    transition: all .4s ease-in;
    background-color: rgba(0, 108, 255, 0.26);
}

Code css : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
.calendar tr td{
    border : 1px solid grey;
    width : 60px;
    height : 60px;
    text-align:right;
    vertical-align:bottom;
    font-size:18px;
        font-weight: normal;
 
}

�v�nement + Description �v�nement

Code css : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.evenement{
    font-size:15px;
        display: none;
        width: 25%;
    float:right;
    position:relative;
    left: -15em;
}
 
.description{
        font-style: italic;
        list-style: none;
    word-wrap: break-word;
    width: 80%;
    position:relative;
}

PHP

La case �v�nement, la div description
Code php : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
// Affichage d'un événement qui dure uniquement une journée
echo "<td class=\"event_case\" onclick=\"evenement(".$evenement.");\" >".$day."</td></tr><tr>";
// Affichage du détail des événements existants
echo "<div class=\"evenement\" id=$evenement>";                  
echo "<ul>";
echo "<li class=\"today\">".$days[$num_day-1]." ".date('j', $datetime)." ".$months[$month-1]."</li>";
$i--;
while ($i >= 0){
   echo "<li style=\"font-weight: bold; font-size: 15px;\">".$nom_event[$i]."</li>";
   echo "<li class=\"description\">".$description[$i]."</li>";
$i--;
}

Le JS

Fonction d'affichage
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Fonction qui permet d'afficher les événements d'un jour en cliquant sur sa case correspondante
function evenement(id_case) {
    var visible;
    var id_events = 13; // id du premier événement
    //var invisible;
    visible = document.getElementById(id_case);
    invisible = document.getElementById(id_events);
    while (invisible){ // Test si l'événement existe
        invisible.style.display = "none";
        if (id_events == id_case){ // Affichage de l'événement sur lequel on a cliqué uniquement
             visible.style.display = "block";
        }
        id_events++;
        invisible = document.getElementById(id_events);
    }
}
Je suis vraiment d�boussol�, je ne comprends pas vraiment ce qu'il se passe ! :S