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 :

inserer une date dans la BD [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut inserer une date dans la BD
    salut à tous,

    j'essaye d'insérer une simple date dans une colonne (DATE) mais le resultat est 0000-00-00.

    Je voudrais l'insérer comme : '11/12/1980' mais j'y arrive pas.

    Une idée svp?

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    Tu utilises quelle BD ?

    Sous mysql tu peux le faire de plusieurs façon, si tu veux insérer la date actuelle tu peux créer un champ timestamp avec la valeur à la création current_timestamp.

    Si tu veux quelle soit mise à jour à chaque changement d'une colonne il te faut mettre l'attribut on_update_current_timestamp.

    Tu peux aussi utiliser le mot clé now() dans ta requête sql pour setter la date actuelle.

    Maintenant si tu veux faire autre chose il me faut plus de détail

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    je travaille sous mysql et je voudrais insérer la date de naissance des visiteurs (formulaire). quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table(datedenaissance) values('11/12/1983')
    cela m'insère '0000-00-00'.

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    Tu écris dans le faux sens, c'est AAAA-MM-JJ et non JJ-MM-AAAA.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AbouZaid Voir le message
    Je voudrais l'insérer comme : '11/12/1980'
    Dans ce cas, il ne faut pas mettre un champ de type DATE, mais de type VARCHAR.
    Par contre, tu vas perdre les "fonctions de date" possibles sur un champ type DATE...

    Le type DATE est au format anglais : AAAA-MM-JJ (ou YYYY-MM-DD)
    Question subsidiaire ? Comment changer '11/12/1980' en '1980-12-11' ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // récupération au format JJ/MM/AAAA (français)
    $dateFR = '11/12/1980';
     
    // enregistrement en Bdd sous la forme AAAA-MM-JJ (anglais)
    $dateBD = implode( '-', array_reverse( explode('/', $dateFR) ) );
     
    // ré-affichage sur la page au format JJ/MM/AAAA (français)
    $dateAff = date('d/m/Y', strtotime($dateBD));
    ?>
    Dernière modification par Invité ; 07/05/2012 à 16h38.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    Citation Envoyé par manticore Voir le message
    Tu écris dans le faux sens, c'est AAAA-MM-JJ et non JJ-MM-AAAA.
    Je sais, mais je voudrais que dans le formulaire on insère au format normal ( DD/MM/YYYY)...

    Donc il faut que je fasse un changement de date?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Dans ce cas, il ne faut pas mettre un champ de type DATE, mais de type VARCHAR.

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    Même avec une fonction avant d'insérer dans la BD??

  10. #10
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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
    Par défaut
    Tu connais date, mktime et strtotime ?

    Bref, c'est pas dur de changer le format d'une date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    list($jour,$mois,$annee) = array_map('trim', explode('/', '07/05/2012'));
    echo date('Y-m-d', mktime(0,0,0,$mois,$jour,$annee));

  11. #11
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Tu connais date, mktime et strtotime ?

    Bref, c'est pas dur de changer le format d'une date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    list($jour,$mois,$annee) = array_map('trim', explode('/', '07/05/2012'));
    echo date('Y-m-d', mktime(0,0,0,$mois,$jour,$annee));
    Heuu, je voudrais simplement changer le type (DD-MM-YYYY) en (YYYY-MM-DD) pour qu'il puisse s'intégrer dans la BD...

  12. #12
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Une autre piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    // PHP 5.3+
    $formatted = DateTime::createFromFormat('d/m/Y', '07/05/2012')->format('Y-m-d');
     
    // PHP 5.3+
    $formatted = date_format(date_create_from_format('d/m/Y', '07/05/2012'), 'Y-m-d');
     
    ?>
    Ensuite tu insères ta date comme une string "'$formatted'"

  13. #13
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function date_create_from_format()

  14. #14
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ouuupsss! date_create_from_format() n'existe qu'à partir de PHP 5.3. Je corrige de suite.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Pourtant ma solution est simple, et a l'avantage de ne pas dépendre de la version de PHP...

    Bien que désormais, j'utiliserai la 1ère solution donnée par rawsrc

  16. #16
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Voici une qui devrait rouler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // PHP 5+
    $formatted = date_format(date_create(date('d/m/Y', strtotime('07/05/2012'))), 'Y-m-d');

  17. #17
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Pourtant ma solution est simple, et a l'avantage de ne pas dépendre de la version de PHP...

    Bien que désormais, j'utiliserai la 1ère solution donnée par rawsrc
    mais le problème c'est le format...

  18. #18
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    ça maaaaaaaaaaaaaaaaarche, merci rawsrc

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AbouZaid Voir le message
    mais le problème c'est le format...
    Je ne comprends plus RIEN à ce que tu veux !

    Merci d'expliquer (encore une fois) clairement ce que tu cherches à faire.
    Car je pense qu'on t'a déjà donné au moins 3 ou 4 façons de faire, et qui fonctionnent...

  20. #20
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Je ne comprends plus RIEN à ce que tu veux !

    Merci d'expliquer (encore une fois) clairement ce que tu cherches à faire.
    Car je pense qu'on t'a déjà donné au moins 3 ou 4 façons de faire, et qui fonctionnent...
    désolé, je me suis mal exprimé.

    Ta solution vise a utiliser le type 'VARCHAR' mais je voudrais que le type (et non pas le format ) reste 'DATE'...

    Merci de ton aide.

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

Discussions similaires

  1. Inserer une date dans une table via vba
    Par marcelstan dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2014, 11h12
  2. [MySQL] Inserer une date dans une base
    Par Th300 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/11/2011, 18h17
  3. [MySQL] inserer une date dans la base par php
    Par gholaff dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 11/06/2011, 12h38
  4. Réponses: 13
    Dernier message: 27/12/2006, 17h52
  5. insere une date dans un formulaire
    Par lepeintre dans le forum ASP
    Réponses: 5
    Dernier message: 13/05/2005, 10h46

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