Je trouve sur internet des tas de routines me permettant d'afficher une date
en jj/mm/aaaa à partir de aaaa-mm-jj de mysql.
Je désire faire l'inverse !
Je voudrais qu'une date saisie jj/mm/aaaa soit enregistrée par mysql comme
aaaa-mm-jj
A l'aide !
Merci.
L'avantage de la seconde est de faire une vérification sur les données en même temps (retourne false si le format de date n'est pas correct). -- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Jaco wrote:
Je voudrais qu'une date saisie jj/mm/aaaa soit enregistrée par mysql comme
aaaa-mm-jj
L'avantage de la seconde est de faire une vérification sur les données
en même temps (retourne false si le format de date n'est pas correct).
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
L'avantage de la seconde est de faire une vérification sur les données en même temps (retourne false si le format de date n'est pas correct). -- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Guillaume Bouchard
CrazyCat wrote:
$temp = explode("/", $php_date); ou par une regexp (je ne sais pas lequel des deux est le plus optimisé):
J'aurais tandance à ne pas utiliser les preg pour si peu, c'est sortir le bazooka à fragmentation subsonique pour pas grand chose.
$pattern = "/(d{2})/(d{2})/d{4})//"; $sql_date = preg_replace($pattern, "$3-$2-$1", $php_date); L'avantage de la seconde est de faire une vérification sur les données en même temps (retourne false si le format de date n'est pas correct).
Cf la doc.
""" preg_replace() returns an array if the subject parameter is an array, or a string otherwise.
If matches are found, the new subject will be returned, otherwise subject will be returned unchanged. """
À voir si avec checkdate cela ne permetrait pas de verifier l'intégrité encore mieux.
function date_php_sql($date){ list($day,$month,$year) = explode('/',$date); if ( checkdate($month,$day,$year)){ return $year.'-'.$month.'-'.$day; } else { die('Invalid date format'); }
Notont au passage le magnifique ordre des arguments de checkdate.
-- Guillaume.
CrazyCat wrote:
$temp = explode("/", $php_date);
ou par une regexp (je ne sais pas lequel des deux est le plus optimisé):
J'aurais tandance à ne pas utiliser les preg pour si peu, c'est sortir
le bazooka à fragmentation subsonique pour pas grand chose.
$pattern = "/(d{2})/(d{2})/d{4})//";
$sql_date = preg_replace($pattern, "$3-$2-$1", $php_date);
L'avantage de la seconde est de faire une vérification sur les données
en même temps (retourne false si le format de date n'est pas correct).
Cf la doc.
""" preg_replace() returns an array if the subject parameter is an
array, or a string otherwise.
If matches are found, the new subject will be returned, otherwise
subject will be returned unchanged. """
À voir si avec checkdate cela ne permetrait pas de verifier l'intégrité
encore mieux.
function date_php_sql($date){
list($day,$month,$year) = explode('/',$date);
if ( checkdate($month,$day,$year)){
return $year.'-'.$month.'-'.$day;
} else {
die('Invalid date format');
}
Notont au passage le magnifique ordre des arguments de checkdate.
$temp = explode("/", $php_date); ou par une regexp (je ne sais pas lequel des deux est le plus optimisé):
J'aurais tandance à ne pas utiliser les preg pour si peu, c'est sortir le bazooka à fragmentation subsonique pour pas grand chose.
$pattern = "/(d{2})/(d{2})/d{4})//"; $sql_date = preg_replace($pattern, "$3-$2-$1", $php_date); L'avantage de la seconde est de faire une vérification sur les données en même temps (retourne false si le format de date n'est pas correct).
Cf la doc.
""" preg_replace() returns an array if the subject parameter is an array, or a string otherwise.
If matches are found, the new subject will be returned, otherwise subject will be returned unchanged. """
À voir si avec checkdate cela ne permetrait pas de verifier l'intégrité encore mieux.
function date_php_sql($date){ list($day,$month,$year) = explode('/',$date); if ( checkdate($month,$day,$year)){ return $year.'-'.$month.'-'.$day; } else { die('Invalid date format'); }
Notont au passage le magnifique ordre des arguments de checkdate.
-- Guillaume.
Frederic Rouchouze
"Jaco" a écrit dans le message de news: d7hjr8$fg9$
Je voudrais qu'une date saisie jj/mm/aaaa soit enregistrée par mysql comme aaaa-mm-jj
Le plus propre (à mon avis) : transformer ta date "jj/mm/aaaa" en timestamp UNIX.
$annee=substr($date_mysql, 0, 4); $mois=substr($date_mysql, 5, 2); $jour=substr($date_mysql, 8, 2); // Ou bien avec des expressions régulières si tu préfères
$timestamp=mktime(0, 0, 0, $mois, $jour, $annee);
Ensuite, tu peux très facilement manipuler le timestamp avec les fonctions appropriées et, en particulier, générer une date "aaaa-mm-jj" :
$dateÚte('d/m/Y', $timestamp);
Si ça t'intéresse, j'ai toute une batterie de fonctions (pas encore une classe propre) pour faire tout ça. -- Frédéric Rouchouze mailto:
"Jaco" <ride2kill@yahoo.fr> a écrit dans le message de news:
d7hjr8$fg9$1@s1.news.oleane.net...
Je voudrais qu'une date saisie jj/mm/aaaa soit enregistrée par mysql comme
aaaa-mm-jj
Le plus propre (à mon avis) : transformer ta date "jj/mm/aaaa" en timestamp
UNIX.
$annee=substr($date_mysql, 0, 4);
$mois=substr($date_mysql, 5, 2);
$jour=substr($date_mysql, 8, 2); // Ou bien avec des expressions
régulières si tu préfères
$timestamp=mktime(0, 0, 0, $mois, $jour, $annee);
Ensuite, tu peux très facilement manipuler le timestamp avec les fonctions
appropriées et, en particulier, générer une date "aaaa-mm-jj" :
$dateÚte('d/m/Y', $timestamp);
Si ça t'intéresse, j'ai toute une batterie de fonctions (pas encore une
classe propre) pour faire tout ça.
--
Frédéric Rouchouze
mailto:fredchou@nospam.free.fr
"Jaco" a écrit dans le message de news: d7hjr8$fg9$
Je voudrais qu'une date saisie jj/mm/aaaa soit enregistrée par mysql comme aaaa-mm-jj
Le plus propre (à mon avis) : transformer ta date "jj/mm/aaaa" en timestamp UNIX.
$annee=substr($date_mysql, 0, 4); $mois=substr($date_mysql, 5, 2); $jour=substr($date_mysql, 8, 2); // Ou bien avec des expressions régulières si tu préfères
$timestamp=mktime(0, 0, 0, $mois, $jour, $annee);
Ensuite, tu peux très facilement manipuler le timestamp avec les fonctions appropriées et, en particulier, générer une date "aaaa-mm-jj" :
$dateÚte('d/m/Y', $timestamp);
Si ça t'intéresse, j'ai toute une batterie de fonctions (pas encore une classe propre) pour faire tout ça. -- Frédéric Rouchouze mailto: