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 :

Modifier une date mysql au format francais


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut Modifier une date mysql au format francais
    Bonsoir à tous,
    Voici mon problème pour lequel j'ai vu quelques solution sur le net mais qui ne fonctionne pas.

    A partir d'un formulaire, je veux insérer des données dans une table. Cela se passe sans problème sauf que les dates dans MySQL sont au format us (yyyy,mm,dd) et il faut que je les transforme au format français (jrs, mois, année)..

    J'ai trouvé une fonction sur le net mais elle ne fonctionne pas.

    Voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
    /////////////////////////////
    // version 0.10 transforme une date us aaaa-mm-jj en date fr jj-mm-aaaa
    //et vice-versa
    /////////////////////////////
    function changedateusfr($dateus)
    {
    $datefr=$dateus{8}.$dateus{9}."-".$dateus{5}.$dateus{6}."-".$dateus{0}.$dateus{1}.$dateus{2}.$dateus{3};
    return $datefr;
    }
     
    function changedatefrus($datefr)
    {
    $dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1};
    return $dateus;
    } 
     
     
    ?>
    <?php
    //connexion au serveur
    $host = "localhost";
    $user = "root";
    $pass = "";
     
    @mysql_connect($host, $user, $pass) or die("La connexion a échoué :".mysql_error());
     
    //connexion à la BD
    $bd = "profilapprenant";
    @mysql_select_db($bd) or die ("selection impossible:".mysql_error()); 
     
    //creation de variables 
    $leNom = $_POST['leNom'];
    $lePrenom = $_POST['lePrenom'];
    $laDateTest = $_POST['laDateTest'];
    $laDateNaissance = $_POST['laDateNaissance'];
    $leNiveauBac = $_POST['leNiveauBac'];
     
    $datefr=changedateusfr($laDateTest); 
     
      $query = "INSERT INTO individu (nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES('$leNom', '$lePrenom', '$laDateTest', '$laDateNaissance', '$leNiveauBac')";
     
     
     
    $result = mysql_query($query) or die ("La requete a échoué:".mysql_error());
     
     
    //header("Location : secret.php");
     
    ?>
    Je me demande ce qui ne va pas quand j'appelle cette fonction ? est elle bien positionnée ?

    Avez vous une autre solution pour modifier mon champ de la table ?

    Merci à toute personne qui voudra bien m'aider

  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
    Plusieurs erreurs
    - tu utilises des variables intermédiaires qui ne servent à rien et tu n'utilises pas la bonne pour la date
    - tu ne protéges pas ta requêtes contre les injections
    - tu n'utilises pas les fonctions Mysql de conversion de date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $query = "INSERT INTO individu (nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
    '" . mysql_real_escape_string($_POST['leNom']) ."',
    '" . mysql_real_escape_string($_POST['lePrenom']) ."',
    STR_TO_DATE('" . mysql_real_escape_string($_POST['laDateNaissance']) ."'
    , '%d/%m/%Y'),
    '" . mysql_real_escape_string($_POST['leNiveauBac']) ."')";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut
    Bonjour sabotage,
    Quelles sont les variables intermédiaires qui ne servent à rien ? Est ce $leNom, $lePrenom ect...?

    J'ai utilisé ton code mais il s'affiche des erreurs notamment que les index leNom, lePrenom, laDateTest etc... sont indéfinis. Pourtant dans le formulaire l'attribut name porte ses noms. Comme $_POST crée un tableau associatif, je ne comprends pas pourquoi l'index est indéfini.

    Voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    //connexion au serveur
    $host = "localhost";
    $user = "root";
    $pass = "";
     
    @mysql_connect($host, $user, $pass) or die("La connexion a échoué :".mysql_error());
     
    //connexion à la BD
    $bd = "profilapprenant";
    @mysql_select_db($bd) or die ("selection impossible:".mysql_error()); 
     
    //creation de variables 
    /*
    $leNom = $_POST['leNom'];
    $lePrenom = $_POST['lePrenom'];
    $laDateTest = $_POST['laDateTest'];
    $laDateNaissance = $_POST['laDateNaissance'];
    $leNiveauBac = $_POST['leNiveauBac'];
      */
     
      $query = "INSERT INTO individu (nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
    '" . mysql_real_escape_string($_POST['leNom']) ."',
    '" . mysql_real_escape_string($_POST['lePrenom']) ."',
    STR_TO_DATE('" . mysql_real_escape_string($_POST['laDateTest']) ."'
    , '%d/%m/%Y'),
    STR_TO_DATE('" . mysql_real_escape_string($_POST['laDateNaissance']) ."'
    , '%d/%m/%Y'),
    '" . mysql_real_escape_string($_POST['leNiveauBac']) ."')";
     
     
     
    $result = mysql_query($query) or die ("La requete a échoué:".mysql_error());
     
    //$sql = "SELECT DATE_FORMAT(dateTest, \'%d %m %Y\') FROM individu";
    //header("Location : secret.php");
     
    ?>
    Par ailleurs, comment fait on pour protéger la requete contre les injections ?

    Enfin, avec un le code tel qu'écrit ci dessus un même utilisateur peut s'inscrire un nombre de fois illimité dans la base de données. Comment limiter cela, par un test if : sachant que pour l'instant je ne mets pas de pseudo et de mot de passe sur quoi va porter mon test. Est sur le nom ET prenom ET date de naissance ?

    Merci pour ton aide précieuse

  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 peux controler avec
    Tu as peut etre un probleme avec les majuscules.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut
    Re sabotage,
    J'ai mis le nom de variables à la place de $_POST['leNom']. Maintenant m'apparaît l'erreur suivante :
    La requete a échoué:Column 'dateTest' cannot be null.
    Pourtant quand je remplis le formulaire la date est renseignée.

    D'où peut venir cette erreur ?

    Merci pour ton aide

  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
    Tes variables intermediaires ne servent a rien.

    As-tu controlé comme je t'ai indiqué ?
    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. Comment convertir une date MySQL au format francophone ?
    Par bilane dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/09/2006, 10h44
  2. Parser une date avec un format
    Par titoine1978 dans le forum C++
    Réponses: 15
    Dernier message: 03/04/2006, 11h46
  3. Modifier une table MySQL via un lien
    Par Hayabusa dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/02/2006, 22h51
  4. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52
  5. [SGBD] Convertir une donnée Date MYSQL en format Francais
    Par hillairet dans le forum Débuter
    Réponses: 4
    Dernier message: 28/09/2005, 15h06

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