[resolu] requete avec date

requete avec date [resolu] - PHP - Programmation

Marsh Posté le 05-06-2005 à 22:12:17    

Bonjour,
 
je voudrais récupérer des news et articles par jour, mois ou année.
Les dates dans la base de données (mysql) sont au format 0000-00-00.
Je ne sais pas trop comment me déboruiller : récupérer tous les enregistrements et vérifier le jour,le mois, l'année avec des expressiosn régulières ou est-ce que je peux le faire en une seule requête...
 
Merci.


Message édité par dandy le 07-06-2005 à 21:16:23
Reply

Marsh Posté le 05-06-2005 à 22:12:17   

Reply

Marsh Posté le 05-06-2005 à 22:19:59    

tu fais un ORDER BY 'madate'


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 05-06-2005 à 23:23:46    

dandy a écrit :

Bonjour,
 
je voudrais récupérer des news et articles par jour, mois ou année.
Les dates dans la base de données (mysql) sont au format 0000-00-00.
Je ne sais pas trop comment me déboruiller : récupérer tous les enregistrements et vérifier le jour,le mois, l'année avec des expressiosn régulières ou est-ce que je peux le faire en une seule requête...


 
Des expressions régulières ? tu sais que mysql intègre des fonctions dédiés aux dates documentées par là ?

Reply

Marsh Posté le 07-06-2005 à 10:03:09    

J'ai cherché dans la doc et après nombres d'essais, je n'arrive pas à faire ce que je veux.(ORDER BY 'madate' ne convient pas à moins que je ne l'ai mal utilisé)
 
Je réexplique mon problème :  
 
j'ai une fonction qui récupère les news, on lui donne en premier paramètre une date, par exemple 2004-05-15 et en second paramètre ce que j'appel le type qui est annee, mois ou jour.
Les news recupérées devront être de 2004 si le type et annee, du mois de mai si le type est mois et de la date précisément données si le type est jour.
 
:??: Y a-t-il moyen de passer pas une simple requête qui fait le tri directement au lieu d'une boucle et expressions régulières ? :??:  
 
Merci à esox et naceroth.

Reply

Marsh Posté le 07-06-2005 à 16:27:47    

Ben, c'est 3 requêtes différentes suivant les cas, te casse pas la tête pour rien non plus, tu récupères la partie de la date dont tu as besoin dans ton premier paramètre et tu compares avec celle de la db en utilisant year et month :)

Reply

Marsh Posté le 07-06-2005 à 16:39:23    

Pourquoi ne pas utiliser LIKE ?
 
Si le 2eme parametre est l'année :
WHERE MaDate LIKE "$annee-%"
 
Si mois :
WHERE MaDate LIKE "%-$mois-%"
 
Si jour :
WHERE MaDate LIKE "%-$jour"
 
Non ?

Reply

Marsh Posté le 07-06-2005 à 17:09:36    

pourquoi ne pas séparer le jour, le mois et l'année dans 3 colonnes différentes ?

Reply

Marsh Posté le 07-06-2005 à 17:38:33    

Bah autant profiter des possibilités des bases de données ...

Reply

Marsh Posté le 07-06-2005 à 17:39:36    

Regarde la fonction mysql DATE_FORMAT(date,format)
 
un truc du genre
 

Code :
  1. <?php
  2. $la_date = '2005-12-30'; // 30 décembre 2005
  3. $date = explode('-',$la_date);
  4. switch ($type)
  5. {
  6. case 'annee': $format = '%Y';d=$date[0];break;
  7. case 'mois': $format = '%m';$d=$date[1];break;
  8. case 'jour': $format = '%d';$d=$date[2];break;
  9. }
  10. $sql = 'SELECT mesnews FROM matable WHERE DATE_FORMAT(date,\''.$format.'\') = \''.$d.'\'';
  11. ?>


truc ds le genre


Message édité par benamoubeach le 07-06-2005 à 17:41:33
Reply

Marsh Posté le 07-06-2005 à 21:15:10    

Ok j'ai essayé la méthode de benamoubeach et merci à toi ça marche nickel !!! [:acherpy]
 
Merci à tous pour vos suggestions !

Reply

Marsh Posté le 07-06-2005 à 21:15:10   

Reply

Marsh Posté le 08-06-2005 à 10:31:37    

g oublié un $ devant 'd' dans le case annee

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed