Bonjour à tous,

J'ai appliqué le tutoriel datepicker à mon site et mis un datepicker sur deux champs pour rechercher des enregistrements dans l'intervalle des dates dans ma BDD.

Pour ce faire, j'ai :

  • Un premier champ <input type="text" class="datepicker" name="date_debut" size="10" />
  • Un second champ <input type="text" class="datepicker" name="date_fin" size="10" />

Dans une autre page, je récupère $_POST'date_debut'] et $_POST'date_fin'], pour les transformer en timestamp selon la formule suivante : $date_debut = mktime(0, 0, 0, $_POST'date_debut']); pour la date de début de recherche, et $date_fin = mktime(23, 59, 59, $_POST'date_fin']); pour la date de fin.

Mais voilà le soucis étant que, PHP me renvoi la même date de début et de fin, qui sont égales à la date du jour...
Pour date début j'ai la date du jour à 0h00 et 00s, et pour la date de fin, j'ai date la date du jour à 23h59 et 59s
Alors qu'initialement date début est égale à 01/12/2011 et date de fin à 01/01/2012. J'ai fait un echo, et PHP me renvoie bien ces dates. Pourquoi mktime les convertit mal alors ?

Cela marchait très bien avant que je mette un datepicker. Je ne comprends pas trop.
Auriez-vous une idée du problème ?

Merci d'avance.

Cordialement.

Jo'

4 réponses


extrarox
Réponse acceptée

Tu peux faire :

list($jourD, $moisD, $anneeD) = explode("/", $_POST'date_debut']);
list($jourF, $moisF, $anneeF) = explode("/", $_POST'date_fin']);

Salut,

Parce que mktime prend 6 variables dans ton cas.
Vu que tu en mets 4,, en gros tu fais :
$date_debut = mktime(0, 0, 0, $_POST'date_debut']); => donne : $date_debut = mktime(0, 0, 0, '01/12/2011');
$date_fin = mktime(23, 59, 59, $_POST'date_fin']); => donne : $date_fin = mktime(23, 59, 59, '01/10/2012');
Tes deux chaines vont retourner 01 en int, du coup vu que la variable numéro 4 demandé est le mois, il va se dire que tu demandes le mois de janvier, le reste des variables sont calculés avec la date d'aujourd'hui, du coup tu as l'impression que c'est la date d'aujourd'hui qu'il t'envoi vu qu'on est en janvier. Le même test en février et tu aurais dis qu'il recule d'un mois.

Voilà en gros pour rectifier, tu dois faire un split de ta variable et utiliser mktime avec ses 6 arguments.

A+

Joshua
Auteur

Merci pour ta réponse

Et comment puis-je décomposer la date contenue dans la variable s'il te plait ?

Joshua
Auteur

Ca marche à merveille, je te remercie beaucoup !