[RESOLU] Convetir une date pour un format SQL

Mammouth du PHP | 643 Messages

12 juil. 2015, 10:57

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 juil. 2015, 11:21

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);
}
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

12 juil. 2015, 11:34

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

Mammouth du PHP | 643 Messages

14 juil. 2015, 00:17

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 juil. 2015, 00:49

Ç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.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

14 juil. 2015, 11:16

Oui effectivement ça marche j'avais mal orthographié une variable voilà tout,
Merci encore pour la petite fonction ;)