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 :

Insertion d'une date avec une requête MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut Insertion d'une date avec une requête MySQL
    Bonjour à tous,

    Après de fructueuses recherches, je baisse les bras ...

    La syntaxe ci-dessous ne fonctionne qu'à moitié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
    	echo ($str_dateOp);
    	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'")';
    La valeur $str_DateOp du champs OC_Date ne s'insère pas.

    Dans la table T_OpeCom, le champs OC_Date est de format Date.

    Merci à tous ...
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  2. #2
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Bonjour, que contient $_POST['txt_Date'] ?

    Qu'affiche echo ($str_dateOp) ?

  3. #3
    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
    La fonction PHP date() ne sert pas à ça et ne s'utilise de toute façon pas comme ça (consulte la documentation).

    Pour convertir ta date au format mysql, utilise la fonction mysql STR_TO_DATE().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Salut

    Ton problème se situe ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
    Ce code est faux pour deux raison:
    - je pense que $_POST['txt_date'] contient une date dans un format du style d/m/y h:i:s et non un timestamp
    - la syntaxe correcte pour date est date($format, $timestamp)

    Pour convertir une date en timestamp, il faut par exemple utiliser strtotime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date = "10 September 2010";
    $time = strtotime($date);
    echo date('d/m/Y', $time);

  5. #5
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Nheo_ Voir le message
    Bonjour, que contient $_POST['txt_Date'] ?

    Qu'affiche echo ($str_dateOp) ?
    Bonjour,

    ... affiche la date correctement
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  6. #6
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par Milyshyn76 Voir le message
    Bonjour,

    ... affiche la date correctement
    C'est à dire ? Donne un exemple d'exécution et montre le résultat du echo.

  7. #7
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Salut

    Ton problème se situe ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
    Ce code est faux pour deux raison:
    - je pense que $_POST['txt_date'] contient une date dans un format du style d/m/y h:i:s et non un timestamp
    - la syntaxe correcte pour date est date($format, $timestamp)

    Pour convertir une date en timestamp, il faut par exemple utiliser strtotime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date = "10 September 2010";
    $time = strtotime($date);
    echo date('d/m/Y', $time);
    Merci Benjamin,
    Contrairement à certains, tu m'a très bien aidé.

    Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
    	//echo ($str_dateOp);
    	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
    ça fonctionne, lorsque je rentre, admettons, 12/09/2011.
    Le résultat affiche :

    2011-12-09

    En revanche, ça ne marche pas à certaines date ça me donne une valeur par défaut : 1970-01-01

    Ta syntaxe exact ne m'insère pas ma date par contre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date = "10 September 2010";
    $time = strtotime($date);
    Merci de ton aide ....
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  8. #8
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Nheo_ Voir le message
    C'est à dire ? Donne un exemple d'exécution et montre le résultat du echo.
    Par exemple si je tape 12/09/2011 ça m'affiche 2011-12-09
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  9. #9
    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
    J'insiste mais la façon simple d'inserer est d'utiliser STR_TO_DATE()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    En revanche, ça ne marche pas à certaines date ça me donne une valeur par défaut : 1970-01-01
    Peux-tu donner un exemple de date posant pb ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  11. #11
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par sabotage Voir le message
    J'insiste mais la façon simple d'inserer est d'utiliser STR_TO_DATE()
    +1, tu devrais suivre ses conseils

    Citation Envoyé par Milyshyn76 Voir le message
    Par exemple si je tape 12/09/2011 ça m'affiche 2011-12-09
    Si tu as une date correct à l'affichage, je ne vois pas pourquoi l'insertion marche pas ...

    Essaye de faire un insertion avec une valeur directement : 2000-02-02 par exemple.

  12. #12
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Bonjour à tous,

    voilà pour commencer, je fais tout un test de date à inserer :

    Si je saisie 12/06/2011, dans la table s'insère 2011-12-06 (Donc on peut en conclure que le mois et le jour sont confondus).

    Parce que si j'insère le 14/06/2011, j'ai une date par défaut.
    C'est ben un soucis entre le jour et le mois (Sachant qu'il n'y a pas de 14 ième mois dans l'année)

    Si je ne saisie rien, alors dans la table s'insère la date 1970-01-01 par défaut j'imagine.

    Mon code d'origine est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
    	//echo ($str_dateOp);
    	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
    J'utilise strtotime et non STR_TO_DATE ...

    Donc avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_DateOp = (date("Y-m-d", $_POST['txt_Date']));
    l’insertion ne s'effectue pas.

    idem si j'utilise cette syntaxe la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str_DateOp = $_POST['txt_Date'];
     
    	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","STR_TO_DATE('.$str_DateOp.')",'.   $_POST['cmb_ChargeOp'].')';
    La requête insère 0000-00-00 ...

    Pareil pour cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
    $sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","STR_TO_DATE('.$str_DateOp.')",'.   $_POST['cmb_ChargeOp'].')';
    Merci à tous !
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  13. #13
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Hello,
    Je ne vois pas pourquoi, dans ces quelques lignes, jour et mois seraient inversés.
    Essaie ceci avec qques dates et colle-nous le résultat stp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "_POST['txt_date'] = {$_POST['txt_Date']}<br>" ;
    $str_DateOp = date("Y-m-d", strtotime($_POST['txt_Date']));
    echo "str_Date = $str_dateOp<br>";
    $sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
    echo "sql_InsertOpRef = $sql_InsertOpRef<br>" ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  14. #14
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Pour les 2 syntaxes suivantes tu as une date en 0000 car il manque des " autour de la date dans la requête.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  15. #15
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    merci de ton aide, j'vais tester de ce pas !
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

Discussions similaires

  1. [AC-2007] Comparer une date d'une table et une date saisie
    Par minooo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/03/2019, 21h40
  2. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Insertion d'une date dans une table avec vba
    Par skeut dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2006, 08h54

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