Recherche une période de date à date.

Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009 - 2 juil. 2009 à 22:09
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 4 juil. 2009 à 11:47
Bonjour et merci pour vos aident précédentes.
Je poursuis le développement dem on site.
Tout se passe globalement bien et j'essais de ne pas trop vous soliciter.

Mais voilà, parfois j'ai besoin d'un coup de pouce.
---------------------------------
Sur un page PHP j'ai 2 champs pour la recherche.
"DE" et l'autre "A"
Le format de la saisie est JJ/MM/AAAA.
Je clique sur Valider pour lancer la recherche.

Une autre page, alors, reçois les $_POST, recherche et affiche le résultat.
Mais le résultat n'est pas celui attendu.

Si je fait une recherche de 04/01/2009 à 04/03/2009 le résultat est :
04/03/2007
04/02/2008
04/02/2009
04/02/2009
04/03/2009
Et seulement 10 résultats.
Voici le code :
--------------------
//on se connecte à la base de donnée
$db = mysql_connect($host,$login,$pass) or die ("erreur de connexion");

//selection de vôtre base de donnée
mysql_select_db($base,$db) or die ("erreur de connexion base");

// Faire suivre les variables de recherche
//$nom = $_POST['info2'];
//requète de recherche
//$req = mysql_query("SELECT * FROM histopoints WHERE iduser LIKE '%".$_SESSION['id_user']."%' Order by datedj DESC");
$req = mysql_query("SELECT * FROM histopoints WHERE datedj BETWEEN '$_POST[date1]' AND '$_POST[date2]' Order by idhistop ASC");

-------------------------------------
Merci encore pour votre aide.
Cordialement
Calypdoso.

4 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
3 juil. 2009 à 08:45
C'est normal.. tu envoies directement la valeur du POST. Or, la date au format MySQL est différente de notre syntaxe de date (tout comme les anglais ou autres..)
Le format de date est YYYY-MM-DD, il te faut soit :
- retravailler la chaine de caractères DD/MM/YYYY pour la transformer en YYYY-MM-DD
- si tu es en PHP 5.2.6 (ou 9 je ne sais plus).. tu as l'objet DateTime qui te permets de le faire.
S.
0
Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009
3 juil. 2009 à 22:05
Bonjour et merci pour votre aide.

Je ne pense que que le problème soit le format.

Mon champ date est tout "bêtement" un champ classique.

datedj varchar(10)

On saisi à la main les dates car ont ne prend pas la date système.

Dans la base c'est correctement stocké JJ/MM/AAAA.
Lorsque je fais une simple recherche 05/03/2007 par exemple, le résultat est correcte.

Lorsque je souhaite une recherche 05/03/2007 à 10/10/2007, j'ai des résultats de 2008 qui resortent mais avec 05/03 ok pas la bonne année.

Je ne comprend pas pourquoi.
Merci
Calypdoso
0
Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009
3 juil. 2009 à 23:30
D'après vous sa ne fonctionne pas car le champs n'est pas au format date ?
Voilà le "bordèle" pour tout reprendre !

Cordialement
Calypdoso
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
4 juil. 2009 à 11:47
Vi vi.. dans ta base ça doit être au format DATE, sinon tu fais de la comparaison de chaine de caractères.
Si tu veux utiliser une fonction inhérente à une date, ta donnée doit être définie comme.. une date.
S.
0
Rejoignez-nous