Pb recherche de tel date à tel date

Falcon074 Messages postés 23 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 12 avril 2008 - 9 déc. 2007 à 23:25
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 13 déc. 2007 à 12:09
Bonjour,

Je cherche un code qui me permet de chercher des enregistrements dans une base de données qui sont compris entre tel date et tel date dont le format est de la forme suivante: ex: 09/12/2007 car ce code:
<?php
$dated=$_POST['dated']; // La date  de début saisie dans la variable $dated.
$datef=$_POST['datef']; // La date  de fin saisie dans la variable $datef.


$reponse=mysql_query("SELECT * FROM memo_cmd.commande where datelivr>='$dated' && datelivr<='$datef' ORDER BY datelivr");// On récupère toutes les données concernant les commandes glabales comprise entre la date de début et celle de fin. 
    while ($donnees= mysql_fetch_array($reponse))// Code permettant de stocker les données concernant le critère de recherche voulue issue de la base de donnée memo_cmd.commande dans les variables suivantes:
?>
Ne fonctionne pas car il m'affiche des commandes ne correspondant pas au date de début ou de fin voulu.

Merci d' avance pour ceux qui vont m'aider.

Falcon074.

6 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 déc. 2007 à 01:53
Salut,

Dans quel format est ta date dans ta base de données ?

Si elle est enregistrée sous la forme jj/mm/aaaa tu ne pourras pas comparer directement. Et tu vas même devoir te cruser les méninges.
Si elle est sous la forme aaa/mm/jj tu peux comparer directement avec BETWEEN (qui est plus efficace que deux comparaisons <= et >= ).

La meilleur solution à mes yeux est de stocker la date sous forme de timestamp unix dans la base (un entier : colonne de type INT). Il suffit de convertir en timestamp les dates du formulaire avec mktime() et de faire une comparaison avec BETWEEN dans la requête sql
0
Falcon074 Messages postés 23 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 12 avril 2008
10 déc. 2007 à 21:57
Salut neigedhiver merci por ton aide !!!

Peut tu m'expliquer comment mettre ma date qui effectivement est enregistrée sous cette forme j/m/année dont le type est un char en format timestamp car là je galère ! 

@ +

Falcon074 
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 déc. 2007 à 22:44
Ben ça dépend si t'as des enregistrements dans ta table ou si t'en es qu'à développer...

Si t'as pas d'enregistrement :
change le type de ton champ date, et mets le en INT.
Pour y stocker la date sous forme d'un timestamp unix, il te suffira d'y enregistrer la valeur de time() (en php) ou UNIX_TIMESTAMP() (en SQL)
0
Falcon074 Messages postés 23 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 12 avril 2008
10 déc. 2007 à 23:12
J'ai déja des enregistrements de fait dans ma base pourquoi ? Sinon pour l'enregistrement de ma date faut que je la mette à ce format : 0000-00-00 pour l'enregistrer au format unix_timestamp ?


Falcon074.


 


 
0

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

Posez votre question
Falcon074 Messages postés 23 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 12 avril 2008
13 déc. 2007 à 11:05
Salut neigedhiver !!!

Je te remerci pour ton aide j' ai résolu mon pb !!! enfin je vais pouvoir me reposer !!!

@+ et merci encore !

Falcon074.
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
13 déc. 2007 à 12:09
Ah ! Ben tant mieux, j'avoue, j'avais zappé l'histoire (honte sur moi)

Bonne continuation !
0
Rejoignez-nous