Bonjour,

Je bloque sur la récupération de mon fichier XML dans ma base de données.

mon soucis est que j'ai une etiquette de mon fichier XML qui se repete plusieurs fois donc je fait une nouvelle boucle afin de pouvoir lister ces données mais je ne vois pas comment je peut les récupérer en base de donnees.

Ce que je fais

j'importe mon fichier XML, via ce fichier PHP

<?php
include '../../lib/includes.php';
if( isset($_FILES['import'])){
        $filename= ($_FILES['import']['name']);
        //$filename = WEBROOT . "/imports/".basename($_FILES['import']['name']) ;
        // Place le fichier, sous le nom que tu viens de lui donner, dans le répertoire approprié
        move_uploaded_file( $_FILES['import']['tmp_name'], $filename);
        $xml = new SimpleXMLElement($filename, Null, True);
        $nodes = $xml->xpath('//racineFichier/root');

        foreach($nodes as $node) {
            $client_nom_prenom = addslashes($node->client->nomPrenom);
            $facture_num_contrat = $node->facture->numero;
            $facture_num_sequentiel = $node->facture->numeroFactureSequentielle;

            //Selection des éléments divers Complementaire
            $diversComplementaires = $node->facture->elementsFacture->diversComplementaire;
            foreach($diversComplementaires as $diversComplementaire){
              $codeDiversCompl = $diversComplementaire->codeDiversCompl;
              $libelleDiversCompl = $diversComplementaire->libelDiversCompl;
              $quantiteDiversCompl = $diversComplementaire->qtDiversCompl;
              $puDiversCompl = $diversComplementaire->puDiversCompl;
              $mtBrutDiversCompl = $diversComplementaire->mtBrutDiversCompl;
              $mtDiversCompl = $diversComplementaire->mtDiversCompl;
              $codeTvaDiversCompl = $diversComplementaire->codeTvaDiversCompl;
            }
            var_dump($facture_num_sequentiel);
            var_dump($num_contrat);
            var_dump($client_nom_prenom);
            var_dump($codeDiversCompl);
            die();

                       $select = $db->query("SELECT COUNT(*) AS verif_sequentiel FROM invoices2 WHERE num_sequentiel ='". $facture_num_sequentiel."'");
                                  if( $select->fetch()->verif_sequentiel < 1 ){
                                            $import  = $db->query("
                                              INSERT INTO invoices2 (
                                              created,
                                              num_sequentiel,
                                              client_nom_prenom,
                                              num_contrat
                                              )
                                            VALUES (
                                            NOW(),
                                            '". $facture_num_sequentiel ."',
                                            '". $client_nom_prenom ."',
                                            '". $facture_num_contrat ."'

                                            )
                                  ");
                        }
}
        unlink($filename);
        header('Location:importxml.php');
        die();
    }

Ce que je veux

Je cherche donc a savoir comment je peux faire pour importer en base de données cette partie de mon XML via ma requete d'import?

<diversComplementaire><codeDiversCompl>FSF</codeDiversCompl><libelDiversCompl>SERVICE POUR CARBURANT</libelDiversCompl><qtDiversCompl>1.00</qtDiversCompl><puDiversCompl>10.82</puDiversCompl><mtBrutDiversCompl>10.82</mtBrutDiversCompl><mtDiversCompl>10.82</mtDiversCompl><codeTvaDiversCompl>1</codeTvaDiversCompl></diversComplementaire><diversComplementaire><codeDiversCompl>DAF</codeDiversCompl><libelDiversCompl>FRS GESTION DOMMAGES</libelDiversCompl><qtDiversCompl>1.00</qtDiversCompl><puDiversCompl>54.17</puDiversCompl><mtBrutDiversCompl>54.17</mtBrutDiversCompl><mtDiversCompl>54.17</mtDiversCompl><codeTvaDiversCompl>1</codeTvaDiversCompl></diversComplementaire>

merci par avance de votre aide.

Gilles

2 réponses


Mardan
Réponse acceptée

**** 1-solution,
Ce mieux de créer une autre table pour tes commentaires(liaison entre table principale et la table de commentaire), et puis dans ta boucle de commentaire tu insert toutes le commentaires et tu enregistre tous les ids de commentaire dans une chaîne, à la fin de t'enregistre les ids_commentaire dans la table principale.

**** 2-solution
sauvegarde tous les commentaire dans une chaîne, et tu transforme la chaîne en json ou avec serialize, puis enregistre dans ta table.

gilles40
Auteur

merci Oghouz, j ai finalement opté pour la 1ere solution