calculer les années
Bonjour, j'ai un problème, je voulais créer une application pour le paiement des frais académiques dans une université. Maintenant, mon souci est de pouvoir enregistrer les années académiques, c.à.d, je ne veux pas les enregistrer de sorte que c'est l'utilisateur qui ajoute par exemple 2018-2019 comme l'année du début. j'aimerai que, une fois l'année académique commence, mon application doit être capable de savoir que l'année a commencé.
exemple:
l'année academique commence le 01/10/2018, donc l'année académique doit être 2018-2019 et dans le système, elle sera considérée comme l'année en cours, elle doit expirer par exemple le 01/11/2019 pour commencer une autre année académique 2019-2020. alors, je ne sais pas comme m'y prendre, j'ai besoin d'aide
Réponses apportées à cette discussion
Salut Giresse,
à froid comme ça, je créerais une petite table définissant les dates de début et de fin des années académiques avec 4 colonne :
table : t_anneeacademique_aac
colonnes :
- aac_id INT (PK)
- aac_debut DATE
- aac_fin DATE
- aac_libelle VARCHAR(16)
Et nous aurions ainsi des lignes avec
| 1 | 2018-10-01 | 2019-10-31 | 2018/2018 |
Il devient alors possible de définir l'année académique avec une requête du genre :
SELECT aac_libelle
FROM t_anneeacademique_aac
WHERE aac_debut >= ". $date_a_verifier ."
AND aac_fin < ". $date_a_verifier .";
Le paramètre « $date_a_verifier » devrait bien entendu être formaté au format yyyy-mm-dd
Merci beaucoup Cyrano, je vais l'essayer et voir ce que ça va me donner. Donc, on se limitera seulement au niveau d'une requête ?
C'est à première vue le plus simple. Sinon, on peut toujours traiter ça en PHP en transformant les dates en timestamp, mais ce serait se compliquer inutilement l'existence.
Je comprend. Au niveau de l'enregistrement, donc l'utilisateur aura toujours à entrer ces dates parce qu'elles seront vérifiée dans la requête...
Une autre préoccupation, j'aimerai par exemple à la place des chiffres qui représentent les mois, mettre les mois en lettres au lieu de chiffre, bien évidemment dans la table t_anneeacadem_aac les dates début et fin seront dans ce cas du type varchar au lieu encore de date
Ça par contre, ce serait une très mauvaise idée.
Pour stoker une date dans une base de données, le format DATE est le plus appropriée et surtout le seul qui permette d'appliquer certaines fonctions pour des calculs sur les dates en SQL. Dans l'exemple de requête que j'ai montrée plus tôt, j'utilise < ou > : ça fonctionnera sur type DATE, mais pas sur un VARCHAR.
Il existe également pas mal de fonctions de traitement de dates en PHP pour effectuer toutes sortes de conversion.
On ne peut pas faire ces calculs sur une donnée de type VARCHAR.
Un petit tour dans la documentation MySQL sur les fonctions de Date et dans la documentation de PHP sur les fonctions de Date aussi.
merci beaucoup Cyrano