Fonction : date()

Résolu
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017 - 12 janv. 2012 à 09:58
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 13 janv. 2012 à 16:12
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

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
12 janv. 2012 à 12:42
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
3
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
12 janv. 2012 à 15:57
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
0
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
12 janv. 2012 à 16:52
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
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
13 janv. 2012 à 03:10
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
13 janv. 2012 à 07:46
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
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
13 janv. 2012 à 16:12
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.
0
Rejoignez-nous