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 :

Insérer une date dans la base données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut Insérer une date dans la base données
    Bonjour,

    pour l'un de mes TP, j'ai besoin d'entrer des dates dans la base de données.
    L'tulisateur entre la date au format français, puis elle est traduite au format US par une fonction (donné par mon prof):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function date_fr_us($date)
         {
         $j = substr($date,0,2);
         $m = substr($date,3,2);
         $a = substr($date,6,4);
         return $a."-".$m."-".$j;
         }
    mon code est le suivant:
    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
     
     
    if($_POST['Ajouter'])
     {
    $descat = mysql_real_escape_string(htmlspecialchars($_POST['descat']));
    $dattac = mysql_real_escape_string(htmlspecialchars($_POST['dattac']));
    $dabtac = mysql_real_escape_string(htmlspecialchars($_POST['dabtac']));
    $daftac = mysql_real_escape_string(htmlspecialchars($_POST['daftac']));
     
     
    function date_fr_us($date)
    {
    $j = substr($date,0,2);
    $m = substr($date,3,2);
    $a = substr($date,6,4);
    return $a."-".$m."-".$j;
    }
     
    mysql_query("INSERT INTO taches values('','".$descat."', '"date_fr_us($dattac("d/m/Y"))"', '"date_fr_us($dabtac("d/m/Y")"', '"date_fr_us($daftac("d/m/Y"))"','')") or die(mysql_error()); 
     
      }
    ne sachant pas trop comment m'y prendre, j'ai recherché sur le net quelques infos, mais j'ai rien trouvé de bien intéressant..

    si quelqu'un peut me mettre sur la piste, je lui en serai reconnaissant
    Merci d'avance

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il existe déjà une fonction mysql pour faire la conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if($isset($_POST['Ajouter']))
     {
     
    $descat = mysql_real_escape_string($_POST['descat']);
    $dattac = mysql_real_escape_string($_POST['dattac']);
    $dabtac = mysql_real_escape_string($_POST['dabtac']);
    $daftac = mysql_real_escape_string($_POST['daftac']);
     
    mysql_query("INSERT INTO taches  (liste_des_champs) VALUES (
    STR_TO_DATE('".$descat."','%d/%m/%Y'),
    STR_TO_DATE('".$dabtac."','%d/%m/%Y'),
    STR_TO_DATE('".$daftac."','%d/%m/%Y')") or die(mysql_error());
    }
    Il serait interessant d'utiliser une fonction PHP maison si par exemple on lui fait valider la date saisie.

    Au passage ton htmlspecialchars n'a pas lieu d'être.

  3. #3
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Merci de ton aide sabotage

    le prof nous avait donner cette fonction, mais comme il existe déjà une fonction plus rapide à utiliser, autant s'en servir

    J'ai mis à jours ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_query("INSERT INTO taches (idtac,descat,dattac,dabtac,daftac,numcat) VALUES (' ',
    '".$descat."',
    STR_TO_DATE('".$dabtac."','%d/%m/%Y'),
    STR_TO_DATE('".$daftac."','%d/%m/%Y'),
    '".$numcat."' ") or die(mysql_error());
    (idcat est la clé primaire de ma table

    par contre, j'obtiens une erreur qui est la suivante :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il te manque une parenthese et tu n'as pas besoin d'indiquer le champ id puisqu'il est automatique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_query("INSERT INTO taches (descat,dattac,dabtac,daftac,numcat) VALUES (
    '".$descat."',
    STR_TO_DATE('".$dabtac."','%d/%m/%Y'),
    STR_TO_DATE('".$daftac."','%d/%m/%Y'),
    '".$numcat."')") or die(mysql_error());

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Merci

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

Discussions similaires

  1. Insérer une date dans une base de données Postgres
    Par sylvainkouo dans le forum JDBC
    Réponses: 1
    Dernier message: 17/01/2013, 09h44
  2. [MySQL] Enregistrer une date dans la base de données
    Par tkhchkhiche dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/09/2009, 07h18
  3. [MySQL] Insérer une date dans une base de données
    Par agnaou dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 23/03/2009, 11h43
  4. Probleme d'ajout d'une date dans un base de donnée access(conversion)
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 20/01/2008, 12h27
  5. impossible d'insérer une date dans la base
    Par bobic dans le forum ASP
    Réponses: 3
    Dernier message: 03/10/2005, 11h29

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