Fonction : date() [Résolu]

Signaler
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017
-
TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
-
Bonjour à tous et bonne année.

Voici mon problème :
J'ai la ligne de code suivante :
if((date('m') + 3) > 12) {$MOIS (date('m') + 3) - 12;}else{$MOIS date('m') + 3;}

Comme nous sommes en janvier (01), ma recherche devrait me donner avril (04). Les mois dans ma BDD sont indiqués en 01 pour janvier, 02 pour février, etc...

Le résultat de ma chaîne donne par contre "4" au lieu de "04" car bien que date('m') indique le zéro avant le chiffre, le résultat trouvé est "4".

Quelqu'un aurait-il une idée pour ajouter un "0" à mon résultat et ai-je été assez clair ?


D'avance merci et excellente journée à tous.


David

6 réponses

Messages postés
14671
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 avril 2020
139
Bonjour,

date('m') + 3
Il considère que c'est du numérique et retires donc le 0 supplémentaire.

Si tu fais une requête, utilises printf et le format %02d

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017

Bonjour et merci de ta réponse. Je te poste ci-après ma requête car très sincèrement, je ne vois pas où insérer le format %02d dont tu parles.

if((date('m') + 3) > 12) {$MOIS_NLPP (date('m') + 3) - 12;}else{$MOIS_NLPP date('m') + 3;}

mysql_select_db($database_connexion, $connexion);
$query_echeancesNLPP = "SELECT * FROM CONTRATS WHERE FIN_ANNEE <= '$ANNEE' AND FIN_MOIS = '$MOIS_NLPP' AND ETAT_CONTRAT = 'en vigueur' AND ID_ASSURANCE != 23 ORDER BY ID_COMP, ID_ASSURANCE ASC";
$echeancesNLPP = mysql_query($query_echeancesNLPP, $connexion) or die(mysql_error());
$row_echeancesNLPP = mysql_fetch_assoc($echeancesNLPP);

Comme tu peux le constater, ma requête recherche un nombre ($MOIS_NLPP) sans le zéro initial dans une BDD où les mois sont indiqués avec le zéro initial.

Encore merci de ta précieuse aide.


David
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017

NHenry,

J'ai trouvé grâce à ton intervention. Ce que je ne comprends pas, c'est comment je n'ai pas pensé à ça avant car en fait je l'utilise dans une autre requête avec LIKE '%...%' !!!!!!

Merci encore et bonne fin de journée.


David
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
Salut,

Pourquoi est-ce que t'embêtes à gérer les cas foireux sur les dates alors que tout a déjà été fait avec DateTime ?

<?php

$dt = new DateTime();
$dt->add(new DateInterval('P3M'));
echo $dt->format('m');

?>

Dans cet exemple je créé une date qui, par défaut, est la date courante. J'ajoute ensuite une période de 3 mois. J'ai juste à récupérer la date au format que je veux, ici juste le mois mais on peux mettre ce qu'on veux.
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017

Car le résultat ne doit pas être affiché. Il sert à rechercher des valeurs dans ma BDD par une réquête!

Maintenant si tu as un truc moins "foireux", je suis preneur


David
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
Ce n'est pas parce que j'ai mis un echo que tu es obligé d'en mettre un. La chaîne de caractère retournée par la méthode format est une chaîne comme une autre, tu peux très bien l'utiliser dans ta requête. La seule chose foireuse ici est ton raisonnement.