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 :

Date du jour + 'nb' jours dans un where [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut Date du jour + 'nb' jours dans un where
    Salut !

    Voici ma petite question :
    Sur une table d'évènements, je veux sélectionner des id précises pour les faire remonter dans un agenda et faire afficher les prochains rendez-vous des X jours suivants.

    J'étais parti sur une requête avec un where comme ceci :
    WHERE date >= (NOW() + '7 days') mais ça ne fonctionne pas.

    J'ai bien parcouru différents articles sur la gestion des dates mais mes essais n'ont pas été bien concluants...

    Merci d'avance pour vos retours !

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu ne dis pas quelle SGBD tu utilises.

    Pour MySql

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date_add( now() , INTERVAL 7 day)
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Salut Badaze,

    J'utilise MySql. J'ai ajouté ton code mais à l'exécution, j'ai la totalité des évènements qui s'affichent.

    Requête simplifiée pour garder l'essentiel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $evenement = $sql->query("SELECT * FROM "._TAGENDA_." WHERE date_add( now(), INTERVAL 7 day) ORDER BY date DESC")
    Est-ce que j'ai oublié quelque chose?

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $evenement = $sql->query("SELECT * FROM "._TAGENDA_." WHERE date >= date_add( now(), INTERVAL 7 day) ORDER BY date DESC")
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Je ne comprends pas, j'ai toujours le même résultat...

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Chez moi ça marche bien. Poste ta requête.

    Un seul enregistrement sur 52 que compte ma table.

    Nom : Capture20180906_001.JPG
Affichages : 159
Taille : 27,0 Ko

    date étant un mot réservé de SQL il est conseillé de l'entourer avec des ` pour lever l'ambiguïté. => `date`
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    La requête de badaze retourne les rendez-vous après 7 jours, et la fonction now() prend aussi en compte l'heure.
    Pour les rendez-vous d'aujourd'hui jusqu'au 13/09/2018 à minuit, tu pourras utiliser cette requête par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM "._TAGENDA_." WHERE date between curdate() and date_add( curdate(), INTERVAL 7 day)
    Évite aussi d'utiliser des mots clés comme "date" comme nom de colonne, table , fonction, ...

    A+.

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Exact. J’ai repris la fonction du premier message sans y faire attention.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    tant qu'à (bien) faire, autant respecter la convention qui veut qu'on écrive les instructions SQL en majuscules :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM "._TAGENDA_." 
    WHERE `date` BETWEEN CURDATE() AND DATE_ADD( CURDATE(), INTERVAL 7 DAY)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    En ajoutant le between ça fonctionne, merci à vous tous pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] A partir d'un intervalle de date remplir des données jour par jour
    Par colline_ dans le forum Access
    Réponses: 8
    Dernier message: 18/04/2014, 11h42
  2. Select avec "date d'un premier élément" dans clause Where
    Par adrien357 dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/11/2008, 15h27
  3. date pdu jour par défaut dans create table
    Par r83 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/10/2006, 22h45
  4. Afficher date jour par defaut dans Combox de dates...
    Par nicburger dans le forum Access
    Réponses: 5
    Dernier message: 08/02/2006, 14h59
  5. requette where date="moins de 2 jours"
    Par nmerydem dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/05/2004, 16h58

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