Extraire les enregistrements du mois dernier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Extraire les enregistrements du mois dernier

par shinigami » 28 août 2008, 13:47

Ok, merci pour votre réponse.

Je vais essayer cela et je vous tiendrais au courant.

A+

Re :

J'ai pu essayer les 2 requêtes proposées par "mojorisin" ainsi que "sadeq", et ils m'ont renvoyé le même résultat. Cela marche pour les 2.

Merci à vous 2 :wink:
Pour moi, je vais utiliser la deuxième requête de "sadeq" 8-)

Je vais mettre "résolu"

PS : Si je veux afficher tous les articles sans inclure du mois précédent, j'aurais juste à mettre :
$query_article = "SELECT * FROM articles WHERE id_cat = ".intval($_GET['catid'])." AND etat = 1 AND EXTRACT(YEAR_MONTH FROM SUBDATE(Now(), INTERVAL 1 MONTH)) <> EXTRACT(YEAR_MONTH FROM date_insere) ORDER BY date_insere DESC LIMIT ".$start.", ".$nb_article;
Est-ce juste :?:

par sadeq » 28 août 2008, 13:46

Ou bien, pour tout faire par SQL :
$sql = 'SELECT * 
FROM 
    articles 
WHERE 
    id_cat = '.intval($_GET['catid']).' 
AND 
    etat = 1
AND 
   EXTRACT(YEAR_MONTH FROM SUBDATE(Now(), INTERVAL 1 MONTH)) = EXTRACT(YEAR_MONTH FROM date_insere) ';
Fonctions utilisées:
Extract : extrait une partie de la date
SubDate : soustrait un nombre d'une date selon un interval temps
Now() : date courante du serveur
Documentation : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

par mojorisin » 28 août 2008, 13:11

Salut,
voila une requete pour faire cela :
<?php
$tsLastMonth = mktime(0,0,0,date('m') -1,1,date('Y'));
$yearMonth= date('Ym',$tsLastMonth);

$query = 'SELECT * 
FROM 
	articles 
WHERE 
	id_cat = '.intval($_GET['catid']).' 
AND 
	etat = 1
AND
	"'.$yearMonth.'" = EXTRACT(YEAR_MONTH FROM date_insere)';
?>

Extraire les enregistrements du mois dernier

par shinigami » 28 août 2008, 12:48

Bonjour,

Et bien pour commencer, voilà ma table que j'utilise :

Code : Tout sélectionner

CREATE TABLE `articles` ( `id` int(11) NOT NULL auto_increment, `id_cat` tinyint(4) NOT NULL default '0', `titre` varchar(255) NOT NULL default '', `texte` text NOT NULL, `image` varchar(255) NOT NULL default '', `date_insere` datetime NOT NULL default '0000-00-00 00:00:00', `date_longue` varchar(100) NOT NULL default '', `etat` tinyint(1) NOT NULL default '0', PRIMARY KEY (`id`), KEY `name` (`titre`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=829 ;
j'extrairais mes enregistrements normalement avec la requête suivante :
$query_article = "SELECT * FROM articles WHERE id_cat = ".$_GET['catid']." AND etat = 1 ORDER BY date_insere DESC LIMIT ".$start.", ".$nb_article;
Là, tous va bien. Cependant, on m'a demandé de mettre un autre critère, celui là consiste à afficher les articles du mois précédent à part et ceci sans préciser le mois voulu ( c'est à dire que à chaque mois, la liste doit être du mois dernier automatiquement). Aussi, il faut mettre les autres articles en dessous après un trais qui les différencie.

Bon, pour la requête en manuelle j'y réussi avec :
$query_article	= "SELECT * FROM articles WHERE id_cat = ".$_GET['catid']." AND etat = 1 AND (date_insere BETWEEN '2008-07-01 00:00:01' AND '2008-07-30 23:59:59') ORDER BY date_insere DESC LIMIT ".$start.", ".$nb_article;
Mais, je voudrais savoir comment faire pour rendre ma requête automatique.

J'utilise MySQL version 4.1.9 en local et 5.0.51 sur le serveur distant.

Cordialement.