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

Langage PHP Discussion :

[Dates] transformation du format de la date


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut [Dates] transformation du format de la date
    Bonjour,
    J'ai le requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requeteP="select * from patient where dateN=$dateN";
    Le problème c'est que $dateN, saisie par un client est au format JJ/MM/AAAA et que dans la base (ACCESS) la date est au format AAAA/MM/JJ HH:MM:SS

    Comment pourais-je faire pour transformer $dateN au même format.

    J'ai déja fait l'inverse en récupérant la date de la base et de la mettre en JJ/MM/AAAA puis la comparer avec $dateN mais ici, je ne sais pas trop comment faire.

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function fr2en($date) {
        if (preg_match('#^([0-9]{2})([/-])([0-9]{2})\2([0-9]{4})$#', $date, $m) == 1 && checkdate($m[3], $m[1], $m[4])) {
            return "{$m[4]}/{$m[3]}/{$m[1]} 00:00:01";
        } else {
            return FALSE;
        }
    }
     
    $dateUS = fr2en($dateN);
    if (!$dateUS) {
        die('Date invalide !');
    }
    $requeteP="select * from patient where dateN='$dateUS'";

    Julp.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Merci,

    la fonction transforme bien la date au format voulu. Mais un problème survient lors de la requête, le message d'erreur est :

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'dateN=1931-11-22 00:00:00'., SQL state 37000 in SQLExecDirect in C:\Serveur\Interface\InterfacePROLOG\verifentreeEGA.php5 on line 90
    ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requeteP="select * from patient where dateN=$dateUS";
    je ne met pas de quote autours de $dateUS quand je fais la requete car sinon le type de donnée est incompatible avec le type Date de dateN. Je me demande si c'est à cause de l'espace entre la date et l'heure!

  4. #4
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Passe en sql si tu n'est pas obligé d'utiliser access.
    Pour moi il faut des guillemet car c'est uen chaine de caractère, et en plus avec des espaces ...

    'SELECT * FROM `patient` WHERE `dateN`="$dateUS"'

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    normalement sous access il faut entourer les dates par # :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requeteP="select * from patient where dateN=#".$dateUS."#";

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Merci,
    il manquait bien les #.
    Sinon je pouvait aussi changer le type Date en texte pour faire plus simple mais j'opterais pour garder le type Date et mettre les #.

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

Discussions similaires

  1. Transformer le format d'une date
    Par yoaugoulo dans le forum Développement de jobs
    Réponses: 17
    Dernier message: 02/12/2009, 16h04
  2. Transformer un format 'ANNEEMOIS' en date du dernier jours du mois
    Par mat75019 dans le forum Développement
    Réponses: 6
    Dernier message: 27/10/2008, 23h21
  3. [MySQL] Transformation du format de la date de la base de données
    Par npirard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2007, 19h09
  4. [Dates] changer le format d'une date.
    Par maraly dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 16h17
  5. [Dates] Transformation de format de date PHP
    Par ns_deux dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2006, 12h15

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