Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2011, 13h30   #1
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 3
Points : 3
Par défaut Affichage des anniversaires sur un site

Bonjour à tous

J'aurai besoin d'aide pour débugger un petit script qui permet d'afficher une date d'anniversaire sur un site. Le script affiche :
- Bon anniversaire "untel" si c'est le jour de son anniv
- Pas d'anniversaire ce jour s'il n'y a aucune anniversaire à souhaiter ce jour là?.
Le problème, c'est que les jours d'anniversaire, j'ai les 2 messages qui s'inscrivent à la fois !!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">/* <![CDATA[ */
function afficherAnniversaires() {
	var today = new Date;
	var mois_actuel = today.getMonth() +1;
	var jour_actuel = today.getDate();
 
	/* -- Avril -- */
	if(mois_actuel == 4 && jour_actuel == 1) { document.write("Bon anniversaire Sabine !"); }
	if(mois_actuel == 4 && jour_actuel == 10) { document.write("Bon anniversaire Victor !"); }
	if(mois_actuel == 4 && jour_actuel == 13) { document.write("Bon anniversaire Tanguy !"); }
	if(mois_actuel == 4 && jour_actuel == 16) { document.write("Bon anniversaire Gérard !"); }
	if(mois_actuel == 4 && jour_actuel == 26) { document.write("Bon anniversaire Jérôme !"); }
	if(mois_actuel == 4 && jour_actuel == 29) { document.write("Bon anniversaire Vincent !"); }
	if(mois_actuel == 4 && jour_actuel != 1 || 10 || 13 || 16 || 26 || 29) { document.write("Pas d'anniversaire aujourd'hui !"); }
 
}/* ]]> */</script> 
<div align="center"><strong>
<script type="text/javascript">afficherAnniversaires();</script>
</strong></div>
Merci à celles et ceux qui pourront m'aider
peltardenois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 14h39   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Bonjour
analysons cette ligne
Code :
if(mois_actuel == 4 && jour_actuel != 1 || 10 || 13 || 16 || 26 || 29)
plus précisément
Code :
jour_actuel != 1 || 10 || 13 || 16 || 26 || 29
prenons la partie droite, soit
Code :
1 || 10 || 13 || 16 || 26 || 29
que vaut-elle? 1 et toujours 1, pour t'en convaincre testes
Code :
alert(1 || 10 || 13 || 16 || 26 || 29);
...pas sûr que la façon de gérer cela soit la bonne, enfin ceci n'est que mon avis personnel
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 14h55   #3
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 3
Points : 3
Oui, je crois que je n'ai pas bien formulé tout ça ... mais je continue de chercher et j'ai également essayé ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">/* <![CDATA[ */
function afficherAnniversaires() {
var today = new Date;
var mois_actuel = today.getMonth() +1;
var jour_actuel = today.getDate();
 
/* -- Avril -- */
if(mois_actuel == 4 && jour_actuel == 1) { document.write("Bon anniversaire Sabine !"); }
if(mois_actuel == 4 && jour_actuel == 10) { document.write("Bon anniversaire Victor !"); }
if(mois_actuel == 4 && jour_actuel == 13) { document.write("Bon anniversaire Tanguy !"); }
if(mois_actuel == 4 && jour_actuel == 16) { document.write("Bon anniversaire Gérard !"); }
if(mois_actuel == 4 && jour_actuel == 26) { document.write("Bon anniversaire Jérôme !"); }
if(mois_actuel == 4 && jour_actuel == 29) { document.write("Bon anniversaire Vincent !"); }
else { document.write("Pas d'anniversaire aujourd'hui !"); }
 
}/* ]]> */</script>
<div align="center"><strong>
<script type="text/javascript">afficherAnniversaires();</script>
</strong></div>
Mais sans plus de succès ...
En fait le jour d'un anniversaire, s'affiche les 2 messages (bon anniversaire Vincent !Pas d'anniversaire aujourd'hui)

Une idée ?
peltardenois est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 15h28   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
ça c'est le deuxième effet kiss cool, une bonne indentation te montrerait que le else s'applique au dernier test
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if( mois_actuel == 4 && jour_actuel == 1) {
  document.write("Bon anniversaire Sabine !");
}
if( mois_actuel == 4 && jour_actuel == 10) {
  document.write("Bon anniversaire Victor !");
}
if( mois_actuel == 4 && jour_actuel == 13) {
  document.write("Bon anniversaire Tanguy !");
}
if( mois_actuel == 4 && jour_actuel == 16) {
  document.write("Bon anniversaire Gérard !");
}
if( mois_actuel == 4 && jour_actuel == 26) {
  document.write("Bon anniversaire Jérôme !");
}
if( mois_actuel == 4 && jour_actuel == 29) {
  document.write("Bon anniversaire Vincent !");
}
else {
  document.write("Pas d'anniversaire aujourd'hui !");
}
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 15h32   #5
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 3
Points : 3
Alors je sèche ... je ne sais pas comment faire pour indiquer qu'il n'y a pas d'anniversaire à souhaiter les autres jours ....

Pourriez vous m'aider s'il vous plait ?
peltardenois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 15h53   #6
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
il existe surement plein de manière d'y arriver en voici au moins deux
sur base de ce que tu as commencé à faire
Code :
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
// variable vide au départ
var sText = "";
 
// affectation suivant les anniversaires
if( mois_actuel == 4 && jour_actuel == 1){
  sTxt = "Sabine";
}
if( mois_actuel == 4 && jour_actuel == 10){
  sTxt = "Victor";
}
if( mois_actuel == 4 && jour_actuel == 13){
  sTxt = "Tanguy";
}
if( mois_actuel == 4 && jour_actuel == 16){
  sTxt = "Gérard";
}
if( mois_actuel == 4 && jour_actuel == 26){
  sTxt = "Jérôme");
}
// affichage final
if( sTxt.length){
  document.write( "Bon anniversaire " +sTxt +" !");
}
else{
  document.write("Pas d'anniversaire aujourd'hui !");
}
il y a bien sûr encore moyen de factoriser le code...

une autre sur base de tableau
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var Anni = [];
// on fait demarrer les mois à 1
for( var i = 1; i < 13; i++){
  Anni[i] = [];
}
// affectation des anniversaires
Anni[4][1]  = "Sabine";
Anni[4][10] = "Victor";
Anni[4][13] = "Tanguy";
Anni[4][16] = "Gérard";
Anni[4][26] = "Jérôme";
// affichage
if( Anni[Mois][Jour]){
  document.write( "Bon anniversaire " +Anni[Mois][Jour] +" !");
}
else{
  document.write("Pas d'anniversaire aujourd'hui !");
}
la maintenance me semble plus facile avec la méthode du tableau
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 16h11   #7
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 3
Points : 3
Par défaut Merci d'utiliser la balise [code] (bouton # de l'éditeur)

Après avoir cherché un bon moment ... mais c'est comme ça qu'on trouve ses erreurs et ses oublis, j'ai enfin trouvé la solution !
Non seulement je ne reprenais pas certaines variables indispensables contenues dans l'ancien script, mais il y avait aussi 2 petites erreurs dans le code !

Voici donc la version fonctionnelle :

Code :
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
<script language="javascript" type="text/javascript">
// variable vide au départ
	var sText = "";
	var today = new Date;
	var mois_actuel = today.getMonth() +1;
	var jour_actuel = today.getDate();
 
 
// affectation suivant les anniversaires
if( mois_actuel == 1 && jour_actuel == 3) { sText = "Flavie"; }
if( mois_actuel == 2 && jour_actuel == 17) { sText = "Aymeric"; }
if( mois_actuel == 4 && jour_actuel == 1) { sText = "Sabine"; }
if( mois_actuel == 4 && jour_actuel == 10) { sText = "Victor"; }
if( mois_actuel == 4 && jour_actuel == 13) { sText = "Tanguy"; }
if( mois_actuel == 4 && jour_actuel == 16) { sText = "Gérard"; }
if( mois_actuel == 4 && jour_actuel == 26) { sText = "Jérôme"; }
 
</script>
 
<div align="center"><strong>
<script language="javascript" type="text/javascript">
if( sText.length){ document.write( "Bon anniversaire " +sText +" !"); }
else{ document.write("Pas d'anniversaire aujourd'hui !"); }
</script>
</strong></div>
Merci encore pour l'aide ... ouf ! Je ne suis vraiment pas doué en Javascript !
Je marque ce sujet comme résolu !
peltardenois est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h45.


 
 
 
 
Partenaires

Hébergement Web