Rechercher : dans
Par :

Compparer une date dans une requete MySQL

Dernière réponse le 5 mar 2008 à 12:58:31 SuD_976, le 25 fév 2003 à 16:14:54 
 Signaler ce message aux modérateurs

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) ;

Meilleures réponses pour « compparer une date dans une requete MySQL » dans :
MySQL – Optimisation VoirL’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
MySQL - Chargement d'un fichier texte dans une table VoirPour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Différence entre dates avec la fonction DATEDIF VoirLa fonction DATEDIF n'est pas documentée dans Excel, mais par contre sur CCM vous pouvez trouver les possibilités offertes. En voici un résumé.   La syntaxe =DATEDIF(date début;date fin;type de calcul) date début : doit être une valeur date...

1

jisisv, le 25 fév 2003 à 17:16:50

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.

Répondre à jisisv

2

jisisv, le 25 fév 2003 à 17:28:56

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.

Répondre à jisisv

3

SuD_976, le 25 fév 2003 à 17:52:43

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

Répondre à SuD_976

4

SuD_976, le 26 fév 2003 à 09:58:27

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

Répondre à SuD_976

5

wiwimagique, le 26 fév 2003 à 10:07:39

J'ai expose ma techenique de date dans ce thread:
http://www.commentcamarche.com/forum/affich.php3?cat=3&ID=222099&page=1

Répondre à wiwimagique

6

SuD_976, le 26 fév 2003 à 11:50:37

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

Répondre à SuD_976

7

wiwimagique, le 26 fév 2003 à 12:28:05

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);

Répondre à wiwimagique

8

tika_fella, le 5 mar 2008 à 12:52:29

Je veut compparer une date dans une requete MySQL mais ne ais pas :
je veut afficher des noms where date>=1980-01-01

Répondre à tika_fella

9

 Thamior, le 5 mar 2008 à 12:58:31

Bonjour,

Essaie ça :

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

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

Répondre à Thamior