Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
888 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] [RESOLU] problème de filtre sur la date dans requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] [RESOLU] problème de filtre sur la date dans requête

n°1389228
DrWatson
_@''
Posté le 16-06-2006 à 16:31:42  profilanswer
 

Bonjour à tous,
 
Dans une table de petites annonces, ma requête comporte une condition qui ne selectionne que les annonces de moins de 3 mois. A l'époque mon champ date était un varchar car je ne savais pas comment afficher en JJ-MM-AAAA et je m'en étais sorti comme ça. Là pour le coup comme je fais des comparaison de date, j'ai créé un second champ date (date2) qui lui en est format date classique AAAA-MM-JJ
 
ma requête s'affiche correctement : http://isislafurette.free.fr/annonces2.php
 
mais le résultat n'a rien à faire de mon filtre sur la date, je ne vois pas pourquoi
 
voici le code
 

Code :
  1. $aujourdhui= date('Y-m-d');
  2. print"Nous sommes le $aujourdhui<br>";
  3. sscanf($aujourdhui, "%u-%u-%u", &$annee, &$mois, &$jour);
  4. $moislimite=$mois-3; // vieux de 3 mois max
  5. if ($moislimite <= 0 and $moislimite >=-2)
  6. {
  7.  if ($moislimite == -2) // si janvier 1-3 = -2  
  8.  {
  9.   $moislimite=11;
  10.   $anneelimite=$annee-1;
  11.  }
  12.  if ($moislimite == -1) // si février 2-3 = -1
  13.  {
  14.   $moislimite=12;
  15.   $anneelimite=$annee-1;
  16.  }
  17.  if ($moislimite == 0) // si mars 3-3 = 0
  18.  {
  19.   $moislimite=1;
  20.   $anneelimite=$annee;
  21.  }
  22. }
  23. else
  24. {
  25.  $anneelimite=$annee;
  26. }
  27. print"Année limite : $anneelimite<br>";
  28. $datelimite=$anneelimite.'-'.$moislimite.'-'.$jour;
  29. print"La date limite est $datelimite<br>";
  30. print"<a name='donations'></a><div class='TitreSousSection'>Donations</div><br>\n";
  31. $sql="select * from `annonces` where type = 'donne' and date2 >= $datelimite order by id desc\n";
  32. echo "$sql<br><br>";
  33. $result=mysql_query($sql, $connexion);
  34. print"<center>";
  35. while ($ligne=mysql_fetch_object($result))
  36. {
  37.  sscanf($ligne->date2, "%u-%u-%u", &$annee_annonce, &$mois_annonce, &$jour_annonce);
  38.  $dateannonce=$jour_annonce.'-'.$mois_annonce.'-'.$annee_annonce;
  39.  print"<dl class='element'><dt>$ligne->date2 / $dateannonce</dt><dd><b>Lieu : </b>$ligne->lieu<br><b>E-m@il : </b><a href = 'mailto:".$ligne->mail."'>$ligne->mail</a><br><b>Téléphone : </b>$ligne->telephone<br><img src='images/petitfuret2.gif' alt='petitfuret2.gif'> $ligne->annonce</dd></dl>";
  40. }


 
est ce que le fait d'avoir utilisé sscanf() à la place de substr() peut y être pour quelque chose ?
 
http://hallucinogen.free.fr/bdd.png
 
 
Merci  :jap:


Message édité par DrWatson le 12-07-2006 à 11:00:33

---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
mood
Publicité
Posté le 16-06-2006 à 16:31:42  profilanswer
 

n°1389331
nargy
Posté le 16-06-2006 à 18:25:02  profilanswer
 

Utilise plutôt date("%U" ), pour avoir un timestamp unix en secondes, c'est plus facile à comparer. Voir aussi time().

n°1389934
DrWatson
_@''
Posté le 18-06-2006 à 13:22:52  profilanswer
 

à la place de sscanf ?
 
et ensuite je dois faire la même chose avec mon champs date de la bdd pour pouvoir comparer ?


Message édité par DrWatson le 18-06-2006 à 13:24:19
n°1389938
nargy
Posté le 18-06-2006 à 13:33:39  profilanswer
 

C'est ceci à la place du scanf:
http://fr3.php.net/manual/fr/function.strptime.php
Pas la peine d'utiliser date(), d'ailleurs, time() suffit.

n°1390624
DrWatson
_@''
Posté le 19-06-2006 à 16:20:09  profilanswer
 

je teste ça et je donnerais les résultats ici merci bcp :jap:


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1402584
DrWatson
_@''
Posté le 07-07-2006 à 10:35:06  profilanswer
 

je cherche à calculer le nombre de secondes dans une date donnée, y'a t il une fonction qui fait cela sans réinventer la roue ?
 
parce que time() ne donne qu'à partir de 01-01-1970, j'ai donc la date du jour en secondes ça ok, ensuite si je ne veux afficher que les 3 derniers mois, je retire 60*60*24*30*3 (et encore 30 c de l'approximatif), mais pour n'afficher que les trois derniers mois des dates des annonces de mon site, je dois bien pouvoir convertir la date de l'annonce en seconde et faire quelque chose du genre afficher si nbSec1970-nbSecAnnonce <= 60*60*24*30*3
 
[:rougit]


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1402630
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-07-2006 à 11:11:11  profilanswer
 

tu lis la doc et tu fais tout en sql

Code :
  1. select * from `annonces` where type = 'donne' and date2 >=current_date - interval 3 month

Message cité 1 fois
Message édité par anapajari le 07-07-2006 à 11:12:04
n°1402711
Hermes le ​Messager
Breton Quiétiste
Posté le 07-07-2006 à 12:07:21  profilanswer
 

nargy a écrit :

Utilise plutôt date("%U" ), pour avoir un timestamp unix en secondes, c'est plus facile à comparer. Voir aussi time().


 
Putain, je dois bien répéter ça 3 fois par semaine au moins.  :o  

n°1402712
Hermes le ​Messager
Breton Quiétiste
Posté le 07-07-2006 à 12:07:47  profilanswer
 

anapajari a écrit :

tu lis la doc et tu fais tout en sql

Code :
  1. select * from `annonces` where type = 'donne' and date2 >=current_date - interval 3 month



 
C'est une autre possibilité ouai.  :jap:

n°1405315
DrWatson
_@''
Posté le 12-07-2006 à 10:55:54  profilanswer
 

je venais donner des news justement, comme anapajari me le propose, un ami m'a parlé de cette requête là bien plus simple que les usines à gaz que j'essayais de mettre en place :D
 
ma requête est donc juste celle ci
 

Code :
  1. $sql= "SELECT DATE_FORMAT(`date2`, '%d-%m-%Y') AS date_annonce, `type`, `lieu`, `mail`, `telephone`, `annonce` FROM `annonces` WHERE `date2` >= (CURDATE() - INTERVAL 90 DAY) AND `type` = 'donne' ORDER BY `date2` DESC";


Message édité par DrWatson le 12-07-2006 à 10:57:33

---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
mood
Publicité
Posté le 12-07-2006 à 10:55:54  profilanswer
 

n°1405318
DrWatson
_@''
Posté le 12-07-2006 à 11:00:07  profilanswer
 

au passage, le DATE_FORMAT est vraiment magique, y'a même plus besoin de se prendre la tête avec des fonctions php pour convertir les dates


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1405374
Hermes le ​Messager
Breton Quiétiste
Posté le 12-07-2006 à 11:33:05  profilanswer
 

DrWatson a écrit :

au passage, le DATE_FORMAT est vraiment magique, y'a même plus besoin de se prendre la tête avec des fonctions php pour convertir les dates


 
Magique ou pas, tu ferais bien mieux d'utiliser les timestamps... :o
 
Imagine deux secondes que tu adaptes ton site pour qu'il soit multilingue... Ton format de date, ben, faudra le convertir en TS puis ensuite te retapper la conversion vers les nouveaux formats en fonction des langues. [:spamafote]

n°1405429
DrWatson
_@''
Posté le 12-07-2006 à 12:06:56  profilanswer
 

pas bête, cela dit je ne le transformerais pas en multilingue, au pire je ferais deux requêtes différentes :D mais j'en prends bonne note :jap:


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] [RESOLU] problème de filtre sur la date dans requête

 

Sujets relatifs
[PHP] Fonction explode... à deux reprises[ldd] problème de lib standard c++
recupere la date du jour dans un varProblème de marge
[Resolu] Syntax error, requete mysql depuis java[CREATION] Base de données en PHP sans MySQL (PHP4 - test en cours)
Probleme avec les VTemplateXML/SAX probléme charset
Besoin d'une idée pour automatiser une construction de requête 
Plus de sujets relatifs à : [PHP] [RESOLU] problème de filtre sur la date dans requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR