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 :

[mysql]Affichage de résultats selon le mois choisi [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut [mysql]Affichage de résultats selon le mois choisi
    Bonjour,

    je me prends la tête pour trouver LA requête qui fonctionne avec tous mes cas.
    Les utilisateurs ont une liste sous la forme Février 2011/Mars 2011/Avril 2011... afin d'afficher les manifestations qui ont lieu pendant ce mois, et qui ne sont pas encore passées.
    Mes manifestations sont enregistrées avec une date de début et une date de fin (qui peuvent être identiques si la manifestation ne dure qu'une journée).
    Par exemple, je dois afficher :
    - A qui a lieu le 15/02/11 (heureusement la majorité des cas ne dure qu'une journée)
    - B qui a lieu entre le 01/01/11 et le 17/02/11
    - C qui a lieu entre le 02/02/11 et le 23/02/11
    - D qui a lieu entre le 18/02/11 et le 25/02/11
    - E qui a lieu entre le 01/01/11 et le 15/03/11
    ...

    j'ai essayé plusieurs choses, sans succès total

    une idée ?

    merci d'avance !

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Points : 348
    Points
    348
    Par défaut
    EDIT : J'étais partis sur l'affichage, désolé.
    La réponse fournie par stealth35 est la plus propre à mon goût.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Soit $mois_debut le premier jour du mois choisis et $mois_fin le dernier jour du même mois.
    Soit une table event qui contient les champs id, date_debut, date_fin.
    Alors ta requête sera du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM event WHERE date_debut <= '$mois_fin' AND date_fin >= '$mois_debut'";

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Fabllot Voir le message
    Soit $mois_debut le premier jour du mois choisis et $mois_fin le dernier jour du même mois.
    Soit une table event qui contient les champs id, date_debut, date_fin.
    Alors ta requête sera du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM event WHERE date_debut <= '$mois_fin' AND date_fin >= '$mois_debut'";
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up <= "2011-02-01" AND publish_down >= "2011-02-28"
    ça ne va pas vraiment, il manque pas mal de résultats.

    J'ai bien essayé avec year et month, mais je patauge dans mes essais fantaisistes...

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Citation Envoyé par badseyar Voir le message
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up <= "2011-02-01" AND publish_down >= "2011-02-28"
    ça ne va pas vraiment, il manque pas mal de résultats.

    J'ai bien essayé avec year et month, mais je patauge dans mes essais fantaisistes...
    Certes, ce n'est pas ce que j'ai écrit !

    Si je comprends ton code, essais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up >= "2011-02-01" AND publish_down <= "2011-02-28"

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Bonjour Fabllot,

    de cette manière, je n'ai que les manifestations dont les dates de début et de fin sont comprises dans le mois.

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Citation Envoyé par badseyar Voir le message
    Bonjour Fabllot,

    de cette manière, je n'ai que les manifestations dont les dates de début et de fin sont comprises dans le mois.
    Je suis surpris... Les comparaisons sont dans le bon sens ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    publish_up >= "2011-02-01" AND publish_down <= "2011-02-28"
    Sinon qu'est-ce qu'exactement les champs publish_up et publish_down ?
    Je surpris car j'utilise cette recette sur mes sites et ça marche très bien !

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    publish_up : date de début de la manifestation
    publish_down : date de fin

    j'ai bien mis les bons sens de comparaison (j'ai même essayé les 2 sens en fait )

    Quelques exemples concrets (titre/publish_up/publish_down) qui doivent apparaître avec ma recherche :
    - Le Malade imaginaire de Molière / 2011-02-12 / 2011-02-12
    - Quatuor de saxophones "AEolia" / 2011-02-15 / 2011-02-15
    - Expositions photographiques / 2011-01-10 / 2011-04-15
    - Exposition de Peinture ou de sculpture / 2011-01-29 / 2011-02-20

    par contre les manifestations suivantes ne doivent pas s'afficher :
    - Concert symphonique / 2011-01-25 / 2011-01-25
    - Théâtre Avenel / 2011-02-04 / 2011-02-04
    - Exposition Monet / 2011-01-03 / 2011-02-07

  10. #10
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Slt ; le concept de fablot est correcte , avec >= et <= vous aurer le bon résultat , essaye de voire le champ de votre table normalement avec deux champs date de début et date de fin : format date yyyy/mm/dd là son faute .
    essaye de données exemple table avec 6 enregistrements et un résultat avec ta requête avec des dates de paramètres et on verra . merci

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Les exemples ci-dessus sont tirés de ma base de données.
    En utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up >= "2011-02-01" AND publish_down <= "2011-02-28"
    et en choisissant "Février 2011" dans ma liste, je dois avoir toutes les manifestations en cours à la date du jour ou programmée entre la date du jour et la fin du mois.
    Or j'obtiens tous ces résultats (format date changé via le csv exporté) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    titre	publish_up	publish_down
    Le paquet Une pièce de Philippe Claudel	18/02/2011 18/02/2011
    Spectacle enfant :La chanson de Renart 	09/02/2011 09/02/2011
    Quatuor de saxophones AEolia	15/02/2011 15/02/2011
    Le Malade imaginaire de Molière	12/02/2011 12/02/2011
    Concours de Pétanque	27/02/2011	27/02/2011
    Loto	12/02/2011	12/02/2011
    Loto	20/02/2011 20/02/2011
    Concours de Belote	20/02/2011 20/02/2011
    Randonnée de l amicale Laïque	13/02/2011 13/02/2011
    Bourse vide grenier	12/02/2011 12/02/2011
    Sacrifices de et par Nouara Naghouse	01/02/2011	01/02/2011
    Concert de Manu Galure	04/02/2011 04/02/2011
    Les Danses de l intime	08/02/2011 08/02/2011
    Concours de Poker	19/02/2011 19/02/2011
    Soirée dansante Année 80	19/02/2011 19/02/2011
    Exposition	01/02/2011 25/02/2011
    donc il y a des manifs qui n'ont pas leur place (ex : Concert de Manu Galure) et il en manque (ex : Expositions photographiques / 2011-01-10 / 2011-04-15)

  12. #12
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Ok j'avais pas inversé publish_up et publish_down...
    Ceci dit ma première requête reste correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM event WHERE date_debut <= '$mois_fin' AND date_fin >= '$mois_debut'";
    On a publish_up = date_debut et publish_down = date_fin, mais pour moi le mois de février commence au 1er et fini au 28 et non l'inverse !
    Donc ta requête donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up <= "2011-02-28" AND publish_down >= "2011-02-01"

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    En effet, c'est beaucoup mieux !
    Il me reste à exclure les manifestations qui sont passées (par exemple un concert du 04/02 s'affiche toujours), avec une routine php ça sera plus simple je pense que dans la requête

  14. #14
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up <= "2011-02-28" AND publish_down >= now()

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    arf je l'avais retiré de ma première requête...

    merci beaucoup !

  16. #16
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    En fait avec now() on reste sur les manifs du mois en cours quel que soit le mois, donc je vais rester sur mon idée de contrôle via php

  17. #17
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM agendav3 WHERE publish_up <= "2011-02-28" AND publish_down >= "2011-02-01" AND publish_down >= now()

  18. #18
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2003
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    j'allais justement le poster, je venais de l'implémenter et de faire mes tests, donc cette fois si c'est bel et bien résolu

    merci encore

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

Discussions similaires

  1. MySQL : Affichage du résultat d'une requête dans un tableau
    Par mathieu dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 7
    Dernier message: 22/09/2017, 16h51
  2. Affichage de résultats selon checkbox
    Par Meloooo dans le forum jQuery
    Réponses: 2
    Dernier message: 22/02/2011, 19h06
  3. [DATE] Afficher résultat selon le mois selectionner
    Par mickado dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/07/2007, 17h47
  4. [Dates] affichage différent selon le mois en cours
    Par itri2005 dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2006, 17h05
  5. [Dates] affichafe d'evenements selon le mois choisi
    Par Pepito dans le forum Langage
    Réponses: 3
    Dernier message: 07/03/2006, 02h47

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