Page 1 sur 3

Fichier.Txt -> Table MySQL

Posté : 26 juin 2007, 10:29
par Spoof
Bonjour tout le monde !

j'ai un petit problème à vous exposer !!!

Je récupére 5 fichiers dans un répertoire et je doit copier le contenu dans une base Mysql:
-Trois de mais fichier comporte des informations séparé par des ";" (exemple: Nom;prenom;etc...)
-Pour les deux autres, les informations sont séparé par des Espace (espace varié... ).

Je voudrais coder un script en PHP permettant de faire cette manipulation (Au moin pour les trois premiers fichiers avec ";").
1/ recup fichier
2/ integration contenu dans Mysql (Une Table par fichier)
3/ suppression du fichier dans le répertoire

Pourriez m'aider un peu .. ou du moin me donner une astuce (fonction php déjà faite, etc...)

Cordialement,

Spoof

Posté : 26 juin 2007, 10:31
par zeus
En ce qui concerne les 3 1er fichiers, je te conseille l'instruction SQL LOAD DATA INFILE.

Nous avons un tuto dans la FAQ pour expliquer les bases

spoof

Posté : 26 juin 2007, 10:33
par spoof
Bonjour ,

Je te remerci pour la rapidité de réponce.
je regarde çà de suite.

Merci :wink:

spoof

Posté : 26 juin 2007, 12:04
par spoof
re !!

J'ai bien compris le principe de cette fonction , elle me semble parfaite :lol:

J'aurais une autre question pour la mise en place!
Pour éviter de faire un script pour chaque fichier.txt, comment je peux faire pour indiquer à la place du fichier, une "Variable".
LOAD DATA INFILE ‘$Variable’

Voilà mon shéma:
Repertoire contenant plusieurs fichier ----->> Fichier script1 ------>> MySQL
Repertoire contenant plusieurs fichier ----->> Fichier script2 ------>> MySQL
Repertoire contenant plusieurs fichier ----->> Fichier script3 ------>> MySQL
etc...

comment puis je proceder pour la mise en place ???
Repertoire contenant plusieurs fichier--> (Formulaire ?!?) ----->> Fichier script ------>> MySQL
ou
Repertoire contenant plusieurs fichier ----->> Fichier script(£Variable) ------>> MySQL

Enfin voià, j'suis un peu perdu...

Posté : 26 juin 2007, 12:17
par zeus
Si tu as 3 fichiers, je pense qu'il faut que tu appelles 3 fois LOAD DATA INFILE :-k

Si tu comptes l'utiliser dans un script PHP, tu fait une boucle qui parcours ton répertoire et qui place chaque fichier dans la requête SQL

spoof

Posté : 26 juin 2007, 12:24
par spoof
Comment puis je faire une boucle qui parcours mon répertoire et qui place chaque fichier dans la requête SQL ???

aurais tu un exemple stp!

Posté : 26 juin 2007, 12:30
par zeus
1er résultat en tapant "PHP parcourir un répertoire" sous :google:
:arrow: http://www.ac-creteil.fr/util/programma ... toires.php

spoof

Posté : 26 juin 2007, 14:06
par spoof
merci bien :)
Je regarde çà de suite !!

spoof

Posté : 26 juin 2007, 14:12
par spoof
Faut t'il que mon script php se trouve dans le même répertoire que mes fichier txt pour que la fonction SQL LOAD DATA INFILE fonctionne ?

Ou! est il possible de lui indiquer un chemin ?

Posté : 26 juin 2007, 14:20
par zeus
J'aurais envie de te répondre d'essayer ;)

Normalement, tu peux utiliser des chemins absolu ou relatif pour le nom du fichier ;)

spoof

Posté : 26 juin 2007, 14:24
par spoof
Merci bien Zeus (de la team Fz ?) !!

j'essai de suite :)

Re: spoof

Posté : 26 juin 2007, 14:38
par zeus
(de la team Fz ?) !!
Je ne sais de quel jeu tu parles mais si tu parles de TMN, non, de la team MGP ;)

spoof

Posté : 26 juin 2007, 14:58
par spoof
Fz = Futurezone :wink:

Je n'arrive pas à mettre en place cette fonction:

je me trompe ou stp ?

dans le meme repertoire j'ai mon fichier "test.txt" et mon fichier "index.php":

J'inscrit le code suivant dans index.php:
<?
LOAD DATA INFILE ‘fichier.txt’ 	
INTO TABLE 'test'	// <-- J'ai créé de Base "Base_test" mais pas la table "test". Cette fonction crée et renseigne automatiquement la table non ??, mais comment il se connect à la base ????
FIELDS 
TERMINATED BY ';' 	// <-- mes champs sont bien séparé par ";"[/color]
ENCLOSED BY ‘”’ 	
ESCAPED BY '\\' 	
LINES 								
STARTING BY '' 						
TERMINATED BY '\n' 							
?>
Mon Index.php est il bon comme çà ???

Posté : 26 juin 2007, 15:32
par orgerix
IL faut que tu utilises les fonctions PHP associés à ta base de donnée pour te connecté et transmettre la requete.

Et non, il faut que tu crée aussi ta table.

spoof

Posté : 26 juin 2007, 16:41
par spoof
me revoilà :)

j'ai un peu avancé mais bon c'est pas encore çà :?
Voici mon code:
<?
/*declaration variables*/
$user:  ???;           // <--- Quel est le login /pwd par defaut de easyPHP
$passwd:  ???;
$host:localhost; 
$bdd:test;
		
if (isset($_POST['fichier1.txt']) or isset($_POST['fichier2.txt'])) // Si un fichiers texte existent  // <----Ici, je recupere via un formulaire mes fichiers (Est ce possible déjà ?
{
// D'abord, on se connecte à MySQL
mysql_connect("$host", "$user", "$passwd") or die("erreur de connexion serveur");
mysql_select_db("$bdd") or die("erreur de connexion Bdd");
        
// Lance ma fonction LOAD DATA INFILE  
load data infile 'fichier.txt';       // <----çà me semble un peu simple là non ?
		
// On se déconnecte de MySQL
mysql_close();
}
else 
{
echo "pas de fichier présent";
}
	
?>
J'avance mais bon dure dure :shock: