IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] [EXPAT] D'un document Xml vers une base de données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 155
    Points : 88
    Points
    88
    Par défaut [XML] [EXPAT] D'un document Xml vers une base de données
    Bonjour à tous, je souhaite envoyer des données d'un fichier xml vers une base mysql. Pour ceci j'ai trouvé une fonction sur le net (des commentaires sur celle ci disent qu'elle marche).

    Voila la table de ma base ou je veu ecrire:

    idmoto
    marque
    modele

    une partie de mon code xml:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <liste>
     <moto>
      <idmoto>1</idmoto> 
      <marque>ducati</marque> 
      <modele>748</modele> 
      <photo>ducati748.jpg</photo> 
      <couleur>Rouge</couleur> 
      <annee>1999</annee> 
      <kilometre>18000</kilometre> 
      <prix>10000</prix>

    la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    function insertXml ($arrElem, $arrChamps, $table, $fichierXml) {
        $xml_parseur = xml_parser_create();
        $fp = fopen($fichierXml, "r") or die("Fichier introuvable. L'analyse a ete suspendue");
        while ($fdata = fread($fp, filesize ($fichierXml))){
             xml_parse_into_struct ($xml_parseur, $fdata, $arrOutput) or die (sprintf("Erreur XML : %s à la ligne %d\n",
                xml_error_string(xml_get_error_code($xml_parseur)),
                xml_get_current_line_number($xml_parseur))
                );
        }
     
        foreach ($arrOutput as $elem) {
          if (in_array ($elem['tag'], $arrElem)) {
    $arrReq[$elem['tag']][] = $elem['value'];
    if (is_array ($elem['attributes'])){
    foreach ($elem['attributes'] as $clef => $attr) {
    if (in_array ($clef, $arrElem)) {
    $arrReq[$clef][] = $attr;
    }
    }
    }
    }
    }
    if (is_array ($arrReq)) {
    $cpt = count ($arrReq[$arrElem[0]]);
    $strChamps = '';
    foreach ($arrChamps as $champ) {
    $strChamps .= '"'.$champ.'",';
    }
    $strChamps = rtrim ($strChamps, ',');
    $i = 0;
    while ($i < $cpt) {
    $strTmp = '';
    foreach ($arrReq as $clef => $dump) {
    $strTmp .= '"'.$arrReq[$clef][$i].'",';
    }
    $strTmp = rtrim ($strTmp, ',');
    $requeteTmp[] = $strTmp;
    $i ++;
    }
    $i = 0;
    while ($i < $cpt) {
    $requete[] = 'INSERT INTO '.$table.' ('.$strChamps.') VALUES ('.$requeteTmp[$i].')';
    $i ++;
    }
    return $requete;
    }
    return false;
    }
    les consignes de son auteur:
    Les parametres a passer :
    - $arrElem : tableau contenant tous les elements du fichier XML a inserer dans la BDD. C'est un tableau simple : array ('elem1', 'elem2'...). Les attributs doivent y etre mis de la meme maniere (si attributs il y a), ils seront inseres aussi dans un champ a part. Ex : array ('elem1', 'elem2', 'attr1'...)
    - $arrChamps : les champs de votre base de donnees. Ces champs DOIVENT etre dans le meme ordre que les elenmts et attributs a inserer. De meme, evidemment, il doit y avoir dans ces 2 tableaux le meme nombre d'elements.
    - $table : le nom de votre table.
    - $fichierXml : le fichier xml.
    et voila comment je l'appele:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $arrElem = array ('idmoto', 'marque', 'modele');
    $arrSql = array ('idmoto', 'marque', 'modele');
    if (($arrRequetes = insertXml ($arrElem, $arrSql, 'import', 'ListeMotoOcaz.xml'))!== false) {
        echo 'OK<pre>';
        print_r ($arrRequetes);
        echo '</pre>';
    }
    else
        echo '<br /><br />Erreur, false retourne';
    Mon erreur:
    Notice: Undefined variable: arrReq in e:\program files\easyphp1-7\www\motos\import.php on line 26


    Erreur, false retourne
    que faut il modifier? merci d'avance

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ....
    $arrReq  = array();
    foreach ($arrOutput as $elem) ....
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 155
    Points : 88
    Points
    88
    Par défaut
    voila les nouvelles erreur:

    Notice: Undefined index: idmoto in e:\program files\easyphp1-7\www\motos\import.php on line 27

    Notice: Undefined variable: requete in e:\program files\easyphp1-7\www\motos\import.php on line 50
    pourtan le champ idmoto existe dans le xml et ds la base

    merci d'avance

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    il suffit d'initialiser les variables a la suite du de ce que je t'ai deja donné,
    c est juste des notices qui te disent que tes variables sont pas déclarées
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 155
    Points : 88
    Points
    88
    Par défaut
    le probleme c'est que je ne vois pa du tou quoi déclarer car idmoto ne fait pas parti de la fonction dans le code.

    Peut tu m'eclairer?
    merci

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    est ce que sinon le code marche, a aprt les notices ?
    en général en prod apres on met le error_reporting en enlevant les notices et les warnings
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 155
    Points : 88
    Points
    88
    Par défaut
    ben ça menvoi pas la requette, donc non.

    J'ai initialisé ma variable $requete en mettant tout au debut:
    requete="";

    Ce qui ma enlevé le deuxième message d'erreur mais il reste toujours le premier.
    J'ai désactivé les erreurs mais ça ne marche toujours pas.

    Quelqu'un verrait til comment déclarer cette variable?

    merci d'avance

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    la c est un undefined index pas variable.

    Ca veut dire qu il trouve plus l'index idmoto dans le tableau associatif.

    Montre le nouveau code stp
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 155
    Points : 88
    Points
    88
    Par défaut
    j'ai résolu le probleme en faisan copié collé du code de l'exemple du gars. Il a du mettre a jour l'exemple et pas le code

    merci quand meme de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier Xml Vers une Base de Données
    Par cherif ahmed dans le forum NetBeans
    Réponses: 1
    Dernier message: 11/03/2013, 12h02
  2. [JDOM] Exporter les données d'un fichier XML vers une base de données MySQL en utilisant API JDOM
    Par fruwen7 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 23/05/2012, 15h56
  3. [SAX] De XML vers une Base de données
    Par jeyce dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 09/11/2006, 10h23
  4. Réponses: 1
    Dernier message: 29/08/2006, 17h03
  5. Réponses: 1
    Dernier message: 28/04/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo