Modifier script "date suivant texte" [Résolu]

Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
- - Dernière réponse : archi57
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
- 15 nov. 2006 à 20:09
Bjr le forum,


j'aimerai modifier le script suivant de facon a ne faire apparaitre que "la date et le message" à venir et non la date du jour comme actuellement !!
mais je ne vois pas comment procéder ??
pouvez-vous m'aider ?
merci d'avance
bye


<html>
<head>
<SCRIPT LANGUAGE="JavaScript">


<!--
var days = new Array();
var msgs = new Array();


days[0] = "november 12, 2006";
msgs[0] = "Sarrebourg contre Hangwiller à 14h";


days[1] = "november 20, 2006";
msgs[1] = "Niderviller contre Sarrebourg à 14h";


days[2] = "December 26, 2006";
msgs[2] = "Championnat Minimes à 14h au Cosec";


var months = new Array("",
"janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre"
);


var today = new Date(); // today
var mon = months[today.getMonth() + 1]; // month
var day = today.getDate(); // day
var year = y2k(today.getYear()); // year
var jour = today.getDay();
switch(jour){
case 1 :
jour1 ="lundi"
break;
case 2 :
jour1 ="mardi"
break;
case 3 :
jour1 ="mercredi"
break;
case 4 :
jour1 ="jeudi"
break;
case 5 :
jour1 ="vendredi"
break;
case 6 :
jour1 ="samedi"
break;
case 7 :
jour1 ="dimanche"
break;
}


function dateMsg() {
for (i = 0; i < days.length; i++) {
tempdate = new Date(days[i]);
tempmonth = months[tempdate.getMonth() + 1];
tempday = tempdate.getDate();
tempyear = y2k(tempdate.getYear());if (year tempyear &amp;&amp; mon tempmonth &amp;&amp; day == tempday)
return(""+ jour1 + " " + day + " " + mon + " " + year + ": "+ msgs[i]); // returns day message
   }
return(""+ jour1 + " " + day + " " + mon + " " + year + ":"); // returns default
}


// Y2K Fix Function
function y2k(year) {
if (year < 2000)
year = year + 1900;
return year;
}
// End -->
</script>
</head>
<script>document.write(dateMsg());</script>

</html>
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
3
Merci
Excellent PetroleTeam, té un pro
...merci mais PetoleTeam tout court est suffisant, bon bref, ce qui suit devrait répondre à ta demande...





//----------------

function dateMsg(){
  var Chaine =""; // Initialisation Chaine vide
  var Count =0;   // Compteur de message
  var szMsg;
  var szToday;
  var szDemain;
  var Date_Ref = new Date(); // Récup date Aujourdh'ui
  //-- Formatage Date du jour
  szToday = Format_Date( Date_Ref);






  //-- Récup Date demain, on ajoute 1 jour et on laisse faire javascript







  Date_Ref.setDate(Date_Ref.getDate()+1);






  //-- Formatage Date de Demain







  szDemain = Format_Date( Date_Ref);
  //-- On parcours les données
  for( i=0; i<days.length; i++){
    Date_Ref  = new Date(days[i]);
    //-- Formatage Date du Message
    szMsg = Format_Date( Date_Ref);
    //-- Comparaison de chaine
    if( szMsg >= szToday){
      Count++;                 // Compteur de message
      if( Count > 2) continue; // Stop la boucle si déjà 2 messages
      Chaine += "";
      //-- Texte suivant le Cas
      if( szMsg == szToday)
        Chaine += "Aujourdh'ui," ;
      else if( szMsg == szDemain)
        Chaine += "Demain," ;
      else
        Chaine += szJour[Date_Ref.getDay()];






      //-- et le Texte générique







      Chaine += " " +Date_Ref.getDate();
      Chaine += " " +szMois[Date_Ref.getMonth()];
      Chaine += " " +Date_Ref.getFullYear();
      Chaine += "
";
      Chaine += msgs[i];
      Chaine += "
";
    }
  }
  if( Count)
    //-- On retourne la chaine
    return( Chaine) ;
  else
    return("Aucune manifestaion prévue...");
}




C'est la seule fonction qui change...
;0)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
B

onjour...

Je pense qu'un petit effort de compréhension t'aurais fait trouver tout seul...



function dateMsg(){
  for (i = 0; i < days.length; i++) {
    tempdate = new Date(days[i]);
    tempmonth = months[tempdate.getMonth() + 1];
    tempday = tempdate.getDate();
    tempyear = y2k(tempdate.getYear());    if (year tempyear && mon tempmonth && day == tempday)
      return(""+ jour1 +" " +day +" " +mon +" " +year +": " +msgs[i]); // returns day message
  }
<strike>  return(""+ jour1 + " " + day + " " + mon + " " + year + ":");</strike> // returns default
}
Il n'y a qu'à rien retourner





;0)
Commenter la réponse de PetoleTeam
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
Merci PetroleTeam, mais avec ta modif, je n'obtiens pas la date à venir, a savoir "le 20 novembre" ?
le code m'affiche "undefined"

bye
Commenter la réponse de archi57
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
1000 excuses je n'avions pas tout saisie...

Cette fois ci je pense être en phase ce qui donne en version simplifiée

<html>
<head>
<script type= "text/javascript">
var szJour = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
var szMois = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
var Today  = new Date();
var days   = new Array();
var msgs   = new Array();
//-- on utilise i avec i++ pour pouvoir déplacer les messages ou en créer facilement
var i=0;
days[i] = "november 12, 2006";
msgs[i++] = "Sarrebourg contre Hangwiller à 14h";
days[i] = "november 20, 2006";
msgs[i++] = "Niderviller contre Sarrebourg à 14h";
days[i] = "december 26, 2006";
msgs[i++] = "Championnat Minimes à 14h au Cosec";

//------------------------------------
// Retourne la date au format AAAAMMJJ
//------------------------------------
function Format_Date( date_){
  var Chaine="";
  var Jour  = date_. getDate ();
  var Mois  = date_.getMonth();
  var Annee = date_. getFullYear ();
  Chaine + = Annee;
  if( Mois < 10) Chaine +="0"; // Ajout d'un 0 avant
  Chaine += Mois;
  if( Jour < 10) Chaine +="0";


// Ajout d'un 0 avant





  Chaine += Jour;
  return( Chaine);
}
//----------------
function dateMsg(){
  var tempdate;
  var szMsg;



  var szToday;





  //-- Formatage Date du jour





  szToday = Format_Date( Today);
  for( i=0; i<days.length; i++){
    tempdate  = new Date(days[i]);




    //-- Formatage Date du Message





    szMsg = Format_Date( tempdate);
    //-- Comparaison de chaine
    if( szMsg >= szToday){
      Chaine  = szJour[tempdate.getDay()];
      Chaine += " " +tempdate.getDate();
      Chaine += " " +szMois[tempdate.getMonth()];
      Chaine += " " +tempdate.getFullYear();
      //-- On retourne la chaine
      return( Chaine +"
" +msgs[i]) ;
    }
  }
  return("Aucune manifestaion prévue...");
}
</script>
</head>
<script type="text/javascript">document.write(dateMsg());</script>

</html>





J'espère que cela te convient, il n'y a rien de bien sorcier dans ce qui est au dessus mais si tu as besoin d'explication complémentaire...

;0)
Commenter la réponse de PetoleTeam
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
Excellent PetroleTeam, té un pro

une dernière question pour conclure le script:
sachant bien sur que j'ai une vingtaine de dates à saisir !!
comment faire en sorte d'afficher comme suit (suivant la date du jour)

Si on est le 11 novembre par exemple, il faut obtenir:

Demain, 12 novembre:
Sarrebourg contre Hangwiller à 14h
Le mardi 20 Novembre:
Niderviller contre Sarrebourg à 14h

OU

Si on est le 12 novembre par exemple, il faut obtenir:

Aujourd'hui, 12 novembre:
Sarrebourg contre Hangwiller à 14h
Le mardi 20 Novembre
Niderviller contre Sarrebourg à 14h

OU

Si on est le 13, 14,etc...jusqu'au 18 novembre par exemple, il faut obtenir:

Le mardi 20 Novembre:
Sarrebourg contre Hangwiller à 14h
Le Dimanche 26 Novembre:
Championnat Minimes à 14h au Cosec

OU

Si on est le 26 novembre (et qu'il ya une compétition le 27), il faut obtenir:





Aujourd'hui, 26 Novembre:
Championnat Minimes à 14h au Cosec
Demain, 27 Novembre:
Hangwiller contre Sarrebourg à 14h

voila, pour les cas de figures !!
merci d'avance
bye
Commenter la réponse de archi57
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
Merci pour tous PetoleTeam...bye
Commenter la réponse de archi57
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
dernière chose tous de même:
 quel fonction faut t-il changer pour n'afficher qu'une seule date+message ??
merci
bye
Commenter la réponse de archi57
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
non c'est bon j'ai trouvé
bye
Commenter la réponse de archi57
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
tu va me trouver un peu concon, mais je n'arrive pas a insérer un saut de ligne entre deux date+message ??
de plus j'aimerai pouvoir régler en hauteur cette espacement créer ??
peux tu m'aider?
bye
Commenter la réponse de archi57
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
Il faut passer par le CSS pour plus de souplesse...
...cela peut donner cela par exemple...

Dans la partie HEAD du document tu écris...

<style type= "text/css">
.msg_date{
  color:#0000ff;
  font-size:13px;
  font-family:Verdana;
  font-weight:bold;
  margin:0px;
  padding: 0px;
}
.msg_texte{
  color:#000000;
  font-size:13px;
  font-family:Verdana;
  font-weight:normal;
  margin:0px;
  padding: 0 0 20 0px; /* top, right, bottom, left */
}

</style>




Il te restes a modifier la fonction pour prendre en compte les styles comme suit
...
    if( szMsg > = szToday){
      Count++;
      if( Count > 2) continue; // Stop la boucle
      Chaine += "
";
      //-- Texte suivant le Cas
      if( szMsg == szToday)
        Chaine += "Aujourdh'ui," ;
      else if( szMsg == szDemain)
        Chaine += "Demain," ;
      else
        Chaine += szJour[Date_Ref.getDay()];
       
      Chaine += " " +Date_Ref.getDate();
      Chaine += " " +szMois[Date_Ref.getMonth()];
      Chaine += " " +Date_Ref.getFullYear();
      Chaine += "
";
      Chaine += "
" +msgs[i] +"
";
    }
...

et le tour est joué...

Tu peux jouer sur l'espace entre message en modifiant la valeur du padding right de
msg_texte en gras dans la partie style plus haut.




;0)
Commenter la réponse de PetoleTeam
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
merci PetoleTeam,
comme tu m'a l'air très doué en script, je me permets de te présenter un autre script, ou j'aimerai insérer un autre message mais sous le compteur !!  du style:

Sarrebourg contre Hangwiller, c'est dans:

29 jours, 17 heures, 41 minutes

Alors, n'oubliez pas votre licence

Merci d'avance
bye

Voici le code:

<html>
<head>
<SCRIPT language=JavaScript>var dat new Array();  var msg new Array();  var msg2 = new Array();


var M = 23;


var i=M;
msg[i] = "Sarrebourg contre Hangwiller";
msg2[i] = "Alors, chauffez la colle";
dat[i] = "November, 17 2006 09:00";
i--;
msg[i] = "Les Championnats d'Ile-de-France Seniors";
msg2[i] = "Alors, n'oubliez pas votre licence";
dat[i] = "November, 19 2006 09:00";
i--;
msg[i] = "Coupe Nationale Vétérans";
dat[i] = "November, 25 2006 09:00";
i--;
msg[i] = "Niderviller contre Sarrebourg";
dat[i] = "December, 12 2006 15:00";
i--;
msg[i] = "Les Interclubs jeunes";
dat[i] = "December, 15 2006 09:00";
i--;




var N  =  1 ;
var ok = 'c';
if ( i!=0 ) ok = 'c'; // ==> M est incorrect


//*****************************************************


var timerID;
var timerRunning = false;
var today = new Date();
var enday = new Date();
var totime, entime, diff = 0;
var secs, mins, hous, days = 0;
var timeRemain, dbg = 0;


function calcmes()
  {
  today  = new Date();
  totime = today.getTime();
  for ( i=1; i<=M; i++ )
    {
    enday = new Date( dat[i] );
    entime = enday.getTime();
    diff = Math.round( (entime - totime) / 1000 );
    if (diff > 0) break;
    } // for
  N = i;
  document.write(""+msg[N]+", "+ok+"'est dans,"+msg2[N]+"" );
  } // calcmes()


