Convertir date Fr en anglais avant enregistrement mysql [Résolu]

Signaler
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
-
Messages postés
3
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2013
-
Bonjour,

Tout est dit dans le titre ou presque.
Je me sers d'un code javascript pour faire apparaitre un petit calendrier qui, une fois la date choisit, me l'insert dans un champ text au format jj/mm/aaaa.

J'aimerais qu'au moment de l'insertion dans ma table mysql, la date se convertisse au format aaaa/mm/jj. ainsi mysql me l'affichera dans ma table. Ma table est contistué d'un champ DATE.

Merci

12 réponses

Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Il ne fallait pas mettre des "-" mais plutôt des "/" dans la requête. Je me congratule donc tous seul. a+
Ce qui nous donne :

if (isset($_POST['enregistrer']))
{
$id = $_POST['id'];
$nom = $_POST['liste1'];
$dateDebut = $_POST['dateDebut'];
$dateFin = $_POST['dateFin'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];

$req = mysql_query("INSERT INTO absence (id, nom, nature, nbjour, debut, fin) VALUES ('','$nom','$nature','$nbjour',STR_TO_DATE('$dateDebut', '%d/%m/%Y'),STR_TO_DATE('$dateFin', '%d/%m/%Y') )");

 }
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
13
Bonjour,

Tu n'as pas dû trop forcer sur la recherche :
$dateDebut = implode('-', array_reverse(explode('/', $dateDebut)));
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Je vous joins quand même le bout code correspondant :

if (isset($_POST['enregistrer']))
{
$id = $_POST['id'];
$nom = $_POST['liste1'];
$dateDebut = $_POST['dateDebut'];
$dateFin = $_POST['dateFin'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];

 $req = mysql_query("INSERT INTO absence (id, nom, nature, nbjour, debut, fin) VALUES ('','$nom','$nature','$nbjour','$dateDebut','$dateFin')");
 }
//echo "<script>alert('Enregistrement effectué !')</script>"; 

?>
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
Salut,

ton titre est incorrect, le résultat n'est pas une date anglaise.
Bref, pour enregistrer une date dans n'importe quelle base de données, c'est
aaaa-mm-dd hh:mm:ss, pas de "/".

Il y a plein d'exemple sur les date partout sur le Net, y compris dans le doc de la fonction date. Perso, je trouve que ce site est très bien fait : http://fr.php.net (doc + exemple).
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
13
ce format : aaaa/mm/dd hh:mm:ss est accepté par mysql.
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
Je suis d'accord avec toi, beaucoup de format de date sont reconnu par les SGDB.

Perso, j'ai la commande NOW() dans nom champ date de type timestamp et le format affiché par le requête est celui que je t'ai donné.

Tu as peut-être un format spéficique à respecter, sinon essaie d'utiliser la forme canonique ODBC (celle que je t'ai donnée)
Tu remarqueras que l'exemple donné par [auteur/JECA/12494.aspx jeca]met sous cette forme.
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Merci pour vos réponses.
Mes recherches n'ont données que des résultats portant sur la conversion du format sql vers format fr. Désolé d'avoir abusé de vos services :)

Concernant la solution de jeca :  $dateDebut = implode('-', array_reverse(explode('/', $dateDebut)));

Etant grand débutant je n'ai pas su faire marcher ta solus.

voici l'état de mon code :

if (isset($_POST['enregistrer']))
{
$id = $_POST['id'];
$nom = $_POST['liste1'];

$dateFr = $_POST['dateDebut'];
$dateDebut = implode('-', array_reverse(explode('/', $dateFr)));

$dateFin = $_POST['dateFin'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];

$req = mysql_query("INSERT INTO absence (id, nom, nature, nbjour, debut, fin) VALUES ('','$nom','$nature','$nbjour','$dateDebut','$dateFin')");
 }
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Je n'ai peut-être pas été assez précis ?! Plus personne pour aider un débutant ??

Bonne soirée
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Le problème vient peut-être du fait que mes champs text pour les dates de début et fin sont alimentés par du javascript :

<TD></TD>
<td>

</td>
<TH>Au</TH>
<TD></TD>
<td>

</td>
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

En me parlant à moi même je vais finir par comprendre :)

Qui aurais quelques secondes pour m'aider à comprendre comment bien utiliser la commande sql DATE_FORMAT ?
J'ai écris une requéte qui ne veut pas prendre la variable récupèrant la date en fr., par contre, ça fonctionne si je tape une date jj/mm/aaaa en dur.

if (isset($_POST['enregistrer']))
{
$id = $_POST['id'];
$nom = $_POST['liste1'];

$dateDebut = $_POST['dateDebut'];

$dateFin = $_POST['dateFin'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];

$req = mysql_query("INSERT INTO absence (id, debut) VALUES ('', STR_TO_DATE('$dateDebut','%d-%m-%Y'))");

 }

En espérant ne pas me répondre à moi même. :) Merci à la communauté.
Messages postés
95
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
8 juin 2009
1
Je te congratule aussi, je cherchais de l'aide en vain, jusqu'à ce que je trouve ton post !
Messages postés
3
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2013

Bonjour, j'avais aussi le même problème.. merci pour vos réponses.

book'son..