Salut Eric549,
En réalité, il existe différentes solutions à ton problème. Tout
dépend de la manière dont tu récupères les valeurs de Jour, Mois et
Année à partir ton formulaire. Ici, je t'en propose deux.
Avant tout, saches que le format de dat de mysql est le suivant :
aaaa-mm-dd (année sur 4chiffres et mois, puis jours sur deux
chiffres le tout séparés par des tirets).
METHODE 1 :
Dans ton formulaire, veille à récupérer chacune des trois valeurs
individuellement. Assures-toi que les attributs 'value' des tes
balises html ont bien pour valeur des nombres à 4 chiffres pour
l'année et à 2 chiffres pour les jour et les mois. Ainsi pour février
par exemple, mets value="02" au lieu de value="2".
Dans ton formulaire HTML, tu auras par exemple :
<select name="jour">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
...
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="mois">
<option value="01">Janvier</option>
<option value="02">Février</option>
<option value="03">Mars</option>
...
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select>
<select name="annee">
<option value="1975">1975</option>
<option value="1976">1976</option>
<option value="1977">1977</option>
...
<option value="2008">2008</option>
<option value="2009">2009</option>
</select>
Puis dans ton code PHP : après avoir fait tous tes contrôles, tu
récupère les valeurs ainsi :
$jour = $_POST['jour'];
$mois = $_POST['mois'];
$annee = $_POST['annee'];
Puis tu concatènes le tout au format de date MySQL :
$dateSql = $annee.'-'.$mois.'-'.$jour;
Evidemment, tu aurais pu y aller directement en faisant :
$dateSql = $_POST['annee'].'-'.$_POST['mois'].'-'.$_POST['jour'];
Tu vois que c'est finalement très simple en y allant manuellement.
METHODE 2 :
Dans ton formulaire, tu récupères les trois valeurs en une fois.
Assures-toi de préciser au visiteur le format "jjmmaaa".
Dans ton formulaire HTML, tu auras par exemple :
Date de naissance : <input type="text" name="datenais" size="10"
maxlength="8" value="" /> (Entrez la date au format <strong>jjmmaaaa</
strong>)
Puis dans ton code PHP : après avoir fait tous tes contrôles, tu
récupère les valeurs ainsi :
$datenais = trim($_POST['datenais']); // trim sert à effacer les
espaces avant et après le texte entré).
$annee = substr($datenais, 4);
$mois = substr($datenais, 2, 2);
$jour = substr($datenais, 0, 2);
(Tu peux en savoir plus sur la fonction substr sur :
http://www.php.net/manual/fr/function.substr.php )
Puis tu concatènes le tout au format de date MySQL :
$dateSql = $annee.'-'.$mois.'-'.$jour;
OK Eric, j'espère t'avoir aidé. Si jamais cela résoud ton problème,
n'oublie pas de mentionné que le problème a été résolu. Sinon,
j'attends ta réponse ou alors tes questions. :)
PS: Petit conseil avant de terminer, veille a vérifier la valeur de la
date. En effet, le 30 février 1990 ou le 31 avril 2008 ne sont pas des
dates valides : elles n'existent pas dans le calendrier !
Pour cela utilise la fonction php : checkdate
if (!checkdate($mois, $jour, $annee)) {
//alors la date est invalide
echo 'La date n'est pas valide';
}
else {
//date valide
echo 'La date est valide';
}
Tu en sauras plus sur checkdate ici : http://www.php.net/manual/fr/function.checkdate.php
A bientôt et bon travail !
Raoul
Post by Eric549Bonjour,
j'ai une base de donnes Mysql et un formulaire php
Dans le formulaire , il faut saisir une date au format francais JJ/MM/
AAAA
ou Mysql ne reconnait que le format américain AAA/MM/JJ
Comment transformer cette date au format correct pour MySql
Merci pour vos réponses