Fichier.Txt -> Table MySQL

Spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 10:29

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juin 2007, 10:31

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 10:33

Bonjour ,

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

Merci :wink:

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 12:04

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...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juin 2007, 12:17

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 12:24

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!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juin 2007, 12:30

1er résultat en tapant "PHP parcourir un répertoire" sous :google:
:arrow: http://www.ac-creteil.fr/util/programma ... toires.php
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 14:06

merci bien :)
Je regarde çà de suite !!

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 14:12

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juin 2007, 14:20

J'aurais envie de te répondre d'essayer ;)

Normalement, tu peux utiliser des chemins absolu ou relatif pour le nom du fichier ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 14:24

Merci bien Zeus (de la team Fz ?) !!

j'essai de suite :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juin 2007, 14:38

(de la team Fz ?) !!
Je ne sais de quel jeu tu parles mais si tu parles de TMN, non, de la team MGP ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

spoof
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 14:58

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 çà ???

Mammouth du PHP | 693 Messages

26 juin 2007, 15:32

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
Invité n'ayant pas de compte PHPfrance

26 juin 2007, 16:41

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: