Page 1 sur 1

Convetir une date pour un format SQL

Posté : 12 juil. 2015, 10:57
par yoann38
Salut à tous j'arrive à la fin de mon ptit code.
Et j'ai une question pour vous... Comment convertir la date que je récupère.

La date que je récupère est sous la forme : Dimanche 12 Juillet 2015.
Et je souhaite un format SQL (exemple : 2015-12-04 00:00:00 ) pour pouvoir intégrer le tout en bdd.

Mon code
// Date
$date = @eregi('<tr style="font-weight: bold; background: #FFFFFF; font-size: 12px;">
  <td style="color: #a2141e; width: 150px; padding-left: 5px;">Date : </td>
  <td>(.*)</td>
 </tr>
 <tr style="font-weight: bold; background:  #E8E8E8; font-size: 12px;">
  <td style="color: #a2141e; width: 150px; padding-left: 5px;">Lieu : </td>',$page,$event);
echo "$event[1] <BR>" ;
Et ce que il faut faire un array pour convertir la date si oui comment:
$jour = array('1'=>'Lundi', '2'=>'Mardi', '3'=>'Mercredi', '4'=>'Jeudi', '5'=>'Vendredi', '6'=>'Samedi', '7'=>'Dimanche');
	$mois = array('1'=>'Janvier', '2'=>'Février', '3'=>'Mars', '4'=>'Avril', '5'=>'Mai', '6'=>'Juin', '7'=>'Juillet', '8'=>'Août', '9'=>'Septembre', '10'=>'Octobre', '11'=>'Novembre', '12'=>'Décembre');
Mais après comment procéder ...
Merci à vous

Ps: Je sais que @eregi est obsolète mais on ma demandé de faire ça avec... dsl

Re: Convetir une date pour un format SQL

Posté : 12 juil. 2015, 11:21
par @rthur
Hello,

Il se trouve que j'ai eu la même problématique récemment.
Pour la résoudre, je traduit de façon rapide les noms des jours et des mois en anglais et ensuite j'utilise la fonction magique strtotime() qui permet de convertir un texte de date en anglais en timestamp exploitable comme on veut avec la fonction date()
http://fr.php.net/strtotime

Voici ce que j'ai fait :
<?php
$texte_original="Dimanche 12 Juillet 2015";
$jourmois_fr = array('janvier', 'fevrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre', 'decembre', 'lundi ', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
$jourmois_en = array('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
$timestamp=strtotime(str_replace($jourmois_fr, $jourmois_en, strtolower(suppr_accents($texte_original))));

print date("Y-m-d", $timestamp);




/****** FONCTIONS ******/
function suppr_accents($string) {
  return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
}

Re: Convetir une date pour un format SQL

Posté : 12 juil. 2015, 11:34
par yoann38
Bonjour à toi, ca l'air de marcher sauf la fonction pour supprimer les accents je ne vois pas pourquoi ....
Si je supprime la fonction de ton code tt marche je récupere bien ma date genre :
2015-07-12

Mais si je remet ton code tel quel :
// Date
$date = @eregi('<tr style="font-weight: bold; background: #FFFFFF; font-size: 12px;">
  <td style="color: #a2141e; width: 150px; padding-left: 5px;">Date : </td>
  <td>(.*)</td>
 </tr>
 <tr style="font-weight: bold; background:  #E8E8E8; font-size: 12px;">
  <td style="color: #a2141e; width: 150px; padding-left: 5px;">Lieu : </td>',$page,$event);
echo "$event[1] <BR>" ;




$texte_original="$event[1]";
$jourmois_fr = array('janvier', 'fevrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre', 'decembre', 'lundi ', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
$jourmois_en = array('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
$timestamp=strtotime(str_replace($jourmois_fr, $jourmois_en, strtolower(suppr_accents($texte_original))));

print date("Y-m-d", $timestamp);




/****** FONCTIONS ******/
function suppr_accents($string) {
  return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
}
Je me retrouve avec :
Fatal error: Call to undefined function suppr_accents() in C:\wamp\www\lasortie\admin\importerJSON.php on line 79
Call Stack

Re: Convetir une date pour un format SQL

Posté : 14 juil. 2015, 00:17
par yoann38
La fonction pour supprimer les accents ne marche pas ....
// Traitement de la date ( conversion de type texte en format sql )
$texte_original="$event[1]";
$jourmois_fr = array('janvier', 'fevrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre', 'decembre', 'lundi ', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
$jourmois_en = array('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
$timestamp=strtotime(str_replace($jourmois_fr, $jourmois_en, strtolower(suppr_accents($texte_original))));

$date_debut = date("Y-m-d", $timestamp);
echo $date_debut .'<br>';

/****** FONCTIONS ******/
function suppr_accents($string) {
  return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
}
Ou est le problème svp ?

Re: Convetir une date pour un format SQL

Posté : 14 juil. 2015, 00:49
par @rthur
Ça fonctionne correctement chez moi.
Prend mon code à l'identique et met le dans un nouveau script PHP pour voir si ça fonctionne chez toi.

Re: Convetir une date pour un format SQL

Posté : 14 juil. 2015, 11:16
par yoann38
Oui effectivement ça marche j'avais mal orthographié une variable voilà tout,
Merci encore pour la petite fonction ;)