Page 1 sur 1

traitement CSV via PHP vers MySQL

Posté : 25 févr. 2012, 19:49
par Letoine
Bonjour à la communauté PHP France,

Je suis en train de monter une petite application PHP/MySql de gestion de mes PC (marque, modèle, numéro de série... etc etc).
J'ai un logiciel qui me récupère les infos des postes lors de leur audit vers, au choix, un fichier txt, xls ou mdb.

Au début, n'ayant pas encore touché à PHP/MySql, je faisais un mdb comme ça je pouvais faire deux ou trois requêtes dans access.
Maintenant que j'ai mes jolis tableaux php, j'exporte vers un fichier txt (mais considérons le comme un csv car mes champs sont entourés de doubles quotes et séparés par des virgules).

Je souhaiterai importer mon fichier txt vers ma base MySql via PHP mais en sachant :
1 - Je n'ai pas trouvé comment indiquer à mon script que les enregistrements de la première ligne de mon fichier txt sont les noms des champs (qui sont identiques dans ma base de données).
---> J'aimerai me servir de cette première ligne pour vérifier que le fichier est bien cohérent avec ce qu'on attend de lui : le fichier possède-t-il bien les champs dans sa première ligne...
2 - Sachant que je peux auditer plusieurs fois une même machine, il me faudrait mettre à jour l'enregistrement existant plutôt que de me retrouvé avec des doublons.
---> A cet égard, j'ai un champ immuable : l'adresse MAC de la machine.

Nota :
J'ai bien vu l’existence de "LOAD DATA INFILE" qui semble être le plus performant mais comme je souhaite faire des traitements sur les enregistrements avant de les enregistrer en BDD, je ne suis pas certain que ce soit le plus approprié.
Par exemple, certains postes me remontent "HP" plutôt que "Hewlett-Packard" ou "Micro-Star Inc" plutôt que "MSI"...

Nota 2 :
J'ai déjà le script d'envoi du document et je pense me servir des variables $path et $file lors de l'appel de la fonction.
Je n'ai pas besoin d'une énorme sécurité mais tout de même de m'assurer que le fichier n'est pas un autre csv...

Toute aide ou commentaire est bien évidemment accepté :P

Letoine

Re: traitement CSV via PHP vers MySQL

Posté : 25 févr. 2012, 20:23
par xTG
Tu sais que PHP peut lire les bases de données ACCESS ?
http://fr.php.net/odbc

Re: traitement CSV via PHP vers MySQL

Posté : 26 févr. 2012, 09:00
par sirakawa
Bjr,
Est-il nécessaire de passer par le fichier texte délimité?

Re: traitement CSV via PHP vers MySQL

Posté : 26 févr. 2012, 15:21
par Letoine
@xTG : Je sais c'est comme cela que j'ai passé ma base initiale de machines vers MySql. Mais je souhaite limiter le plus possible les actions des utilisateurs d'où l'envie de passer un txt ou csv par formulaire puis traitement automatique par le script.
Edit : Pardon, j'ai procédé dans l'autre sens : j'ai monté un connecteur odbc vers MySql vers lequel j'ai fait un export depuis access.

@Sirakawa : Le fichier texte délimité sera plus léger à passer par formulaire d'upload je pense, et non propriétaire. Après peut-être n'est il pas plus léger en terme de charge lors du traitement par le serveur...

En tout état de casuse, concernant le début de ma question : comment indiquer à mon script que les champs de ma première ligne sont les noms des colonnes de mon array dont je pourrais me resservir dans ma requête d'ajout et/ou de mise à jour (si machine déjà existante) ?

Re: traitement CSV via PHP vers MySQL

Posté : 26 févr. 2012, 18:50
par Letoine
Après quelques heures, j'ai fini par trouver comment faire =).
J'ai réussi à traiter mon fichier soit en créant une nouvelle machine soit en mettant à jour une machine existante selon que l'adresse MAC existe ou non.

Si vous le souhaitez, je publierais mon code qui n'est certainement pas très élégant mais qui fonctionne pour mon besoin...