function stopclock (){
if (timerRunning) clearTimeout(timerID);
timerRunning = false;
}
function startclock () {
stopclock();
showtime();
} // startclock()


function showtime () {
  today  = new Date( );
  totime = today.getTime();


  enday  = new Date( dat[N] );
  entime = enday.getTime();


  diff = Math.round( (entime - totime) / 1000 );


  secs = diff % 60;
  diff = (diff - secs) / 60;
  mins = diff % 60;
  diff = (diff - mins) / 60;
  hous = diff % 24;
  diff = (diff - hous) / 24;
  days = diff;


timeRemain = (days==0) ? " " :
 " " + days + " jour" + ((days<2) ? " " : "s") + ", ";
timeRemain = timeRemain + ( (days==0 && hous==0) ? " " :
 ((hous<10) ? " " : "") + hous + " heure" + ((hous<2) ? " " : "s") + ", " );
timeRemain = timeRemain + ( (days==0 && hous==0 && mins==0) ? " " :
 ((mins<10) ? " " : "") + mins + " minute" + ((mins<2) ? " " : "s") + ", " );
timeRemain = timeRemain + ((secs<10) ? " " : "") + secs;
timeRemain = timeRemain + " seconde" + ((secs<2) ? " " : "s");


document.clock.face.value=timeRemain;
timerID = setTimeout("showtime()",1000);
timerRunning=true;
if ( today.getDate()*100+today.getMonth()
     == enday.getDate()*100+enday.getMonth()
     && entime < totime )
 {
 clearTimeout(timerID);
 timerRunning=false;
 document.clock.face.value = "rien du tout.  C'e'tait aujourd'hui !";
 }
} // showtime()
//*****************************************************
// end hiding contents from old browsers -->
</SCRIPT>


<META content="Namo WebEditor v5.0" name=GENERATOR></HEAD>

             
        ----

                      <FORM name=clock onsubmit=0>
           
                <TT><SCRIPT language=JavaScript>
calcmes();
</SCRIPT>
            </TT>

    </FORM>
</HTML>
Commenter la réponse de archi57
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
1st La réponse ayant été acceptée il serait préférable de faire un nouveau POST sur le forum, sinon plus personne ne risque de venir s'intéresser à ton problème qui n'est plus celui du début...
2nd on ne fait pas de livraison clé en main à chaque fois...

Bon ceci étant, et si je ne m'abuse, tu as tout les éléments en main pour réaliser ta requête...
- la variable globale timeRemain te retourne le délai sous forme de string.
- la fonction calcmes() pour afficher ton message.
Il te suffit d'utiliser l'un dans l'autre.

Attention ...ton document.write(""+msg[N]+", "+ok+"'est dans,"+msg2[N]+"" ); ne marche que lorsque ton document est ouvert donc il faut passer par un
et écrire dedans à chaque fois que tu calcul le délai restant.

Dans ton document tu met un

la ou tu veux que le texte apparaisse, par exemple...

     
    ----

              <FORM NAME="clock" ONSUBMIT=0>
        <TT>

</TT>
       

        </FORM>
     ,
   
   
 

Dans ta fonction
calcmes() tu n'écris plus dans le document mais dans le DIV
  //document.write(""+msg[N]+", "+ok+"'est dans,"+msg2[N]+"" );
  document.getElementById('INFO').innerHTML = "" +msg[N] +", "c\'est dans,
"+ timeRemain;


Il te restes toutefois à appeller cette fonction dans la fonction showtime() par exemple
  ...
  document.clock.face.value=timeRemain;
  calcmes();
  timerID = setTimeout("showtime()",1000);
  ...

Il te resteras à gérer de menus désagréments d'affichage...

Voila ce que l'on peut dire à la louche...

;0)
Commenter la réponse de PetoleTeam
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
11 novembre 2017
0
Merci
Merci PetoleTeam, je viens d'essayer d'insérer les modifs sur tes explications...mais je ne me sors pas...j'ai des bugs sur pas mal de lignes....peux tu me faire un exemple plus précis ?? STP


bye
Commenter la réponse de archi57