Enregistrer date format fr dans BDD MySQL

D_AmOn -  
annabe Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je me casse la tête depuis plusieurs jours avec les dates !!
Voici mon problème : le visiteur insère dans un champ sa date de naissance (au format jj/mm/aaaa). Jusque la tout va bien. Mais impossible de convertir cette date en format américain (yyyy-mm-dd) pour la rentrer dans MySQL !! Quelqu'un peu t-il m'aider svp =( J'ai fait de nombreux forums mais impossible de trouver la réponse...

Voici mon code :

<?php

mysql_connect("localhost", "Boum", "");
mysql_select_db("Test");

if (isset($_POST['dateNaissance']))
{
$dateNaissance = mysql_real_escape_string(htmlspecialchars($_POST['dateNaissance']));

mysql_query("INSERT INTO Membre VALUES('" . STR_TO_DATE('$dateNaissance', '%d/%m/%Y') . "')");

}

?>

PS : je suis débutant en PHP/MySQL...
Configuration: Windows Vista
Firefox 3.0.9

3 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    voilà:

    if (isset($_POST['dateNaissance'])){
    $dateNaissance_fr=htmlspecialchars($_POST['dateNaissance']);
    $array_date_naissance=explode("/",$dateNaissance_fr);
    $dateNaissance_mysql=$array_date_naissance[2]."-".$array_date_naissance[1]."-".$array_date_naissance[0];
    
    mysql_query("INSERT INTO Membre VALUES('" . mysql_escape_string($dateNaissance_mysql)."')"); //attention tu dois mettre les values dans l'ordre de tes champs de ta table
    5
  2. P@t@ch0n Messages postés 603 Statut Membre 85
     
    Avec un explode() simplement.
    if( !empty($_POST['dateNaissance']) )
    {
        if( preg_match('#^\d{2}/\d{2}/\d{4}$#', $_POST['dateNaissance']) )
        {
            $date = explode('/', $_POST['dateNaissance']);
            if( checkdate($date[1], $date[0], $date[2]) )
            {
                $sql = "INSERT INTO Membre VALUES('" . $date[2] . '-' . $date[1] . '-' . $date[0] . "')";
                 mysql_query($sql); 
            }
            else
            {
                // Date invalide
            }
        }
        else
        {
            // Format invalide
        }
    }
    else
    {
        // Champ vide
    }
    Tu peux encore affiner la chose en vérifiant que la date fournie est par exemple supérieure à 1900 et inférieure à celle (d'aujourd'hui moins 10ans).
    0
    1. annabe Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
       
      J'ai appliqué le même code sans succès. Quelqu'un peut-il m-aider svp. Je déséspère ... :(

      $con = mysql_connect("localhost","root","");
      if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

      mysql_select_db("membres", $con);

      $sql="INSERT INTO benevoles (nom, prenom, datenaissance, secteur) VALUES ('$_POST[nom]','$_POST[prenom]','$_POST[datenaissance]','$_POST[secteur]')";


      if( !empty($_POST['datenaissance']) )
      {
      if( preg_match('#^\d{2}/\d{2}/\d{4}$#', $_POST['datenaissance']) )
      {
      $date = explode('/', $_POST['datenaissance']);
      if( checkdate($date[1], $date[0], $date[2]) )
      {
      $sql = "INSERT INTO benevoles VALUES('" . $date[2] . '-' . $date[1] . '-' . $date[0] . "')";
      mysql_query($sql);
      }
      else
      {
      // Date invalide
      }
      }
      else
      {
      // Format invalide
      }
      }
      else
      {
      // Champ vide
      }


      if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }


      ?>

      J'arrive pas à enregistrer la date en format accepté YYYY-MM-DD par mysql

      Merci infiniment
      Anna
      0
  3. D_AmOn
     
    Merci beaucoup vos codes marchent inpec !!
    0