[PHP] Souhaiter un Joyeux Anniversaire [Fermé]

Signaler
-
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
-
Bonjour,
Voilà je suis désireux de souhaité un "Joyeux Anniversaire" aux membres de mon site quand il se doit.
J'ai un champ age contenant la date de naissance du membre dans la table appropriée.
Sur cette même table j'ai rajouté un champ avec une valeur défini à 0 et qui prend une valeur de 1 une fois l'anniversaire souhaité.
A la connexion je compare donc la date du jour avec celle enregistré en bdd.

Seulement, c'est ici que je bloque !
Je ne souhaite comparer que le jour et le mois. Et à la limite l'année pour vérifier par la suite si je l'ai déjà souhaité ou non .. Fin je bloque !

Quelqu'un aurait-il une petite solution ?

Voici ce que j'ai mis sur mon index :
if($_POST['action']=='Connexion au Compte')
{
$age = $arr['fage']; // VARIABLE DEFINI PLUS DANS MON INDEX
$datejour = date("m-d");
$D1=explode("-",$age);
$age2 = $D1['mois'].'-'.$D1['jour'];
if($age2 == $datejour AND $bonannif == 0){
print("<script> this.location.href='index.php?tp=user&st=joyeuxannif'; </script>");
}
else{
}
}


Je vous remercie par avance, bien amicalement, Yann.



3 réponses

Bonsoir,
Et bien mon site est un site de jeux. Donc pour son anniversaire je crédite un cadeau (Points du site).
En admettant que ce soit un petit malin, qu'il reçoive son gain et change sa date d'anniv par celle du lendemain j'ai pris un précaution de plus.
Pourquoi laissé la possibilité de changer/modifier la date d'anniv au membre tu me diras .. C'est ptet ce que je devrais faire. Bloquer la date, et juste contrôler.
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
78
Alors je viens de tester vite fait et ca donne :
if($_POST['action']=='Connexion au Compte')
{
$age = $arr['fage']; // doit être au format "yyyy-mm-dd"

$datejour = date("m-d");

$D1=explode("-",$age);

$age2 = $D1[1].'-'.$D1[2]; // correspond au mois [1] et à l'année [2] et le jour correspond à [0]

if($age2 == $datejour && $bonannif == 0){

header('location:joyeuxannif.php'); // redirection en php vers la page d'anniversaire.

}

ou si tu veux pas changer de page tu passe un élément en paramètre que tu remplis lorsque tu rentre dans le if, et qui te permet d'afficher ta jolie page d'anniversaire
Ce que je ne comprend c'est que tu dis en commentaire que 0 correspond au jour mais tu extrait l'année ?

J'ai ressayé, mais tout reste figer, y a vraiment un truc là c'est pas possible ça m'agace !
Hiphiphip !! J'ai fini par trouvé !

if($_POST['action']=='Connexion au Compte')
{
$age = $arr['fage']; // doit être au format "yyyy-mm-dd"
$D1=explode("-",$age);
$age2 = $D1[1].'-'.$D1[2]; // [0] correspond à l'année, [1] au mois, et le jour correspond à [2].

$datejour = date("Y-m-d");
$D2=explode("-",$age);
$datejour2 = $D2[1].'-'.$D2[2];


if($age2 == $datejour2){
print("<script> this.location.href='index.php?tp=user&st=joyeuxannif'; </script>"); // redirection en php vers la page d'anniversaire.
}
else{
}
}

J'éclaté la date d'anniv pour n'en récupéré que le jour et le mois. Mais date("Y-m-d") il fallait l'éclater aussi !et non faire mon fainéant ! Du coup, ma redirection est belle est bien prise en compte et ma page d'annif s'affiche ! Maintenant le soucis De vérifier si j'ai déjà créditer les 364 jours passés va être plus compliquer ! mdr

Au final ma valeur ne me sert à rien si je vérifie de cette manière !
Vraiment cela aura pris du temps mais on aura réussi ! Merci énormément !
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
78
Ca venait du fait que tu avais fait :
$datejour2 = $D2['mois'].'-'.$D2['jour']; 

alors qu'il fallait mettre :
$datejour2 = $D2[1].'-'.$D2[2]; 

sinon ca ne serait pas mieux de faire une table dédié aux anniversaire ?
ou tu stockera l'id de l'utilisateur, à quelle heure tu lui as souhaité ?
Ouais je pense. Comme ça je m'enquiquine pas avec 50 vérifs différentes ici et ailleurs. Une seule suffit au même endroit !
Ou je modifie $bonnif par une date. Et à chaque anniversaire je la met à jour. Comme ça je vérifie l'année à laquelle je lui ai souhaité ?
Si cette année je lui ai déjà souhaité je ne crédite rien sinon bah je crédite. Je pense que je vais faire ça !
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
35
Salut,
Tu récupère la date au format MM-JJ-AAAA (ou peut importe)
Tu récupére chaque valeur dans un tableau avec :
$tableau = explode ('-', $dateAnniversaire);

pour decomposer tu as donc :
$jourNaissance = $tableau[1]
$moisNaissance = $tableau[0]
$anneeNaissance = $tableau[2]

tu considere que dans ton champ anniversairesouhaité tu stocke la derniere année souhaitée.

tu compare à la connexion si l'année du champ anniversairesouhaité != $tableau[2] && si on est le jour de l'anniversaire.

si c'est le cas tu souhaite l'anniv et tu mets le champ anniversairesouhaité à l'année en cours.
Oui c'est ce que je vais faire.. Seul hic ! ceci :

$jourNaissance = $tableau[1]
$moisNaissance = $tableau[0]
$anneeNaissance = $tableau[2]

Mes dates sont au format US : YYYY/MM/DD

j'ai beau chercher et ce ne sont jamais les même correspondance pour les jours, mois, années !
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
35
comment ça jamais les mêmes ?

si c'est au format YYYY/MM/DD tu fais :

$jourNaissance = $tableau[2]
$moisNaissance = $tableau[1];
$anneeNaissance = $tableau[0];
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
78
Salut,
Pourquoi stocké dans un champs si tu lui as déjà souhaité, ca ne sert à rien...
Ce que je ferais pour chaque membre :
1) Lorsqu'il se connecte récupérer dans la base de données la date de son anniversaire
2) Récupérer la date du jour
3) Si la date d'anniversaire correspond à la date du jour alors "Joyeux Anniversaire" sinon rien !

Ca serait plus simple, pourquoi souhaite tu garder en mémoire le fait de lui avoir souhaité ?