Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calendrier

Peut-on commencer par le lundi ?

    16 avril 2010 à 15:20:04

    Bonjour,

    J'ai récupéré ce code sur internet et j'aimerais le modifier pour que les jours de la semaine s'affichent en commençant par le lundi.

    <table><script language="JavaScript">
    <!-- This script and many more are available free online at -->
    <!-- The JavaScript Source!! http://javascript.internet.com -->
    <!--//Begin
    monthnames = new Array(
    "Janvier",
    "Février",
    "Mars",
    "Avril",
    "Mai",
    "Juin",
    "Juillet",
    "Aout",
    "Septembre",
    "Octobre",
    "Novembre",
    "Décembre");
    var linkcount=0;
    function addlink(month, day, href) {
    var entry = new Array(3);
    entry[0] = month;
    entry[1] = day;
    entry[2] = href;
    this[linkcount++] = entry;
    }
    Array.prototype.addlink = addlink;
    linkdays = new Array();
    monthdays = new Array(12);
    monthdays[0]=31;
    monthdays[1]=28;
    monthdays[2]=31;
    monthdays[3]=30;
    monthdays[4]=31;
    monthdays[5]=30;
    monthdays[6]=31;
    monthdays[7]=31;
    monthdays[8]=30;
    monthdays[9]=31;
    monthdays[10]=30;
    monthdays[11]=31;
    todayDate=new Date();
    thisday=todayDate.getDay();
    thismonth=todayDate.getMonth();
    thisdate=todayDate.getDate();
    thisyear=todayDate.getYear();
    thisyear = thisyear % 100;
    thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
    if (((thisyear % 4 == 0) 
    && !(thisyear % 100 == 0))
    ||(thisyear % 400 == 0)) monthdays[1]++;
    startspaces=thisdate;
    while (startspaces > 7) startspaces-=7;
    startspaces = thisday - startspaces + 1;
    if (startspaces < 0) startspaces+=7;
    document.write("<FONT face='Verdana'>");<!--Font Face-->
    document.write("<table border=1 " );<!--Border size-->
    document.write("style='font-size : 14px; color : #1E90FF;' cellpadding=0 cellspacing=1>");<!--Border color, font size, cell padding, cellspacing and font color-->
    
    document.write("<tr><td colspan=7><center>" 
    + monthnames[thismonth] + " " + thisyear 
    + "</center></td></tr>");
    document.write("<tr>");
    document.write("<td align=center><font color=#FF0000>D</td>");<!--The color here and below are for each week day-->
    document.write("<td align=center><font color=#FF0000>L</td>");
    document.write("<td align=center><font color=#FF0000>M</td>");
    document.write("<td align=center><font color=#FF0000>M</td>");
    document.write("<td align=center><font color=#FF0000>J</td>");
    document.write("<td align=center><font color=#FF0000>V</td>");
    document.write("<td align=center><font color=#FF0000>S</td>");<!--Last color chage here-->
    document.write("</tr>");
    document.write("<tr>");
    for (s=0;s<startspaces;s++) {
    document.write("<td>-</td>");
    }
    count=1;
    while (count <= monthdays[thismonth]) {
    for (b = startspaces;b<7;b++) {
    linktrue=false;
    document.write("<td>");
    for (c=0;c<linkdays.length;c++) {
    if (linkdays[c] != null) {
    if ((linkdays[c][0]==thismonth + 1) && (linkdays[c][1]==count)) {
    document.write("<a href=\"" + linkdays[c][2] + "\">");
    linktrue=true;
    }
    }
    }
    if (count==thisdate) {
    document.write("<font color='#FF0000'>");<!--todays date color-->
    }
    if (count <= monthdays[thismonth]) {
    document.write(count);
    }
    else {
    document.write(" ");
    }
    if (count==thisdate) {
    document.write("</font>");
    }
    if (linktrue)
    document.write("</a>");
    document.write("</td>");
    count++;
    }
    document.write("</tr>");
    document.write("<tr>");
    startspaces=0;
    }
    document.write("</table>");
    document.write("</FONT>");
    </script></table>
    


    Est-ce possible ?

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2010 à 16:11:45

      Bonjour,

      Oui, c'est possible.

      Gripsou
      • Partager sur Facebook
      • Partager sur Twitter
        17 avril 2010 à 11:40:43

        Merci pour ta réponse, pourrais-tu m'expliquer comment faire ?
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2010 à 12:19:47

          Vu que de toutes façons tu n'y connais rien que tu n'as surement ni l'envie ni le temps d'apprendre...

          Nettoyé, recodé, à peu près standardisé.

          Y'a deux commentaires dans le code, c'est tout ce qu'il te faut savoir.

          <div id="mon_calendrier">
          </div>
          <script language="JavaScript">
              /* Id de l'élément qui contiendra le calendrier */
              var conteneur = "mon_calendrier",
                  monthnames = [
                      "Janvier",
                      "Février",
                      "Mars",
                      "Avril",
                      "Mai",
                      "Juin",
                      "Juillet",
                      "Aout",
                      "Septembre",
                      "Octobre",
                      "Novembre",
                      "Décembre"],
                  todayDate = new Date(),
                  thisday = todayDate.getDay(),
                  thismonth = todayDate.getMonth(),
                  thisdate = todayDate.getDate(),
                  thisyear = todayDate.getFullYear(),
                  monthdays = 32 - (new Date(32, thismonth, thisyear)).getDate(),
                  linkdays = [],
                  startspaces = thisdate,
                  html = "";
          
              linkdays.addlink = function(month, day, href) {
                      var entry = [month, day, href];
                      this[this.length] = entry;
                  };
          
              /* Ajout de liens sur certaines dates : */
              linkdays.addlink(4, 15, 'http://www.google.fr');
          
          
              while (startspaces > 7) { startspaces -= 7 }
              startspaces = thisday - startspaces;
              if (startspaces < 0) { startspaces += 7 }
          
              html += "<table border='1' ";
              html += "style='font-family: Verdana; font-size : 14px; color : #1E90FF;' cellpadding='0' cellspacing='1'>";
              html += "<tr><td colspan='7' style='text-align:center;'>";
              html += monthnames[thismonth] + " " + thisyear;
              html += "</td></tr>"
              html += "<tr>";
              html += "<td style='text-align:center; color:#FF0000;'>L</td>";
              html += "<td style='text-align:center; color:#FF0000;'>M</td>";
              html += "<td style='text-align:center; color:#FF0000;'>M</td>";
              html += "<td style='text-align:center; color:#FF0000;'>J</td>";
              html += "<td style='text-align:center; color:#FF0000;'>V</td>";
              html += "<td style='text-align:center; color:#FF0000;'>S</td>";
              html += "<td style='text-align:center; color:#FF0000;'>D</td>";
              html += "</tr>";
              html += "<tr>";
          
              for (var s = 0; s < startspaces; s++) {
                      html += "<td>-</td>";
                  }
          
              var count = 1;
              while (count <= monthdays) {
                      for (var b = startspaces; b < 7; b++) {
                          var linktrue = false;
                          html += "<td";
                          if (count == thisdate) {
                              html += " style='color:#FF0000;'";
                          }
                          html += ">";
          
                          for (c = 0; c < linkdays.length; c++) {
                              if (linkdays[c] != null) {
                                  if ((linkdays[c][0] == thismonth + 1) && (linkdays[c][1] == count)) {
                                      html += "<a href='" + linkdays[c][2] + "'>";
                                      linktrue = true;
                                  }
                              }
                          }
          
                          if (count <= monthdays) {
                              html += count;
                          } else {
                              html += " ";
                          }
          
                          if (linktrue) {
                              html += "</a>";
                          }
                          html += "</td>";
                          count++;
                      }
                      html += "</tr><tr>";
                      startspaces = 0;
                  }
              html = html.substring(0, html.length - 4);
              html += "</table>";
          
              if (window.addEventListener) {
                      window.addEventListener('load', function() {
                          document.getElementById(conteneur).innerHTML = html;
                      }, false);
                  } else {
                      window.attachEvent('onload', function() {
                          document.getElementById(conteneur).innerHTML = html;
                      });
                  }
          </script>
          


          Pense à mettre ton sujet en résolu à l'aide du bouton approprié ;)
          • Partager sur Facebook
          • Partager sur Twitter
            18 avril 2010 à 10:11:16

            Merci beaucoup pour ce code.
            Effectivement je n'y connais rien, je ne connais que le php mais je vais essayer de comprendre.

            Pour les liens c'est super, par contre seul le lien du 15 fonctionne ?

            Encore merci.
            • Partager sur Facebook
            • Partager sur Twitter
              18 avril 2010 à 12:06:22

              Bah il faut que tu ajoutes après la ligne 35. J'en ai mis un pour te montrer comment ça fonctionnait.
              • Partager sur Facebook
              • Partager sur Twitter
                18 avril 2010 à 17:20:03

                En fait vu le code :
                linkdays.addlink(4, 15, 'http://www.google.fr');
                


                Je pensais que le lien devait se faire sur le 4 et le 15, il ne se fait que sur le 15.

                Il sert à quoi le 4 ?
                • Partager sur Facebook
                • Partager sur Twitter
                  18 avril 2010 à 20:01:34

                  Bah... à indiquer le mois.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 avril 2010 à 10:49:10

                    Ah ok j'avais pas compris :o

                    Encore merci.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 avril 2010 à 18:18:01

                      Bonjour,

                      Heureusement que Golmote est une bonne âme charitable (Trop bonne selon moi).
                      Cela est nullement contre toi pitit mais cela m'étonnerait que tu apprennes quelque chose et que tu t'en donnes la peine donc ce n'est pas t'aider que faire ce qu'à fait Golmote.

                      J'en veux pour preuve que tu n'avais pas compris que c'était le mois en premier paramètre alors qu'il t'aurait juste fallu lire le code y trouver la déclaration de la méthode:

                      linkdays.addlink = function(month, day, href) {
                                  var entry = [month, day, href];
                                  this[this.length] = entry;
                              };
                      


                      Voir que le premier paramètre se nomme "month" dont je ne te ferais pas la traduction.

                      Sur ceux j'espère que tu seras content de ce calendrier et te souhaite un bon apprentissage je l'espère.

                      Gripsou
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 avril 2010 à 18:53:03

                        Totalement d'accord.

                        Mais histoire de me justifier : beaucoup de zéros viennent ici sans aucune intention d'apprendre... Et j'en ai un peu marre de les envoyer paître à tout va... Donc bon... à l'occasion je me dévoue.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 mai 2010 à 20:10:07

                          Je relance le sujet, car on est le 1er mai et le calendrier ne s'affiche plus entièrement.
                          J'ai tenté de comprendre le code à l'aide du cours mais :o
                          Rien à faire, je n'arrive même pas à afficher l'heure en JS :(

                          D'ailleurs je posterais sans doute à ce sujet plus tard.

                          En attendant, je ne comprends pas pourquoi le calendrier n'affiche que le chiffre 1 et puis plus rien.

                          Je ne pense pas qu'il faille modifier le code tous les mois !

                          J'avais aussi remarqué que le mois d'avril affichait 31 jours, sans doute à cause de cette ligne :

                          monthdays = 32 - (new Date(32, thismonth, thisyear)).getDate(),
                          


                          Dans l'ancien code,il y avait ça :

                          Array.prototype.addlink = addlink;
                          linkdays = new Array();
                          monthdays = new Array(12);
                          monthdays[0]=31;
                          monthdays[1]=28;
                          monthdays[2]=31;
                          monthdays[3]=30;
                          monthdays[4]=31;
                          monthdays[5]=30;
                          monthdays[6]=31;
                          monthdays[7]=31;
                          monthdays[8]=30;
                          monthdays[9]=31;
                          monthdays[10]=30;
                          monthdays[11]=31;
                          


                          Merci de m'aider à comprendre ce code pour que je puisse m'en sortir.

                          D'ailleurs plus tard, je voudrais pouvoir afficher par exemple le calendrier des 3 prochains mois...
                          Il faut donc que je comprenne ce JS !!

                          • Partager sur Facebook
                          • Partager sur Twitter
                            2 mai 2010 à 3:20:24

                            En effet je me suis planté sur la ligne du monthdays, j'ai inversé l'ordre des paramètres.

                            monthdays = 32 - (new Date(thisyear, thismonth, 32)).getDate(),
                            


                            Pense à mettre ton sujet en résolu à l'aide du bouton approprié ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 mai 2010 à 9:01:30

                              Merci, effectivement tout fonctionne.

                              Je voudrais savoir si ça va fonctionner pour les mois à 30 voire 28 jours ou pas ?

                              Car pour le mois d'avril les jours allaient jusqu'à 31 ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 mai 2010 à 11:05:12

                                Bah en même temps, cette ligne devait faire bugguer.

                                Normalement, cette ligne donne le nombre du jours dans le mois en cours. Donc ça devrait fonctionner.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 mai 2010 à 21:42:02

                                  Ok merci,je verrai le mois prochain.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 mai 2010 à 14:54:46

                                    Bonjour,

                                    Je viens de remarquer que le calendrier est beaucoup plus gros sous IE, il déborde de mon menu.
                                    A part agrandir mon menu en largeur, y a-t-il une autre solution ?

                                    Merci.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 mai 2010 à 18:13:39

                                      Modifier comme bon te semble le style CSS de la <table> ligne 43.

                                      Pense à mettre ton sujet en résolu à l'aide du bouton approprié ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 mai 2010 à 9:42:56

                                        Oui merci, j'avais bien vu la ligne, j'ai modifié la taille à 11 px depuis le début.
                                        C'est parfait pour firefox mais sous IE la taille est toujours trop grosse.
                                        Lorsque je la passe à 9 px, sous firefox le calendrier diminue mais pas sous IE :(

                                        J'ai mis le calendrier en class="calendrier" pour le modifier sur ma feuille css mais ça ne fonctionne pas non plus. :colere2:

                                        Je ne sais pas quoi faire d'autre.
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Calendrier

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown