Partage
  • Partager sur Facebook
  • Partager sur Twitter

Apparition d'images à des dates précises

    21 janvier 2009 à 22:19:48

    Bonsoir,

    J'ai besoin d'aide pour l'écriture d'un code Javascript et j'espère que vous aurez la gentillesse de m'aider.

    Le but du script est de gérer l'apparition d'images différentes en fonction de la date du jour à savoir (par exemple) :
    • "image1" doit apparaître du 15 au 25 janvier
    • <puce>"image2" doit apparaître du 27 février au 10 mars
    • etc.
    • lorsqu'il n'y a aucune date spécifiée, c'est "image00" qui apparaît par défaut.

    J'ai trouvé sur Internet un script approchant un peu de ce que je veux faire. J'ai donc essayé de le décrypter (je ne suis pas du tout programmeur, il a donc fallu que j'essaie d'abord de deviner à quoi servait chaque ligne ou chaîne de caractères totalement nébuleuses pour moi), puis de l'adapter.

    Sans réelle surprise, une fois copié sur la page du site, mon script ne marche pas. Voici le code, pourriez-vous m'aider à le corriger ? Merci d'avance.


    <SCRIPT LANGUAGE="JavaScript">

    function TodayDate() {
    var m = new Array( "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
    var y = new Array( "2009", "2010");
    var today = new Date();
    var day = today.getDate();
    return (day + " " + m[today.getMonth()] + " " + y[today.getYear()]);
    }
    var date = TodayDate();

    if (date >= "15 janvier 2009" && date <= "25 janvier 2009") { document.write("<img src="images/image1.gif" border=0>"); }
    if (date >= "27 février 2009" && date <= "10 mars 2009") { document.write("<img src="images/image2.gif" border=0>"); }
    else { document.write("<img src="images/image00.gif" border=0>"); }

    </SCRIPT>



    Par ailleurs, je préférerais placer ce code dans un "fichier.js" et placer un appel à ce fichier au bon endroit dans ma page html. Quel code dois-je alors mettre dans mon html ? Et dois-je écrire quelque chose dans le "head" de ma page ?

    Voilà. N'étant pas une habituée du jargon, j'espère avoir exprimé ma demande clairement.
    Merci beaucoup pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2009 à 1:54:20

      Il me semble que faire cela en PHP serait tout aussi (plus ?) facile, et cela fonctionnerait chez tout le monde, et pas seulement chez les gens qui ont activé javascript.
      Sans compter que ton script ne risque surement pas de fonctionner puisque tu regardes si une date est plus petite que le chaine de caractères "15 janvier 2009", il est évidemment impossible de faire une telle comparaison :p

      Voici un bout de code PHP qui fait cela :
      <?php
      //Date actuelle en format timestamp
      $date = time();
      
      //Dates limites dans le même format
      $date1 = strtotime('15.01.2009');
      $date2 = strtotime('25.01.2009');
      $date3 = strtotime('27.02.2009');
      $date4 = strtotime('10.03.2009');
      
      $monimage = 'images/image00.gif'; //Image par défaut
      if($date > $date1 && $date < $date2){
      	$monimage = 'images/image1.gif';
      }
      elseif($date > $date3 && $date < $date4){
      	$monimage = 'images/image2.gif';
      }
      
      //On affiche l'image
      echo '<img src="'.$monimage.'" />';
      ?>
      
      • Partager sur Facebook
      • Partager sur Twitter
        22 janvier 2009 à 22:28:17

        Bonsoir Elias et un grand merci pour ta réponse !!!

        Le problème est que le serveur sur lequel le site est hébergé n'accepte pas le PHP. :colere2:
        Mais grâce à ton code et à beaucoup de recherche sur le net (pour rappel, je n'ai jamais programmé donc je dois vraiment tout chercher, élément par élément), et après 25.000 messages d'erreur, j'ai pu écrire un code ASP correspondant.

        Je n'ai (enfin !) plus de message d'erreur mais il subsiste un problème de taille : nous sommes le 22 janvier et c'est l'image par défaut (image0, appelée dans le "else") qui s'affiche. Pourquoi ?


        <% IF date>= dateSerial(109,1,20) and date<= dateSerial(109,1,25) THEN
        Response.write ("<img src=images/image1.gif>")

        ELSEIF date>= dateSerial(109,2,20) and date<= dateSerial(109,2,25) THEN
        Response.write ("<img src=image2/image2.gif>")

        ELSE
        Response.write ("<img src=image0/image0.gif>")

        end IF %>



        (désolée, me voilà en train de parler d'ASP dans la partie javasript du forum... mais il vaut mieux garder le fil de la discussion, je suppose ?)
        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2009 à 10:39:28

          Et sinon, dans ton js :
          if (date >= "15 janvier 2009" && date <= "25 janvier 2009") ...
          

          Tu compare des un objet date a une chaine string, de plus je ne voit pas comment un objet peut être supérieur ou égal a une chaine.
          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2009 à 11:21:42

            Bonjour Zoro-zerO,

            Oui, j'ai bien compris mon erreur d'ultra-débutante.
            Mais sur le conseil d'Elias, j'ai abandonné l'idée de faire cela en javascript au profit de l'ASP (le serveur du site n'acceptant pas le PHP). Mais j'ai des difficultés aussi car hier (22/01, donc), c'est l' "image0" qui s'affichait.

            Je cherche donc ce qui foire dans le code suivant.

            <code><% IF date>= dateSerial(109,1,20) and date<= dateSerial(109,1,25) THEN
            Response.write ("<img src=images/image1.gif>")
            
            ELSEIF date>= dateSerial(109,2,20) and date<= dateSerial(109,2,25) THEN
            Response.write ("<img src=image2/image2.gif>")
            
            ELSE
            Response.write ("<img src=image0/image0.gif>")
            
            end IF %></code>
            
            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2009 à 12:52:42

              Je ne connais pas du tout l'ASP, mais je suis très étonné par les paramètres que tu passes à la fonction dateSerial, et cette page semble confirmer mes doutes. Pourquoi écris-tu dateSerial(109, 1, 20), et non dateSerial(2009, 1, 20) ?
              Essaie en changeant tes paramètres dans les fonctions dateSerial pour y mettre les années correctes (2009 au lieu de 109).
              • Partager sur Facebook
              • Partager sur Twitter
                23 janvier 2009 à 14:00:20

                Bonjour Elias,
                Décidément, il est écrit que tu est voué à voler à mon secours. :p Et je t'en remercie vivement. :)

                Pourquoi 109 et pas 2009 ? Parce que j'ai lu dans 2 tutos différents (je ne sais plus où) que dans cette syntaxe, les années codées 0 à 99 correspondaient à 1900-1999 et qu'à partir de 2000, on les codait 100 à... 9999 (pour ceux qui veulent vivre vieux).

                Je devais être très fatiguée hier soir car, crispée sur mon problème, je n'ai même pas pensé à essayer d'écrire "bêtement" 2009. :honte:
                J'essaie ce soir car je n'ai pas les fichiers ici. Et je viendrai dire ce qu'il en est, bien entendu.
                • Partager sur Facebook
                • Partager sur Twitter

                Apparition d'images à des dates précises

                × 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