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?![]()








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?![]()
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![]()








je travaille sous mysql et je voudrais insérer la date de naissance des visiteurs (formulaire). quand je faiscela m'insère '0000-00-00'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO table(datedenaissance) values('11/12/1983')![]()
Tu écris dans le faux sens, c'est AAAA-MM-JJ et non JJ-MM-AAAA.![]()

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.
















Même avec une fonction avant d'insérer dans la BD??
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));








Une autre piste :
Ensuite tu insères ta date comme une string "'$formatted'"
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'); ?>








j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fatal error: Call to undefined function date_create_from_format()
Ouuupsss! date_create_from_format() n'existe qu'à partir de PHP 5.3. Je corrige de suite.

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 parrawsrc
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');
















ça maaaaaaaaaaaaaaaaarche, merci rawsrc![]()









Partager