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 :

[Débutant] Requête sur date [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut [Débutant] Requête sur date
    Bonjour,

    j'ai un problème de syntaxe (je n'ai aucune grammaire...) sur la fin d'une requête qui dans l'esprit donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    WHERE
     
    (
    ( str_to_date( b.dates,'%Y-%m-%d' ) OR str_to_date( b.enddates,'%Y-%m-%d' ) )>str_to_date('".$curdate."', '%Y-%m-%d' )
    )
     
    OR
     
    (
    ( str_to_date( b.dates,'%Y-%m-%d' ) OR str_to_date( b.enddates,'%Y-%m-%d' ) )= str_to_date('".$curdate."', '%Y-%m-%d' )
    AND 
    if b.endtimes is >= *%H%M *OR *if b.endtimes is NULL
    )
    Comment faudrait-il écrire ça ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu ne peux pas écrire
    WHERE (a OR b) > c

    Il faut écrire
    WHERE a > c OR b > c

    Sinon pour ta dernière ligne je ne vois pas bien ce que tu essaies d'écrire avec les * et les if qui se balladent.

    Au passage, avec mysql, il existe CURDATE() pour avoir la date du jour ; tu n'a peut être pas besoin de ta variable $curdate si c'est à ca qu'elle sert.

    Si "dates" et "enddates" sont des champs DATE ou DATETIME et que tu veux savoir si un des deux est après ajourd'hui, ou aujourd'hui, tout simplement :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE b.dates >= CURDATE() OR b.enddates >= CURDATE()
    pas besoin de passer par str_to_date partout et de traiter separement le cas = et le cas >
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Merci pour ta réponse.

    "dates" et "enddates" sont des champs de date au format %Y-%m-%d
    "endtimes" renseigne la fin d'un événement en %H%M

    Mais seul "dates" est obligatoirement renseigné.
    (cf image)

    Il faut que je conserve les événements qui sont en cours (ceux pas terminés).
    On considère qu'un événement sans 'enddates' ni 'endtimes' dure jusqu'à la fin de la journée.

    Je m'emmêle les pinceaux…

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu aurais pu avoir un champ "DATETIME" pour la fin de ton evenement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Et ça on peut l'écrire ?
    (pardon de ne pas te répondre directement mais je fais avec mes lacunes…)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE b.dates >= CURDATE() OR ( b.enddates >= CURDATE() AND b.endtimes >= CURTIME() )
    Mais que se passe-t-il si endtimes est NULL ?…

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut ajouter le cas
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [sql server] requête sur dates et heures (format du résultat
    Par isachat666 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h48
  2. Requète sur dates compliquée ...
    Par itklif2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/11/2005, 23h31
  3. [ADO] Requète sur dates
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2005, 22h39
  4. [débutant] calcul sur date
    Par Regis.C dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 04/01/2005, 10h51
  5. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11

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