[RESOLU] Condition if - elseif

Eléphanteau du PHP | 15 Messages

14 avr. 2015, 19:08

Bonjour,

Débutant en php, je suis entrain d'élaborer un site sportif. Sur ce site j'ai mis un petit script d'anniversaires et j'ai un souci d'affichage.

Le script affiche les d'anniversaires du mois (une table mysql contient les noms des gens, leurs jours et mois de naissance).
Donc a l'affichage, je désire obtenir (par exemple pour ce mois ci) :

Anniversaire du mois d'avril

Personne X (le 1er)
Personne Y (le 6)
Personne Z (le 14. C'est son anniversaire aujourd'hui)

Mon problème est qu' il annonce l'anniversaire automatiquement a la dernière personne de la liste (même si ce n'est pas son anniversaire)..

Pour ça j'ai utilisé le test conditionnel suivant

if ($jour==1) {
echo '<span class="couleur2arial12gras">'. $nom .' (le 1<sup>er</sup>)</span><br />';
}
elseif ($jour) {
echo '<img src="images/cadeau.png">&nbsp;<span class="anniversaire">'. $nom .' (le' . $jour .'. C\'est son anniversaire aujourd\'hui)</span><br />';
}
else {
echo '<span class="couleur2arial12gras">'. $nom .' (le '. $jour .')</span><br />';
}

la première condition c'est si l'anniversaire a lieu le 1er du mois. Il permet d'afficher Personne X (le 1er) au lieu de Personne X (le 1)
la deuxième condition (celle qui semble me poser problème) c'est le jour de l'anniversaire (on affiche une image d'un petit cadeau, on change la couleur de la police et on annonce que l'anniversaire est aujourd'hui).
la troisième condition ce sont tous les autres cas (donc du 2 jusque la fin du mois hors jour d'anniversaire).

J'ai essayé la condition avec un switch / case et j'ai exactement le même souci.
J'ai également essayer en fonction de la date du jour elseif ($jour==date('d')) et en fait la date de la derniere personne de la liste est automatique mise a la date du jour.
Par exemple pour ce mois-ci la date d'anniversaire de la dernière personne de la liste c'est le 13 avril. La ligne continue d’être annoncée comme étant son anniversaire aujourd'hui et avec la fonction date, son jour d'anniversaire est automatiquement changé a la date du jour.

Me suis-je trompé dans la variable $jour (qui va chercher le jour de naissance dans la base mysql) ou dans la condition ?
Merci pour votre possible aide.
Michel
Modifié en dernier par Michel2107 le 15 avr. 2015, 00:17, modifié 1 fois.

Mammouth du PHP | 688 Messages

14 avr. 2015, 19:41

la bonne structure selon moi :

Code : Tout sélectionner

if($jour==date('d')){ if($jour == 1){ } else{ } } else{ if($jour == 1){ } else{ } }
en ayant bien fait la requete sql en filtrant le mois courant.

Eléphanteau du PHP | 15 Messages

15 avr. 2015, 01:07

Merci pour la réponse.
En fait j'ai réessayé par un switch case et la ça semble fonctionner. Je dis bien ça semble car je l'ai fait après minuit donc pour en être sur il faut que j'attende demain (pour le changement de jour, les dates prises en compte étant les dates de mon hébergeur, je ne peux pas simuler un changement de jour).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 avr. 2015, 16:04

Hello !

Bien sur que si, tu peux simuler un changement de jour, il suffit juste de remplacer ton appel à "date('d')" par "18" et hop, te voilà propulsé dans 3 jours pour tester... :)

Et effectivement, tu peux le gérer via un switch ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 15 Messages

16 avr. 2015, 00:08

Oui c'est vrai que j'aurai pu le modifier directement dans le code mais bon comme le site n'est pas mis en ligne maintenant ce n’était pas pressé.
Justement le fameux changement de jour vient d'avoir lieu et mon switch case fonctionne parfaitement. Je viens d'assister au changement en direct. J'ai mis 2 dates "fictives" : un anniversaire le 15 et un le 16. A 23h59 je me suis connecté sur le site, le 15 était surligné avec le petit cadeau en précisant que c’était son anniversaire, a minuit j'ai rafraîchit la page avec un F5 et c’était celle du 16 qui était surlignée. Tout est rentré dans l'ordre. Merci