bruno3591
Messages postés155Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention28 mars 2010
-
28 oct. 2008 à 11:36
bruno3591
Messages postés155Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention28 mars 2010
-
29 oct. 2008 à 16:09
Bonjour,
Je suis débutant en php. Pouvez-vous me dire si la solution que j'ai trouvé pour convertir ma chaine en date est bonne, trop longue ou autre... ? A l'exécution ça fonctionne chez moi. Merci.
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 28 oct. 2008 à 11:53
Bonjour, tout depend dans quel format est la date de depart, et dans quel format tu veux la transformer.
Dans une BD, le format DATE est de la forme AAAA-MM-JJ ...
Apparemment, ta chaine de depart est toujours de la forme 'JJMMAAAA' ?
Et tu veux qu'elle soit en JJ/MM/AAAA ?
Dans ce cas, a priori, c'est bon.
bruno3591
Messages postés155Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention28 mars 2010 28 oct. 2008 à 12:52
Apparemment, ta chaine de depart est toujours de la forme 'JJMMAAAA' ?
Et tu veux qu'elle soit en JJ/MM/AAAA ?
Oui je pars d'une date type 23102008, donc à l'exécution du script je passe bien en 23/10/2008 pour ensuite passer par un STR_TO_DATE dans une requête d'insertion.
Historique :
Au départ je voulais comparer 2 dates. Problème, mes dates sont saisies en chaine de la forme 23/10/2008.
Pour les comparer je devais enlever les "/", pour cela j'utilise : echo implode('', (explode('/', $date1)));
Je compare mes 2 chaines jjmmaaaa > jjmmaaaa
Je convertis de nouveau en jj/mm/aaaa et j'insert dans un champ date de ma table, avec str_to_date qui me convertit la date au format aaaa/mm/jj avant d'insérer.
Est-il plus courant d'utiliser explode à la place de substr ?
Je ne sais pas si je me complique la vie, mais pour le moment j'ai pas trouvé plus court.
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 28 oct. 2008 à 15:35
Si c'est uniquement pour inserer dans la base de donnees au format DATE,
il est plus simple de transformer ta chaine JJMMAAAA directement au format DATE de la BD, c-a-d AAAA-MM-JJ (verifie dans la BD !)
<?php
$date = $_POST['chaine'];
// decomposition de la date recue (jjmmaaaa)
$jj = substr($date, 0, 2);
$mm = substr($date, 2, 2);
$aaaa = substr($date, 4, 7);
// date au format DATE (aaaa-mm-jj)
$dateBD = $aaaa.'-'.$mm.'-'.$jj;
echo $dateBD;
// et on l enregistre tel quel dans la BD
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
bruno3591
Messages postés155Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention28 mars 2010 29 oct. 2008 à 16:09
Suite à cette comparaison, j'ai mis en place mon script définitif, le problème c'est que maintenant la date ne s'enregistre plus dans ma base, je n'ai que des 0000-00-00.
//Conversion de la chaine de caractères jj/mm/aaaa en jjmmaaaa :
$date_test1 = implode('', (explode('/', $date1)));
$date_test2 = implode('', (explode('/', $date2)));
//On compare les dates
if ($date_test1 >= $date_test2) {
//Si la condition est vérifiée on convertit au format jj/mm/aaaa
$jour = substr($date_test1, 0, 2);
$mois = substr($date_test1, 2, 2);
$annee = substr($date_test1, 4, 7);