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?:ccool:
Version imprimable
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?:ccool:
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'. :roll:Code:INSERT INTO table(datedenaissance) values('11/12/1983')
Tu écris dans le faux sens, c'est AAAA-MM-JJ et non JJ-MM-AAAA. :mrgreen:
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:
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)); ?>
Même avec une fonction avant d'insérer dans la BD??
Une autre piste :
Ensuite tu insères ta date comme une string "'$formatted'"Code:
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: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 par :hola: rawsrc
Voici une qui devrait rouler :
Code:
1
2 // PHP 5+ $formatted = date_format(date_create(date('d/m/Y', strtotime('07/05/2012'))), 'Y-m-d');
ça maaaaaaaaaaaaaaaaarche, merci rawsrc :ccool::ccool: