Compparer une date dans une requete MySQL

SuD_976 -  
Thamior Messages postés 267 Statut Membre -
Bonjour tout le monde,

j'ai un problème avec mes dates que je n'arrive pas à résoudre seul... en fait je n'arrive pas à faire une requete sur ma base où je compare une date de mon sript php avec le champ date de ma base.
Dans mon script ci-dessous je récupère dans la variable $lien la date au format %Y-%m-%d ... je souhaite ensuite rechercher dans ma base la présence de cette date. Sauf que quand la requete s'exécute, MySQL me retourne l'erreur Supplied argument is not a valid MySQL result resource

J'ai essayé plein de trucs, je commence à désespérer... aidez moi s'il vous plait.

Merci d'avance

SuD

$jjdate=@mktime(10,0,0,$date["mon"],1-$nj+$sem*7+$j,$date["year"]);
$jj=@getdate($jjdate);

$lien=strftime("%Y-%m-%d", $jjdate);

$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);

$Res_Valid=mysql_db_query($sql_bdd,"select Num_Date, Date, Valeur from testdates where Date=$lien",$db_link);

$total_row = mysql_num_rows($Res_Valid);

if($total_row!=0){
$Row_Select = mysql_fetch_array($Res_Valid);
$num = $Row_Select[0];
$date = $Row_Select[1];
$valeur = $Row_Select[2];

if($valeur==1){$sortie.="<td align=center bgcolor=#EEEEEE>";}
else {$sortie.="<td align=center>";}
}

else {$sortie.="<td align=center>";}

mysql_close($db_link) ;

9 réponses

jisisv Messages postés 3678 Statut Modérateur 935
 
Essaye peut-être
$Res_Valid=mysql_db_query($sql_bdd,"select Num_Date, Date, Valeur from testdates where Date='$lien' ",$db_link);

Johan Daine
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
jisisv Messages postés 3678 Statut Modérateur 935
 
Bonjour,
Quel est le type du champ Date dans ta table testdates.
Essaye de ramener son conte nu à un timestamp unix,
afin de comparer ce qui est comparable...
Johan

The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
SuD_976
 
Tout d'abbord merci pour les réponses jisisv...
en ce qui concerne les cotes à rajouter dans la requete, ça change rien.
Le type du champ date c'est date tout simplement.
sinon j'ai essayé de ramener le contenu de la variable à un timestamp unix mais le problème c'est que je ne sais pas trop comment faire... j'ai fait des tests plus qu'hésitants mais rien de concluant. Peut etre que tu peux m'aider de ce coté là...

Merci

SuD
0
SuD_976
 
Bonjour,

je n'ai toujours pas réussi à résoudre mon problème même en changeant completement de technique.
J'ai décidé de travailler avec mes dates comme avec des entiers. C'est à dire que j'ai converti mon champ Date de ma base en un int(8) qui contient par exemple pour la date aujourd'hui la valeur : 20030226

Voici donc ce que donne mon script : (toujours le meme problème lors de la requete :-((((

$jjdate=@mktime(10,0,0,$date["mon"],1-$nj+$sem*7+$j,$date["year"]);

// je récupère la date au format : 20030226 (ça marche bien)
$tmp=strftime("%Y%m%d", $jjdate);

$d = substr($tmp,6,2); // jour
$m = substr($tmp,4,2); // mois
$y = substr($tmp,0,4); // année

// la meme date mais en temps qu'entier
$lien =$y.$m.$d;

$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);

$Res_Valid=mysql_db_query($sql_bdd,"select Num_Date, Date, Valeur from testdates where Date=$lien",$db_link);

// et pi là ça plante
$total_row = mysql_num_rows($Res_Valid);

voilà donc j'ai essayé plein de trucs et rien ne résoud le problème, je commence sérieusement à désespérer....

Aidez-moi s'il vous plait

SuD
0

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

Posez votre question
wiwimagique Messages postés 481 Statut Membre 108
 
j'ai expose ma techenique de date dans ce thread:
http://www.commentcamarche.com/forum/affich.php3?cat=3&ID=222099&page=1
0
SuD_976
 
Merci pour les infos wiwimagique... j'ai testé ça mais j'y arrive pas...
J'ai bien déclaré mon champ date de ma base en tant qu'entier...
Je fais une recherche dans ma base en passant comme paramètre un entier que j'ai calculé grace à mktime()... et pi toujours la meme erreur lors de la requete... :-((((

au niveau du code ça donne ça :

$jjdate=@mktime(10,0,0,$date["mon"],1-$nj+$sem*7+$j,$date["year"]);

// j'affiche la variable pour tester si elle est corretce...
echo $jjdate;

$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);

$Res_Valid=mysql_db_query($sql_bdd,"select Num_Date, Date, Valeur from testdates where Date=$jjdate",$db_link);

$total_row = mysql_num_rows($Res_Valid);

HELPPPPPPPPPPPPPPPPP

SuD
0
wiwimagique Messages postés 481 Statut Membre 108
 
J'ai pas bien compris comment tu as enregistrer ta date...
essaie neanmoins comme ceci:

$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
mysql_select_db($sql_bdd);
$Res_Valid=mysql_query("select Num_Date, Date, Valeur from testdates where Date=$jjdate");

$total_row = mysql_num_rows($Res_Valid);
0
tika_fella
 
je veut compparer une date dans une requete MySQL mais ne ais pas :
je veut afficher des noms where date>=1980-01-01
0
Thamior Messages postés 267 Statut Membre 47
 
Bonjour,

Essaie ça :

WHERE date >= #1980-01-01#
WHERE date >= "#1980-01-01#"

L'une des deux lignes devrait marcher ^^.
0