|
|
|
|
Bonjour à tous!
Je vous explique ma situation :
je dois récupérer des données excel qui sont au format csv, et les intégrer dans une BDD mysql.
Le problème est que mes employeurs souhaitent que je réalise une interface en php qui proposent un bouton d'importation qui gere automatiquement cette intégration.
en gros : un bouton qui ouvre un explorateur de fichiers, on choisi le csv que l'on veut, on valide et hop le csv est converti directement dans la BDD.
Ceci me paraît assez difficile vu mon niveau en php même si ce stage m'a beaucoup appri. De plus, ce ne sera pas moi qui gèrera l'intégration de ces fichiers CSV dans la BDD. Ce sera un utilisateur quelconque, qui ne devra rien faire d'autre que d'importer le fichier, sans gérer les paramètres de la BDD, d'où cette interface simplifiée que je dois créer...
y a-t-il quelqu'un qui a déjà été confronté à cette situation et/ou qui pourrait me preter main forte?
merci beaucoup!
Configuration: Windows XP Internet Explorer 7.0
Bonjour,
|
Bonjour,
|
Imagine que ton form soit :
<form enctype="multipart/form-data" action="mapage.php" method="POST"> <input name="lefichier" type="file" /><br /> <input type="submit" value="Envoyer le fichier" /> </form> Alors coté PHP (fichier mapage.php dans mon exemple) tu auras le tableau $_FILES renseigné : $_FILES['lefichier']['name'] => le nom d'origine du fichier $_FILES['lefichier']['tmp_name'] => le nom sous lequel il aura ete sauvé sur ton serveur PHP (dépend de la conf PHP) Il faut alors renommer le fichier du nom de la table (myslqimport se sert du nom de ficheir pour savoir la table dans laquelle importer les données) $_fic = "/tmp/nom_de_la_table.txt"; // tu mets evidemment ce que tu veux // puis on deplace le fichier move_uploaded_file($_FILES['monfichier']['tmp_name'], $_fic); // en réalité, il faut tester le résultat true/false, cf doc PHP Il te suffit alors d'appeler mysqlimport : - madb est le nom de la base - host le nom ou l'IP de ton serveur MySQL (localhost si machine locale) - (en remplçant [options] par celles que tu veux : --lines-terminated-by=... , ... (voir doc dans l'url du post précédent) $_cmd = 'mysqlimport -hhost [options] madb '.$_fic; `$_cmd`; Et voila :) Par contre, il est important de noter : - le code ci-dessous ne fait aucune vérification d'intégrité, de taille, ... - Si tu veux mettre cela en production, il FAUT ajouter ces tests pour éviter que des petits malins tentent de faire n'importe quoi en envoyant des virus, ... Bon courage |
C'est bon jai répondu toute seule a ma question
|