Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2007, 09h32   #1
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
Par défaut [SQL] Transfert de données, problème de date

J'ai une ancienne base sous access avec différentes données, je veux transférer ces données sous MY SQL

Donc j'exporte ma table dans un fichier texte, je l'importe sous MY SQL et tout va bien sauf les champs date qui affichent :
0000-00-00 00:00:00


Comment faire pour que les dates s'affichent correctement ?
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h14   #2
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 21
Points : 13
Points : 13
A mon avis ceci est du au fait que mysql nécessite un format de date US. Il faudrait donc que tu exécute un traitement (perl?) pour faire la transformation:
JJ-MM-AAAA --> AAAA-MM--JJ
nicocaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h15   #3
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
Et je fais ca comment ?
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h28   #4
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 21
Points : 13
Points : 13
ça dépend de ton fichier texte je ne peux pas te dire exectement comment faire cependant cette fonction peut faire le traitement si tu rentre une date en parametre.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#fonction qui permet de convertir les dates au format US pour les exploiter dans mysql	 01/05/2007 --> 2007/05/01
 
	sub convertir_Date
	{
		$DATE=$_[0];
		if($DATE =~ /(\d*)\/(\d*)\/(\d*)/)
		{
		            my $day = $1;
                                      my $month = $2;  
                                      my $year = $3;  
 
			$DATE=$year.'/'.$month.'/'.$day;
 
			return $DATE;
		}
	}
nicocaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h36   #5
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
Mon fichier texte c'est un fichier du bloc note.

Une ligne ressemble à ça :

*****;***;**;**;"**";"*******";"******";29/4/1982 00:00:00;"*****************************";"*****";"********";"*************";"*************";;"**************";;;*;;;;

sans les étoiles


Et je veux que les données dans ma base MY SQL soit en jj/mm/aaaa même quand on les inserera par requête
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h42   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je ne pense pas que tu puisses changer le format des dates de mysql puisque c'est un type par défaut de mysql.
La solution la plus simple serait de stocker tes dates comme des VARCHAR plutot que comme des dates justement, ca dépend donc des opérations que tu fais sur ces champs.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h47   #7
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
Je ne sais pas quelle va être l'utilisation de ces champs. Je suis en stage et on me demande de prendre la suite du développement un base en pHp
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h49   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Dans ce cas, il vaut mieux garder la notion de Date et non pas les stocker en texte. Et donc il va falloir convertir les dates extraites d'access vers le format de date de Mysql
ensuite toutes les dates seront stockées au format de mysql aaaa-mm-jj hh:mm:ss

Par contre, a l'affichage des résultats, rien ne t'empeche en php de changer le format donc ca ne changera rien pour l'utilisateur de l'application, c'est a toi de gérer les scripts php pour inscrire les dates dans un format différent
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h52   #9
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
Oui, je sais je suis pas très forte. Mais, je la fais comment la conversion ?
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h58   #10
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 21
Points : 13
Points : 13
en php tu peux utiliser ça:

Code :
1
2
3
4
5
6
7
  <?php 
 
  $date = "30-11-2005"; 
  $date_convertie = eregi_replace("([0-9].*)-([0-9].*)-([0-9].*)" ,"\\3-\\2-\\1" , $date); 
  echo $date_convertie; 
 
  ?>
Après il faut que tu essais d'exécuter un traitement php qui récupère tes dates dans le champs $date.
nicocaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h59   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Il va falloir utiliser des expressions régulieres je pense, donc faire un script php qui lit ton fichier, et convertit les dates. Une fois que t'as le nouveau fichier texte tu peux l'importer dans mysql.
Par contre les expressions régulières ca n'est pas mon fort, désolé! T'as un exemple de fonction qui ferait ca plus haut, c'est tout ce que je peux te dire...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 14h09   #12
Débutant
 
Technicien maintenance
Inscription : mai 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : mai 2007
Messages : 123
Points : 15
Points : 15
Envoyer un message via MSN à Lydie12
C'est quoi les expressions régulières ?
Lydie12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 14h16   #13
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
http://php.developpez.com/cours/#langage-regexes

En gros y a plusieurs étapes a faire pour transformer ton fichier
1/ tu lis le fichier avec file_get_contents()
2/ tu découpes ce fichier en un tableau de lignes (pour récupérer chaque ligne) avec les expressions régulières ou juste la fonction php explode()
3/ Pour chaque ligne, tu vas appliquer une sorte de masque (un pattern) qui va permettre de reconnaître la partie à modifier. Pour toi ca revient a dire, "j'ai un ensemble de champs séparés par des virgules, je dois changer ceux qui correspondent a des dates)
4/ Une fois toutes ces lignes modifiées par ton/tes expression(s) régulière(s) tu écris le résultat dans un nouveau fichier avec file_put_contents()
5/ tu importes le nouveau fichier dans mysql.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h09.


 
 
 
 
Partenaires

Hébergement Web