IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[PHP-JS] Calendrier dynamique et ce fichu mois de juin


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 33
    Points : 17
    Points
    17
    Par défaut [PHP-JS] Calendrier dynamique et ce fichu mois de juin
    Bonjour.

    J'ai créé pour un forum un calendrier dynamique en javascript qui se met automatiquement sur le mois en cours et permet d'afficher le suivant.
    Il permet d'afficher des messages issus d'une base de données en appelant un fichier PHP via la balise script.

    Pour l'illustration, il se trouve ici.

    Le problème, c'est le mois de juin... Qui a eu la bonne idée de commencer par un dimanche. Du coup il me faut une sixième ligne rien que pour le 30 juin.

    Je souhaiterais n'afficher cette ligne qu'en cas de besoin. Donc pour un mois plus gentil envers moi que juin, comme le mois de mai, il n'y aurait que 5 lignes pour afficher les jours.

    Pour compliquer le tout il est possible d'accéder au mois suivant par un lien... Donc il faut si besoin ajouter/retirer une ligne au clic sur ce lien en fonction du mois.


    J'ai déjà fait le système grâce à des insertRow, insertCell et deleteRow. Tout fonctionne sous IE... Mais ça plante sous Firefox. Aurais-je utilisé des fonctions non conformes ?


    Voici le code qui s'exécute à l'affichage de la page :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    rowChang = 7;
    
    var jourdhui = new Date();
    
    var MOIS = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre","Janvier");
    
    var prefixe;
    if((MOIS[jourdhui.getMonth()].substring(0,1) == "A")||(MOIS[jourdhui.getMonth()].substring(0,1) == "O")) prefixe = "d'"; else prefixe = "de ";
    
    document.getElementById('calendrier').rows[0].cells[0].innerHTML = 'Calendrier du mois '+prefixe+MOIS[jourdhui.getMonth()];
    
    var ecart = jourdhui.getDate() -1;
    var jour = jourdhui;
    jour.setDate(jour.getDate()-ecart);
    
    Tcase = jour.getDay() -1;
    if(Tcase == -1) Tcase = 6;
    
    var ligne = 2;
    var moisActu = jourdhui.getMonth();
    while(jour.getMonth() == moisActu)
    {
    
    //6e ligne de jours
    if((ligne==7)&&(Tcase==0))
    {
    rowChang = 8;
    document.getElementById('calendrier').insertRow(7);
    document.getElementById('calendrier').rows[7].align = "center";
               for(a=0; a <= 6; a++)
               {
               document.getElementById('calendrier').rows[7].insertCell();
               document.getElementById('calendrier').rows[7].cells[a].innerHTML = '*';
               }
    document.getElementById('calendrier').rows[1].cells[7].rowSpan++;
    }
    
    //Affectation
    document.getElementById('calendrier').rows[ligne].cells[Tcase].innerHTML = '<a href="javascript:aff('+(jour.getDate()-1)+')">'+jour.getDate()+'</a>';
    
    //Incrémentation
    jour.setDate(jour.getDate() + 1);
    
    //Changement de case
    if(Tcase < 6) Tcase++; else {Tcase=0; ligne++;}
    
    }
    
    //Changement de mois
    jourdhui = new Date();
    document.getElementById('calendrier').rows[rowChang].cells[0].innerHTML = '<a href="javascript:changMois(1)">==> '+MOIS[jourdhui.getMonth()+1]+'</a>'
    
    //Récupération du pseudo du joueur
    var REGpseudo = new RegExp("^<span [^>]*>(.*)</span>$",'gi');
    var pseudoCo = REGpseudo.exec(document.getElementById('pseudoCo').innerHTML)[1].toLowerCase();
    
    //-------------------MESSAGES-------------------
    
    var message = new Array();
    for(a=0 ; a <= 30 ; a++)
    for(b=0 ; b < 12 ; b++){message[a+MOIS[b]] = new Array();}
    
    //Appel du code du fichier PHP
    jourdhui = new Date();
    data = "?mois1="+MOIS[jourdhui.getMonth()]+"&mois2="+MOIS[jourdhui.getMonth()+1];
    
    document.write('<SCR'+'IPT type="text/javascript" src="http://max54.servehttp.com/Pikrass/recup.php'+data+'"></SCR'+'IPT>');
    
    //-----------------FIN MESSAGES-----------------
    
    //Mois courant ou suivant ?
    var moisAff = 0;
    Et voici le code de changement de mois :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    function changMois(aj)
    {
    
    jourdhui = new Date();
    jourdhui.setMonth(jourdhui.getMonth() + aj);
    
    
    var prefixe;
    if((MOIS[jourdhui.getMonth()].substring(0,1) == "A")||(MOIS[jourdhui.getMonth()].substring(0,1) == "O")) prefixe = "d'"; else prefixe = "de ";
    
    document.getElementById('calendrier').rows[0].cells[0].innerHTML = 'Calendrier du mois '+prefixe+MOIS[jourdhui.getMonth()];
    
    var ecart = jourdhui.getDate() -1;
    var jour = jourdhui;
    jour.setDate(jour.getDate()-ecart);
    
    Tcase = jour.getDay() -1;
    if(Tcase == -1) Tcase = 6;
    
    var ligne = 2;
    var moisActu = jourdhui.getMonth();
    
    //A bas la 6e ligne de jours !
    if(document.getElementById('calendrier').rows.length == 9)
    {document.getElementById('calendrier').deleteRow(7); rowChang = 7;}
    
    for(Rligne in document.getElementById('calendrier').rows)
    {
    for(Rcol in document.getElementById('calendrier').rows[Rligne].cells)
    if((Rligne>=2)&&(Rligne<=6)&&(Rcol<7))
    document.getElementById('calendrier').rows[Rligne].cells[Rcol].innerHTML = "&#160;";
    }
    
    while(jour.getMonth() == moisActu)
    {
    
    //6e ligne de jours
    if((ligne==7)&&(Tcase==0))
    {
    rowChang = 8;
    document.getElementById('calendrier').insertRow(7);
    document.getElementById('calendrier').rows[7].align = "center";
               for(a=0; a <= 6; a++)
               {
               document.getElementById('calendrier').rows[7].insertCell();
               document.getElementById('calendrier').rows[7].cells[a].innerHTML = '&#160;';
               }
    document.getElementById('calendrier').rows[1].cells[7].rowSpan++;
    }
    
    //Affectation
    document.getElementById('calendrier').rows[ligne].cells[Tcase].innerHTML = '<a href="javascript:aff('+(jour.getDate()-1)+')">'+jour.getDate()+'</a>';
    
    //Incrémentation
    jour.setDate(jour.getDate() + 1);
    
    //Changement de case
    if(Tcase < 6) Tcase++; else {Tcase=0; ligne++;}
    
    }
    
    moisAff = aj;
    
    
    var deb=""; var fin="";
    if(aj==0) {contrAj = 1;deb="==> ";} else {contrAj = 0;fin=" <==";}
    
    jourdhui = new Date();
    jourdhui.setMonth(jourdhui.getMonth() + contrAj);
    
    document.getElementById('calendrier').rows[rowChang].cells[0].innerHTML = '<a href="javascript:changMois('+contrAj+')">'+deb+MOIS[jourdhui.getMonth()]+fin+'</a>';
    
    } //Fin changMois
    J'ai à chaque fois mis en gras le bout du code qui s'occupe d'ajouter la ligne manquante, et qui ferait planter l'exécution sous Firefox.


    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    je te suggèrerasi d'aller jeter un oeil à ce calendrier là ...
    tu peux en récupérer la partie de construction !
    http://www.developpez.net/forums/sho...d.php?t=443310

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Je viens de parcourir un peu ce code.

    Le problème, c'est que j'ai déjà créé le calendrier, et il y aurait pas mal de choses à faire pour intégrer celui de la source... (et puis j'y tiens à mon ptit tableau )

    Je préférerais corriger le problème qui empêche mon calendrier de fonctionner sous FF. Y'a surement un moyen.

    Sinon au pire je mettrais la sixième ligne en permanence.

Discussions similaires

  1. [Prototype] Tutoriel : "Développer un calendrier dynamique avec AJAX et PHP"
    Par brutos dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 08/06/2013, 16h35
  2. [Calendrier] Créer un calendrier dynamique en php
    Par almisuifre dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 11/01/2012, 09h27
  3. Calendrier dynamique - choix du mois à afficher
    Par drixmok dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2009, 15h50
  4. calendrier dynamique
    Par fab44 dans le forum IHM
    Réponses: 6
    Dernier message: 23/02/2009, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo