Remettre la valeur d'un champs à 1 tous les ans

drizzt88 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 19 janvier 2007 - 16 janv. 2007 à 16:10
drizzt88 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 19 janvier 2007 - 17 janv. 2007 à 10:35
Bonjour à tous !
Je viens vous ennuyer avec une question de noob car je dois actuellement développer un site de vente en ligne (et la prog n'est pas ma spécialité, j'avoue) et il m'arrive un souci : ma cliente veut appliquer une promo unique à la date anniversaire des membres (genre le jour de son anniversaire on a droit une fois et une seule à une remise de 25% sur le montant de son panier). Jusqu'ici, rien de bien ennuyeux, j'ai fait une table pour mes promos et un champs à l'intérieur dont la valeur peut être '0' ou '1' suivant si l'utilisateur a déjà profité ou non de sa promo, le jour de son anniversaire. Seulement voilà, tous les ans cette valeur doit repasser à '1' (on a bien un anniversaire par an, non ?! ), en début d'année, c'est à dire le 01 janvier à 00h01, mais là je ne sais pas comment faire...
Quelqu'un pourrait-il m'aider à y voir plus clair ?
A noter pour l'instant que je n'en suis qu'à la gestion de projet et que je suis actuellement en train de finaliser la BDD, avant de la faire valider par le client (la créa n'a pas encore débutée)..

Merci à vous !

 Rom's  One

4 réponses

drizzt88 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 19 janvier 2007
16 janv. 2007 à 17:03
Ouaip bah re tout le monde,
En fait j'ai trouvé une solution je pense :
Je place un champs 'annee_promo_annif = 2007' par exemple.
Pour permettre la remise je commencerai par checker l'année pour voir si 'annee_promo_annif' est égale à l'année en cours, et bien sûr pour valider la remise je checke au préalable si le jour correspond bien au jour de son anniversaire...Une fois l'achat effectué (et la remise consommée), je mets à jour 'annee_promo_annif = annee_promo_annif+1'. Ainsi il sera obligé d'attendre la prochaine date d'anniversaire de l'année suivante pour profiter à nouveau de la remise.
Je pense que cela devrait fonctionner, dites moi ce que vous en pensez !

 Rom's  One
0
drizzt88 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 19 janvier 2007
16 janv. 2007 à 17:09
Je reviens à la charge car j'viens de voir un cas où ça posera souci : si l'utilisateur ne profite pas de sa remise le jour de son annif ! en effet ainsi le compteur 'annuel' ne se mettra pas à jour, empêchant toute remise l'année suivante... et donc si vous avez une idée de comment résoudre ça, j'veux bien !

 Rom's  One
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 janv. 2007 à 19:19
Hello,
à moins que tu n'envoies un mail à ton utilisateur le jour de son anniversaire pour lui signaler qu'il a droit à sa remise, je ne comprends pas ton problème.
Parce que si ce n'est pas le cas, on est d'accord que l'intérêt, pour toi, de savoir si oui ou non un utilisateur a droit à sa remise, c'est s'il est connecté, non? Et dans ta table utilisateur, tu s sa date d'anniversaire ? Donc, quand il se connecte à ta boutique, tu compares la date courante et sa date d'anniversaire, ET le flag dont tu parles.
- si ce n'est pas son anniversaire et que le flag est à 0, tu ne fais rien.
- si ce n'est pas son anniversaire et que le flag est à 1, tu le mets à 0.
- si c'est son anniversaire, tu mets le flag à 1.
Et quand il utilise sa remise, évidemment, tu mets le flag à 0 (si c'est son anniversaire hein).
0
drizzt88 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 19 janvier 2007
17 janv. 2007 à 10:35
Coucou,
évidemment à la base je suis carrément d'accord avec toi et c'est comme cela que je pensais procéder. Mais il faut prendre en compte un facteur de plus : l'utilisateur, même si c'est son anniversaire, n'a le droit de profiter de la remise qu'une seule fois sur une seule commande. Je pense notamment aux petits malins qui le jour de leur anniversaire vont me faire pleins de commandes en espérant profiter de la remise sur chacune de leurs commandes ce jour là.
La solution que j'ai trouvé est assez simple : je place un champs "annee" égal à la base à l'année en cours (ex : '2007').
A chaque fois que l'utilisateur se loggue, je vérifie si c'est le jour de son anniversaire. Ensuite si il utilise sa remise le jour de son annif "annee" est incrémentée de 1 (ex : '2008'), et l'oblige à attendre l'année suivante pour en re-profiter. Et en même temps, avant toute chose, à chaque fois qu'il se loggue je vérifie que "annee" n'est pas inférieure à l'année en cours, et si c'est le cas "annee" reçoit la valeur de l'année en cours (c'est pour au cas où il revient pas sur le site pendant deux ans admettons).
Avec ça, je m'assure que "annee" est toujours égal ou supérieur de 1 à l'année en cours, et ça me permet de parvenir à mes fins tout en couvrant tous mes cas d'erreurs possibles.
Merci en tout cas d'avoir pris le temps de réfléchir à ma question, j'apprécie beaucoup cet esprit d'entraide, ça fait plaisir !

 Rom's  One
0
Rejoignez-nous