xml ciel vers base de données

Mammouth du PHP | 592 Messages

09 août 2015, 11:20

Bonjour,
j'ai un fichier xml (tiré du logiciel ciel) que je souhaiterai intégrer dans un base de données mysql.
le soucis que j'ai c'est que les lignes dans le xml portent le même nom pour des valeur différentes. Le premier Row correspond au noms des champs dans ciel. le second (comme tous les autres qui suivent sont les valeurs que ciel me retourne dans le xml.

Code : Tout sélectionner

<Row> <Cell ss:StyleID="s62"/> <Cell ss:StyleID="s63"><Data ss:Type="String">Code</Data></Cell> <Cell ss:StyleID="s63"><Data ss:Type="String">Désignation courte</Data></Cell> <Cell ss:StyleID="s63"><Data ss:Type="String">Famille</Data></Cell> <Cell ss:StyleID="s63"><Data ss:Type="String">Prix de vente HT</Data></Cell> <Cell ss:StyleID="s63"><Data ss:Type="String">Stock réel</Data></Cell> </Row> <Row> <Cell ss:StyleID="s64"><Data ss:Type="Number">3</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">001220</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">OASIS IDEAL 35 BRIQUES</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">DECORATION</Data></Cell> <Cell ss:StyleID="s66"><Data ss:Type="Number">25.29</Data></Cell> <Cell ss:StyleID="s66"><Data ss:Type="Number">3</Data></Cell> </Row> <Row> <Cell ss:StyleID="s64"><Data ss:Type="Number">5</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">001757</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">S10 COUTEAU 5701218061030</Data></Cell> <Cell ss:StyleID="s65"><Data ss:Type="String">MATERIEL</Data></Cell> <Cell ss:StyleID="s66"><Data ss:Type="Number">5.18</Data></Cell> <Cell ss:StyleID="s66"><Data ss:Type="Number">2</Data></Cell> </Row> <Row> <Cell ss:StyleID="s64"><Data ss:Type="Number">6</Data></Cell> <Cell ss:StyleID="s67"><Data ss:Type="String">00848</Data></Cell> <Cell ss:StyleID="s67"><Data ss:Type="String">POLYPRO 40 NEUTRE 80 CM 120M</Data></Cell> <Cell ss:StyleID="s67"><Data ss:Type="String">DECORATION</Data></Cell> <Cell ss:StyleID="s68"><Data ss:Type="Number">12.5</Data></Cell> <Cell ss:StyleID="s68"><Data ss:Type="Number">2</Data></Cell> </Row>
comment puis-je intégrer ces valeurs dans une base de données qui aurait pour champ :
id --> l'id
ref --> Code
nom --> Désignation courte
Type --> Famille
Prix --> Prix de vente HT
Stock -->Stock réel

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7266 Messages

10 août 2015, 13:50

Bonjour,

2 possibilités :
- avec une feuille de style XSLT qui transformerai ton XML en ligne d'insertion SQL: INSERT INTO ta_table SET id="...", ref="...", etc...
- soit avec quelques lignes de PHP pour insérer directement dans MySQL (ou générer ton fichier .sql comme précédemment)

Vu qu'on est sur PHPfrance, on va s'attarder sur la 2ème possibilité en utilisant simpleXML.
Le plus facile est de charger ton XML avec simplexml_load_file() puis une boucle foreach() sur ton élément row comme dans l'exemple #4 de la doc :
http://php.net/manual/fr/simplexml.examples-basic.php

Et dans ta boucle pour chaque <row> tu fait une requête d'insertion MySQL avec les valeurs que tu récupères.
Quand tout le reste a échoué, lisez le mode d'emploi...