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 :

probleme requete avec comparaison du temps ecoule [MySQL]


Sujet :

PHP & Base de données

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut [MySQL] probleme requete avec comparaison du temps ecoule
    Bonjour,

    j'ai une bdd sql dans laquelle il y a une table avec un champ format datetime.
    j'ai un formulaire dans lequel je saisis une date format datetime, ainsi qu'une tolérance en minutes;
    je cherche à faire une requete pour retourner tous les enregistrements de la table dont la date est égale à la date saisie, avec un delta entre les 2 dates inférieur à la tolérance en minute.
    ma requete est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $requete="SELECT * FROM table 
    WHERE ('temps_ecoule(Date,$date_saisie)'<='intval($tolerance)'));";
    j'utilise la fonction temps_ecoule , dont le code vient de ce site, et qui permet de calculer en minutes l'écart entre 2 dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function temps_ecoule ($date1, $date2) {
        list ($annee1,$mois1,$jour1,$heure1,$min1,$sec1)=sscanf($date1,"%4s-%2s-%2s %2s:%2s:%2s");
        list ($annee2,$mois2,$jour2,$heure2,$min2,$sec2)=sscanf($date2,"%4s-%2s-%2s %2s:%2s:%2s");
        $timestamp1 = mktime ($heure1, $min1, $sec1, $jour1, $mois1, $annee1);
        $timestamp2 = mktime ($heure2, $min2, $sec2, $jour2, $mois2, $annee2);
        $delta = intval(abs($timestamp2 - $timestamp1)/60);
        return $delta;
    }
    le probleme est qu'avec cette requete il ne trouve jamais de résultat.
    pourtant en testant les variables j'ai bien un nombre entier pour le temps ecoule et pour la tolerance.
    je ne vois pas d'ou viens le probleme...si vous voyez merci de m'aider !

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    euh... temps_ecoule() c'est une fonction écrite en php. Ca ne te dérange pas de la mettre dans une requete sql ? Comment le sgbd va-t-il faire pour l'executer ?

    Quel est ton sgbd ?
    par exemple sous mysql tu peux utiliser 'ma_date BETWEEN min AND max'

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    salut merci beaucoup pour ta réponse tres juste en effet
    je n'avais pas réfléchis qu'il n'était pas évident que mysql comprenne du php..
    j'utilise mysql donc..
    en résumé, on ne peut utiliser dans les requetes que les fonctions de mysql, on ne peut pas définir de fonctions?
    je adapter mon code pour essayer d'utiliser 'ma_date BETWEEN min AND max'.
    je reviens si ça marche pas!
    merci
    arno

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    voilà j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date BETWEEN SUBDATE('$date_rech', INTERVAL '$tolerance' MINUTE)AND ADDDATE('$date_rech', INTERVAL '$tolerance' MINUTE)
    et ca marche nickel

    merci de m'avoir éclairé !

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu as mysql5 tu peux voir du coté des procédures stockées

    Mais regarde en premier lieu du coté de ce qui est fourni du coté de sql, il doit surement y avoir des fonctions pour travailler sur les dates
    Cadeau:
    http://dev.mysql.com/doc/refman/5.0/...functions.html


    EDIT: grilled...
    Bravo

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

Discussions similaires

  1. Probleme requete avec group by
    Par akabou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/01/2008, 10h28
  2. probleme requete avec variable php
    Par Burinho dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 11/08/2007, 21h53
  3. requete avec comparaison
    Par hermine dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 19/07/2007, 12h54
  4. Probleme requete avec MINUS
    Par ChrisMan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/05/2007, 17h27
  5. [WD9] Probleme requete avec SQLExec
    Par flecheverte dans le forum WinDev
    Réponses: 3
    Dernier message: 13/02/2007, 10h01

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