IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requete avec date du jour - 30 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Points : 37
    Points
    37
    Par défaut requete avec date du jour - 30
    bonjour

    je cherche l'expression pour mettre dans une requete la date du jour moins 30 jours.

    surement facile pour vous

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Points : 484
    Points
    484
    Par défaut
    Comme tu n'indique pas avec quelle base de donnée tu travaille, je vais supposer que c'est avec MySql.

    Manuel MySql => Fonctions Date et Heure => 1° exemple
    http://dev.mysql.com/doc/mysql/fr/date-and-time-functions.html
    Voici un exemple d'utilisation des fonctions de date. La requête suivante sélectionne toutes les lignes dont la colonne date_col représente une date de moins de 30 jours :

    mysql> SELECT quelquechose FROM nom_de_table
    WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

    Notez que cette requête va aussi sélectionner des lignes dont les dates sont dans le futur.
    je te laisse adapter à ton besoin précis.
    Ce n'est pas la seule solution, tu as d'autres fonctions comme datediff() par exemple.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    merci mais c'est la premiere page que j'ai ete voir avant de poser la question et helas je n'arrive pas à adapter à mon besoin c'est à dire uniquement les enregistrement de la date du jour moins 30 par exemple aujourd'hui il faudrait les enregistrements du 26 aout 2005.

    voila

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Points : 484
    Points
    484
    Par défaut
    Citation Envoyé par le69
    merci mais c'est la premiere page que j'ai ete voir avant de poser la question et helas je n'arrive pas à adapter à mon besoin c'est à dire uniquement les enregistrement de la date du jour moins 30 par exemple aujourd'hui il faudrait les enregistrements du 26 aout 2005.

    voila
    Soit tu veux la date du jour - 30 et là c'est facile.

    Soit tu veux le même jour du mois précédent, et là c'est bc plus dur.
    Par exemple, si tu prend le 30 mars, le même jour du mois précédent n'existe pas. Une simple requête ne te donnera pas la solution, il faut implémenter un calendrier.

    Si tu veux, la date du jour - 30, tu as la réponse dans le manuel mysql.

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND date_col BETWEEN DATE_SUB( NOW( ) , INTERVAL 30 DAY ) AND NOW( )
    ?

  6. #6
    Membre habitué Avatar de cynferdd
    Profil pro
    Analyste Développeur .Net, PHP, SQL Server
    Inscrit en
    Avril 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Développeur .Net, PHP, SQL Server

    Informations forums :
    Inscription : Avril 2003
    Messages : 154
    Points : 190
    Points
    190
    Par défaut
    ou sinon tu récupère la date courante, dans cette date tu récupère le mois que tu décrémente de 1, tu stocke dans une nouvelle variable, et tu fais la recherche à partir de cette nouvelle date.
    voir ici pour plus d'infos sur les fonctions php de dates : http://fr2.php.net/date
    (fonctions mktime() et date())
    A faire et à défaire on finit par ne plus rien faire.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    Voila la solution pour ceux que ca interesse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM `table` WHERE  TO_DAYS(NOW()) - TO_DAYS(datab)  = 30  ";

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Ce n'est pas LA solution, mais UNE solution.

    En voici 2 autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'SELECT * FROM `table` WHERE  DATE_ADD(datab, INTERVAL 30 DAY)  = CURDATE()'; 
    $sql = 'SELECT * FROM `table` WHERE  DATE_SUB(CURDATE(), INTERVAL 30 DAY)  = datetab';

  9. #9
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Requete : datant d'il y a 30 jours maxi
    Citation Envoyé par le69 Voir le message
    bonjour

    je cherche l'expression pour mettre dans une requete la date du jour moins 30 jours.

    surement facile pour vous
    voilà une façon simple de récupérer des éléments d'une table datants de 30 jours maximum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset = "SELECT champs FROM table WHERE ((DAYOFYEAR(CURRENT_DATE)-DAYOFYEAR(Date))<31) AND YEAR(Date)=YEAR(CURRENT_DATE)";
    Cette requête ici recherche les champs (à changer) dans la table (à changer aussi) dont la Date (champ de type DATE/DATE-TIME) et inférieure à 31 jours (ben oui 31 pour avoir ceux qui ont 30 jours )

  10. #10
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Laquelle de ces réponses est la plus optimisée ou la plus adaptée ? J'ai le même besoin et du coup je ne sais pas trop dans quel contexte on utilise telle ou telle réponse donnée ici. Deux requêtes peuvent avoir le même résultat mais pas forcement le même contexte d'utilisation...

    Par exemple (et c'est du au fait que je sois débutant) j'ai du mal à faire la différence dans certaines réponses entre qui est la fonction() de qui est le nom de variable, qui est le nom de colonne etc..

    (je mate la manuel sql en parallèle de ce message).

    Thx .

  11. #11
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset = "SELECT champs FROM table WHERE ((DAYOFYEAR(CURRENT_DATE)-DAYOFYEAR(Date))<31) AND YEAR(Date)=YEAR(CURRENT_DATE)";
    Cette méthode est à bannir puisqu'elle fonctionnera mal en début d'année (on est limité par le YEAR(Date) = YEAR(CURRENT_DATE).

    Pour les trois autres méthodes, je ne crois pas qu'il y ai une grande différence entre elles, à toi de voir l'écriture qui est la plus explicite pour toi donc !
    Pour t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM `myTable` WHERE  TO_DAYS(NOW()) - TO_DAYS(myDate)  = 30"
    30 est l'intervalle entre la date du jour (récupérée par la fonction NOW() et la date de chaque ligne traitée (en considérant le champs myDate de la table myTable).
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  12. #12
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Okey donc si je code quelque chose comme ça ca doit marcher selon toi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* MAKE A QUERY WHICH RECOVERS ADS */
     
        $ads_query = "select * from entreprise_offres
                    where  TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10";
     
        $results = mysql_query($ads_query);

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ads_query = "select * from entreprise_offres
                    where  TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10";
     
        $results = mysql_query($ads_query);
    le problème avec cette requête elle sélectionnera outre les enregistrements de moins de 10j mais aussi les enregistrements dont la date (date_publi) est postérieure à aujourd'hui.Il te faut ajouter une clause sql qui exclue toutes les dates futures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ads_query = "select * from entreprise_offres
                    where  (TO_DAYS(NOW()) - TO_DAYS(date_publi) )<= 10 AND date_publi<=now()";

  14. #14
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Ah ouai pas bête, voilà du coup ma requête terminée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ads_query = "select * from 'entreprise_offres'
                     where TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10 and date_publi <= NOW()
                     order by CURRENT_DATE desc
                     LIMIT 10";
    Car j'ai besoin de récupérer non seulement les annonces datant de moins de 10 jours mais dans une limite de 10 pour ne pas surcharger visuellement mon API pour les internautes. Et le tout classé par date du plus récent au plus ancien. J'ai rajouté aussi les simple côtes pour le nom de la table, apparemment il les faut.

    Vous connaissez par hasard un bon tuto qui explique comment connecter une API à une BDD distante hébergée chez OVH ? Car je n'ai que des aides pour se connecte en local je pense. Je ne vois nulle part d'aide montrant ne serai ce que l'URL distante. ce que j'ai trouvé et appliqué :
    - http://www.netalya.com/fr/cours-php-requetes-mysql.asp
    - http://www.netalya.com/fr/cours-php-...es-mysql-2.asp

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    je ne pense pas qu'il faille entourer le nom de la table des quotes(') . Quant à afficher que 10 annonces(LIMIT 10) il y a problème car le reste des annonces(>10) seront ignorées. A ce niveau c'est la pagination que tu dois mettre en œuvre pour pouvoir afficher 10 annonces par page.
    Pour ordonner les résultats, tu ordonnes par rapport à date_publi et non par rapport à la date courante.

    Quant à se connecter sur une BD distante je n'ai pas bien saisi le sens de ta question.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ads_query = "select * from 'entreprise_offres'
                     where TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10 and date_publi <= NOW()
                     order by CURRENT_DATE desc
                     LIMIT 10";
    Car j'ai besoin de récupérer non seulement les annonces datant de moins de 10 jours mais dans une limite de 10 pour ne pas surcharger visuellement mon API pour les internautes. Et le tout classé par date du plus récent au plus ancien. J'ai rajouté aussi les simple côtes pour le nom de la table, apparemment il les faut.

    Vous connaissez par hasard un bon tuto qui explique comment connecter une API à une BDD distante hébergée chez OVH ? Car je n'ai que des aides pour se connecte en local je pense. Je ne vois nulle part d'aide montrant ne serai ce que l'URL distante. ce que j'ai trouvé et appliqué :

  16. #16
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Hmmm en fait pour situer la chose je fais une appli Facebook (post new réglementation), et je fais remonter les annonces d'un site sur une API Facebook. La base étant stockée chez OVH je dois me connecter à la base de données hébergée là bas. Hors j'ai le sentiment que les tutos ci dessus sont conçus pour une base de données stockée à la maison en local bien au chaud .

    Pour les simple côtes en effet t'as raison sur le tuto que je t'ai mis ils les mettent pas.

    Exact ^^, je vais ordonner par date_publi ... Merci à toi !

    Pour les contraintes, je souhaite en fait afficher les annonces datant de moins de 10 jours mais dans la limite de 10 annonces sur la page, dans un premier temps. Donc je te confirme que le reste des annonces sera ignoré, mais si tu veux les principales sont les 10 premières, mises à jour chaque semaine, donc changeantes, donc les plus importantes, donc pour le moment ca suffira pour alimenter mon API.
    Je pourrai en effet mettre toutes les annonces et découper le tout en par exemple 10 par pages, ça me ferai 10 pages à l'aise et en fait j'ai un impératif de temps qui fait que j'ai pas le temps à mon niveau (débutant) pour le faire ^^.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Hmmm pour ceux qui tombent sur ce topic et ont le même problème, en fait l'offre OVH dont je dispose est en mutualisé, de ce fait je ne suis pas autorisé par OVH à me connecter à ma base avec une application externe à mon no de domaine. Génial OVH ^^ bon commerçants il faut soit investir dans un serveur dédié qui coute un bras et demi, un service VPS ou faire tourner en local avec un ordi allumé en perm'...

    Par conséquent je suis à la recherche d'une autre solution. J'avais commencé celle avec la récupération du flux rss pour l'afficher sur mon appli externe mais j'arrive pas à le faire fonctionner. Voir sinon du backlinking, voir comment faire...

  18. #18
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Par conséquent je suis à la recherche d'une autre solution. J'avais commencé celle avec la récupération du flux rss pour l'afficher sur mon appli externe mais j'arrive pas à le faire fonctionner.
    flux RSS, json ou web service, c'est la façon la plus simple et efficace à mon sens aussi pour récupérer les données que tu veux, je te conseille de fouiller plus de ce côté là
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  19. #19
    Membre à l'essai
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Exactement k'amm, c'est ce que j'ai essayé de faire avant de choisir la solution "connexion à la base" car c'est carrément plus simple et rapide je pense en terme de temps d'affichage (de mon point de vue de débutant en dev).

    Le site dont j'ai besoin de récupérer les données ne disposait pas de flux rss, il a fallu que j'en créé littéralement un, que j'ai fait valider par le feed validateur de W3C, sauf que je n'ai pas trouvé comment exploiter le contenu de ce flux dans mon index.php où j'ai besoin qu'il s'affiche... Je suis resté en fait une semaine sur l'histoire du flux rss sans résultat probant, et sans trouver d'aide sur le net. Peut être ma recherche n'était-elle pas bien formulée je ne sais pas.

    Du coup maintenant je suis en train de repartir sur cette idée de départ, t'as un tuto ou des compétences pour me filer la main sur ce coup ? J'arrive pas à exploiter mon flux sur mon appli externe en fait. En plus c'est frustrant j'ai un super résultat visuel sur mon flux rss ca me faciliterai la life d'arriver à poser ça.

  20. #20
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Il faudrait avoir un peu plus d'informations pour ça, tu entends quoi par "sauf que je n'ai pas trouvé comment exploiter le contenu de ce flux dans mon index.php où j'ai besoin qu'il s'affiche..." ?

    S'il s'agit de récupérer le contenu de ce flux rss, il te suffit d'utiliser la librairie simpleXML ou consulter ce tutoriel.

    Un simple code de ce genre peut suffire par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $myDatas = simplexml_load_file($rssUrl);
    var_dump($myDatas);
    ...A voir selon où tu bloques précisément ?
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [DeskI V5-V6] Requete avec date du jour - 6 mois
    Par lecowboydetchernobyl dans le forum Débuter
    Réponses: 17
    Dernier message: 30/04/2009, 14h49
  2. [Access] requête avec date
    Par hiko-seijuro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/08/2006, 09h05
  3. [debutant]Probleme de requete avec date
    Par shub dans le forum Access
    Réponses: 9
    Dernier message: 12/05/2006, 10h01
  4. requete avec date et heure
    Par robert_trudel dans le forum Access
    Réponses: 2
    Dernier message: 26/04/2006, 00h15
  5. [MySQL] requete avec date
    Par le69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/12/2005, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo