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 ?
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
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.
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 '%...%' !!!!!!
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
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.