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 :

conversion date au format français [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut conversion date au format français
    bonjour,

    aprés avoir consulté plusieurs topics et éssayé plusieurs solutions , je fais appel à vous éspérant résoudre mon problème.

    je remplis un champs input à partir d'un calendrier, la date s'affiche lors de la saisie au format 18/07/2012 , après envois du formulaire à la bdd , la date est stockée sous ce format : 2012/07/18

    voici un bout du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function date_mysql($date_saisie){
     
            //division de la date par rapport au / ou -
            @list ($jour , $mois , $an) = split("[-./]",$date_saisie);
            //inverse la date
            return($an."-".$mois."-".$jour);
     
    }		
     
     
    //date_default_timezone_set('Africa/Algiers');
    $date_naiss= trim($_POST['date_naiss']);
    $date_naiss=date_mysql($date_naiss);
    une idée , merci de partager.

  2. #2
    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 : 52
    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
    Salam;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    ......
    $datefr=$_POST['datedec']; // 20/06/2012
    $split = explode("/",$datefr); 
    $annee = $split[2]; 
    $mois = $split[1]; 
    $jour = $split[0]; 
    $dateus= "$annee"."-"."$mois"."-"."$jour"; 
    echo $dateus; // pour verifier 2012-06-20
    bonne utilisation.
    NB: n'oublie pas de verifier la validité de la date ( format et contenu).

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    En php 5.3 et supérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dt = DateTime::createFromFormat('d/m/Y', $date);
    $dateMysql =  $dt->format("Y-m-d");
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    Citation Envoyé par redoran Voir le message
    Salam;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $split = explode("/",$datefr); 
    $annee = $split[2]; 
    $mois = $split[1]; 
    $jour = $split[0]; 
    peut être remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list($jour,$mois,$annee)=explode("/",$datefr);
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    merci pour vos réponse

    @ reoran : ton bout de code donne le même résultat que le mien !!

    @ grunk : j'ai une version de php inférieure à 5.3 , j'ai déjà testé une version php 5 et j'ai eu un pb pour la création des tables avec le moteur innodb , du coup j'ai gardé la version actuelle.

    @patrickbaras : j'ai toujours le même format de date qui s'affiche !!

    j'ai ajouté cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocale(LC_TIME, "fr", "fr_FR", "fr_FR.ISO8859-1");

  6. #6
    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 : 52
    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
    Là je vous suit pas. (chez moi sa marche tres bien)
    les dates sont stockées en mysql sous la forme 2012-07-18 (selon définition du champs date) mais pas en 2012/07/18 !!!!!!
    essaye avec un var_dump pour voir le résultat avant l'enregistrement de la date.
    ta fonction marche bien.
    montre nous le code d'insertion des données.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    bonjour,
    les dates sont stockées en mysql sous la forme 2012-07-18 (selon définition du champs date) mais pas en 2012/07/18 !!!!!!
    exact,pourtant en éssayant de modifier la fonction de telle sorte que la date affichée contienne uniquement des slashs , ces derniers sont remplacés par des tirets de 6 !!! je ne comprends pas : c'est propre à mysql à ce que je vois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function date_mysql($date_saisie){
     
            //division de la date par rapport au / ou -
            @list ($jour , $mois , $an) = split("/",$date_saisie);
            //inverse la date
            return($an."/".$mois."/".$jour);
     
    }
    essaye avec un var_dump pour voir le résultat avant l'enregistrement de la date.
    résultat du var_dump :string(10) "1977-08-23"
    montre nous le code d'insertion des données.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $date_naiss= trim($_POST['date_naiss']);
    $date_naiss=date_mysql($date_naiss);
    var_dump($date_naiss);
     
           //* connexion à la base
    $result = db_connect();
    if (!$result)
       die(mysql_error());
     
         // selection de la base de données 
     
    $select  = mysql_select_db($dbName,$result);
       if (!$select)
       die(mysql_error());
     
    /*conversion de la date au format Français 
      
      $date_naissance=explode('-',$date_naiss);
      $date_naiss=$date_naissance[2].'-'.$date_naissance[1].'-'.$date_naissance[0];
      
      $date_naiss=substr($_POST["$date_naiss"],0,2)."-".substr($_POST["$date_naiss"],2,2)."-".substr($_POST["$date_naiss"],4,4);*/
        // on insère dans la table 
     
        $insert = "INSERT INTO intervenant_interne (nom, prenom,date_naiss,email, login, passwd,telephone,mobile_intervenant,poste_interne,fax,adresse,fk_droit_acces,poste_oqp,disponibilite) VALUES('$nom','$prenom','$date_naiss','$email','$login','$passwd','$num_téléphone','$num_portable','$poste_interne','$fax ', '$adresse ','$fk_droit_acces','$poste_oqp','$disponibilite')";
    mysql_query($insert) or die(mysql_error());
     
    // on ferme la connection à la base de données.
    mysql_close ();

  8. #8
    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 : 52
    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
    résultat du var_dump :string(10) "1977-08-23"
    c'est le bon résultat pour le stockage en mysql , ensuite pour l'affichage tu inverse ta fonction pour faire en sorte que tu aura le résultat 23/08/1977.
    http://dev.mysql.com/doc/refman/5.0/...tml?ff=nopfpls

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    j'ai inversé ma fonction que tu me l'as conseillé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function date_mysql($date_saisie){
     
            //division de la date par rapport au / ou -
            @list ($jour , $mois , $an) = split("[-./]",$date_saisie);
            //inverse la date
            return($jour."-".$mois."-".$an);
     
    }
    voici le résultat de var_dump :
    string(10) "23-08-1977"

    mais dans ma table j'ai toujours : 0000-00-00 !!!!!!!

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    j'ai trouvé une instruction sql pour la conversion mais je n'arrive pas à l'inclure à ma requète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $res=mysql_query("SELECT DATE_FORMAT('$date_naiss', GET_FORMAT(DATE, 'EUR') from intervenant_interne ") or die(mysql_error());

  11. #11
    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 : 52
    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
    attend ne mélangeant pas les choses.
    j'ai inversé ma fonction que tu me l'as conseillé :
    c'est pour l'affichage niveau interface et non pas SGBD Ok.
    mais dans ma table j'ai toujours : 0000-00-00
    donc ta date n'est pas inseré !!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date_naiss= trim($_POST['date_naiss']);
    $date_naiss=date_mysql($date_naiss);
    là je me demande s'il prend la première ou la deuxième !!!!!!
    alors change la deuxième en $date_naiss1=date_mysql($date_naiss); et envera le resultat.

  12. #12
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu est sur que $_POST['date_naiss'] est bien au format JJ/MM/AAAA

    tu utilise un champ date (et pas datetime)

    tu "quote" bien les valeurs dans la requete sql:
    insert .... (date_naiss,.....) values ('1983-08-26',.....)

    je ne vois pas d'autres problèmes potentiels
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  13. #13
    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 : 52
    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
    en partant du post #7:
    résultat du var_dump :string(10) "1977-08-23"
    donc la fonction fonctionne parfaitement et y a un contenu.
    donc apparament le code prend le contenu de la dernière variable , alors mon post #11 n'est pas logique
    hum ou est l'erreur..!!!!!!

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par redoran Voir le message
    attend ne mélangeant pas les choses.

    c'est pour l'affichage niveau interface et non pas SGBD Ok.

    donc ta date n'est pas inseré !!!!
    si si , la date est bien insérée , c'est juste que je n'ai pas compris ce que tu voulais dire par inverser fonction !!!

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par patrickbaras Voir le message
    tu est sur que $_POST['date_naiss'] est bien au format JJ/MM/AAAA


    je ne vois pas d'autres problèmes potentiels
    moi non plus je n'arrive pas à voir où est le pb , tout semble normal , mais dur dur de trouver l'erreur , je galère !!!

  16. #16
    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 : 52
    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
    donc la date est insérée dans la bdd sous la forme voulue "2012-08-23".
    parce que ta dit dans le pos #9 que :
    mais dans ma table j'ai toujours : 0000-00-00 !!!!!!!

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par PeaceMind Voir le message
    j'ai inversé ma fonction que tu me l'as conseillé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function date_mysql($date_saisie){
     
            //division de la date par rapport au / ou -
            @list ($jour , $mois , $an) = split("[-./]",$date_saisie);
            //inverse la date
            return($jour."-".$mois."-".$an);
     
    }
    voici le résultat de var_dump :
    string(10) "23-08-1977"

    mais dans ma table j'ai toujours : 0000-00-00 !!!!!!!
    comment vous expliquez ça : string(10) "23-08-1977" le contenu de la variable est une date française , dans mysql 0000-00-00

  18. #18
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par redoran Voir le message
    donc la date est insérée dans la bdd sous la forme voulue "2012-08-23".
    parce que ta dit dans le pos #9 que :
    je veux stocker une date au format français

  19. #19
    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 : 52
    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
    comment vous expliquez ça : string(10) "23-08-1977" le contenu de la variable est une date française , dans mysql 0000-00-00
    en parle par rapport au format.
    répond l'enregistrement est comme voulue non !!! (1977-08-23).

  20. #20
    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 : 52
    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
    c'est pas possible si ta lue le lien que j'ai posté tu comprenndra ; ici c'est l’intérêt de faire une autre fonction pour convertir la date (1977-08-23) en (23/08/1977) afin de l'affichée en format JJ/MM/AAAA.
    aussi faut ajouter un contrôle de validité de date :
    si je saisie 31/02/2012 sa passe

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/02/2011, 20h18
  2. Date en format français pour document.lastModified
    Par kurtbosh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2009, 11h59
  3. Réponses: 4
    Dernier message: 06/11/2007, 14h49
  4. date au format français
    Par jeanfi77 dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2007, 09h34
  5. Insérer une date au format français dans un champ
    Par EpOnYmE187 dans le forum Installation
    Réponses: 2
    Dernier message: 14/06/2005, 12h09

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