begin process at 2012 05 31 10:16:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

mardi 14 juin 2005 à 15:05:10 | Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

deblok83

Bonjour,
    c'est mon premier post ici alors je me permet de me presenter je suis le webmaster de deblok83.com .

j'ai un petit probleme je veux faire une rubrique "importer contact" qui prend comme un fichier un fichier XML

du genre
<?xml version="1.0" encoding="UTF-8"?>
<exportcontact>
    <contact>
        <nom>Toto</nom>
        <prenom>Titi</prenom>
        <numero type="tel portable" >0633333330</numero>       
    </contact>

    <contact>
        <nom>dupont</nom>
        <prenom>Pierre</prenom>
        <numero type="tel fixe" >04946986980</numero>       
    </contact>

</exportcontact>


a partir de ce fichier j'arrive a le parser en utilisant ce code php :

function ouverture ($parser, $name, $attrs){echo "$name<br>"; }
function fermeture ($parser, $name){echo "$name<br>";}
function texte ($parser, $data_text){ echo "$data_text<br> ";}
function defaut (){return TRUE;}

$xml_parseur = xml_parser_create();


xml_set_element_handler($xml_parseur, "ouverture", "fermeture");
xml_set_character_data_handler($xml_parseur, "texte");
xml_set_default_handler($xml_parseur,"defaut");


//ouverture et lecture du fichier xml
$fp = fopen("testcontact.xml", "r") or die("
Fichier introuvable. L'analyse a ete suspendue");

while ($fdata = fread($fp, 2048)){

    xml_parse($xml_parseur, $fdata, feof($fp)) 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))

        );

}

?>

mon probleme donc c'est que je sais pas comment faire pour inserer les contacts dans ma base mysql au fure et a mesure de la lecture du fichier xml .
Merci d'avance pour vos reponses




mardi 14 juin 2005 à 15:32:18 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

malalam

Administrateur CodeS-SourceS
Hello,

puisque tu arrives a le parser, tu arrives donc a afficher les donnees ? Donc quel est le probleme pour les inserer dans ta base ? Visiblement la structure est fixe : dans contact, tu as 3 elements. Bah tu inseres tous les 3 elements ? (apres contact lol)


mardi 14 juin 2005 à 15:38:24 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

Anthomicro

Salut,

quelle est la structure de ta table ?



    mardi 14 juin 2005 à 15:59:28 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

    deblok83

    le probleme c'est que je vois pas comment faire a quelle moment faut inserer !!

    voila la structure de la table personne et l'insertion que je veu faire :
      INSERT INTO personne VALUES ('$nom','$prenom','$civilite','$description','$date','$adr1','$adr2','$ville','$codepostal','$pays');

    un pti exemple serai le bienvenue merci :)

    mardi 14 juin 2005 à 16:06:16 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

    Anthomicro

    function ouverture ($parser, $name, $attrs){echo "$name<br>"; }
    function fermeture ($parser, $name){echo "$name<br>";}
    function texte ($parser, $data_text){ echo "$data_text<br> ";}

    Bah là tu récupères les valeurs, tu les places dans une variable globale pour ensuite récupérer son contenu après le while par exemple.

    a +


      mardi 14 juin 2005 à 16:09:43 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

      deblok83

      chui désolé mais je vois vraiment pas :'(
      tu peut faire un pti exemple ?

      mardi 14 juin 2005 à 16:35:15 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

      malalam

      Administrateur CodeS-SourceS

      Hello,

      tien, je te donne une piste. Je pense qu'a partir de ca tu sauras te debrouiller :

      <?php
      function ouverture ($parser, $name, $attrs){echo $name, '<br />';; }
      function fermeture ($parser, $name){echo $name, '<br />';}
      function texte ($parser, $data_text){echo $data_text, '<br />';}
      function defaut (){return TRUE;}

      $xml_parseur = xml_parser_create();


      xml_set_element_handler($xml_parseur, "ouverture", "fermeture");
      xml_set_character_data_handler($xml_parseur, "texte");
      xml_set_default_handler($xml_parseur,"defaut");


      //ouverture et lecture du fichier xml
      $fp = fopen("test.xml", "r") or die("
      Fichier introuvable. L'analyse a ete suspendue");

      while ($fdata = fread($fp, 2048)){

           xml_parse_into_struct ($xml_parseur, $fdata, $vals) 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))

              );

      }
      echo '<pre>';
      print_r ($vals);
      echo '</pre>';
      echo '---------------------------';
      foreach ($vals as $valeur) {
          echo $valeur['value'];
          echo '<br />';
        }


      ?>

      mardi 14 juin 2005 à 17:56:44 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

      deblok83

      j'ai fait sa mais apparament sa fait pas ce que j'attend :'(
      foreach ($vals as $valeur)
          {

             
              if ($valeur['level']=="3")
              {                      
                  if ($valeur['tag']=="CIVILITE")            $civilite=$valeur['value'];        else $civilite="";
                  if ($valeur['tag']=="NOM")                $nom=$valeur['value'];            else $nom="";
                  if ($valeur['tag']=="PRENOM")            $prenom=$valeur['value'];        else $prenom="";
                  if ($valeur['tag']=="DESCRIPTION")        $description=$valeur['value'];    else $description="";
                  if ($valeur['tag']=="ADR")                $adr1=$valeur['value'];            else $adr1="";
                  if ($valeur['tag']=="VILLE")            $ville=$valeur['value'];        else $ville="";
                  if ($valeur['tag']=="CODEPOSTAL")        $codepostal=$valeur['value'];    else $codepostal="";
                  if ($valeur['tag']=="PAYS")                $pays=$valeur['value'];            else $pays="";
                  if ($valeur['tag']=="SOCIETE")            $societe=$valeur['value'];        else $societe="";
                  if ($valeur['tag']=="EMAIL")            $email=$valeur['value'];        else $email="";
                  if ($valeur['tag']=="NUMERO")            {$numero=$valeur['value']; $type_comm=$valeur['attributes']['TYPE'];}        else{ $numero=""; $type_comm=""; }
             
             
                  $sql = "INSERT INTO personne VALUES ('','3','".$nom."','".$prenom."','".$civilite."','','".$description."','".$date."','Nouveau','".$adr1."','".$adr2."','".$ville."','".$codepostal."','".$pays."');";
                  echo "<br>$sql<br>";                                       
              }                           
             
        }
       sa donne sa :

      INSERT INTO personne VALUES ('','3','','','Mr.','','','','','','','','');
      INSERT INTO personne VALUES ('','3','toto','','','','','','','','','','');
      INSERT INTO personne VALUES ('','3','','titi','','','','','','','','','');

      mardi 14 juin 2005 à 18:14:26 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

      malalam

      Administrateur CodeS-SourceS

      Ouais, ben c'est normal lol. Ce sera un peu plus complique... ;-)

      Le foreach () etait un exemple, il faudra sans doute parcourir le tableau differemment.
      Parce que la, tu lis chaque entree de ton tableau...ok. En fait, pour un enregistrement XML; tu as plein d'enregiustrements dans ton tableau.
      Chaque boucle de ton foreach va chercher un tableau contenant SOIT civilite, SOIT nom, SOIT prenom etc...
      Donc il faut voir ou tu construits ta requete. Si tu la construits dans le foreach, tu auras une requete avec a chaque fois, uniquement 1 champ rempli, tous les autres vides. Normal, puisque a chaque tour de boucle, c'est bien ce que tu as.

      Je te conseille de decouper ce tableau en plusieurs tableaux : un contenant toutes les civilites, l'autres tous les noms etc...en remplissant evidemment avec une chaine vide s'il n'y a rien histoire d'avoir le meme nombre d'entrees dans tous les tableaux.
      Puis tu construits tes requetes en prenant chaque entree avec le meme index, jusqu'au dernier index.

      Un truc dans le genre en tous cas.
      Mais utiliser directement ce tableau va etre le bordel...
      mardi 14 juin 2005 à 20:04:37 | Re : Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql

      deblok83

      Oui je vois ce que tu veux j'ai a peu prés compris !! mais pour l'écrire c'est autre chose
      si quelqu'un à un pti exemple


      1 2

      Cette discussion est classée dans : fichier, function, xml, parseur, parser


      Répondre à ce message

      Sujets en rapport avec ce message

      XML et EncryptedData ? [ par debuger ] Bonjour,J'aimerai savoir s'il est possible de Parser un fichier XML qui est crypté ! ? et celà avec une feuille de style XSL bien sur ?d'ailleurs comm Parser un SUPER fichier xml zippé(.gz)! [ par alifarah7 ] Bonjour, et excusez moi pour le derangement J'ai un fichier que je reçois chaque jour d'une société et qui contient leur flux rss contenant leurs Parser XML à partir d'un DTD externe [ par sokyra ] Bonjour, Je dois vérifier la cohérence d'un fichier XML par rapport à un fichier DTD. Or ce fichier XML ne contient pas de balise <!DOCTYPE . Dan Parseur Xml StAX [ par anisis ] Bonjour tt le monde,En fait mon prblm c'est que je reçois des fichiers xml de grandes tailles et je dois les parser , Maintenant je suis entrain d'uti ecriture de XML problème d'encodage [ par lounkokobi270987 ] Bonjour a tous J'ai un petit probleme qui me donne des gros mot de tête:J'aimerai modifier un fichier XML en PHP et le réecrire aprés dans mon fichier parser xml => pb encodage bdd mysql [ par melimelo1980 ] Bonjour,Je suis en train de parser un flux xml J'arrive à tout envoyer dans la base de données, le EXTRAIRE XML de la base mysql [ par mastraze ] Bonjour tout le monde,J ai trouvé ce bout de code en php qui permet de générer un fichier xml à partir d'une table MySQL . *************************** generationles donnees table en xml avec un fichier exixtannt aavec le php [ par ndiou ] bonjoour j'ai un code qui doit vusualiser l'ensemble des dones d'une table dans  un fichier xml exitante vopici mon code :$conn=mysql_connect("http:// Lire un fichier XML en java JSP et stocker le contenu dans une BD mysql ? [ par kiraqi ] <link rel="Fi écrire dans un fichier [ par joujma5 ] bonjour les amis, je voulais modifier un fichier xml de façon que j'y ajoute des données existant dans ma base de données, ce fichier xml représente u


      Nos sponsors


      Sondage...

      CalendriCode

      Mai 2012
      LMMJVSD
       123456
      78910111213
      14151617181920
      21222324252627
      28293031   

      Consulter la suite du CalendriCode

      Photothèque

      A découvrir



       
      Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
      CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
      CodeS-SourceS.com© est une marque déposée tous droits réservés

      Google Coop CodeS-SourceS Google Coop CodeS-SourceS
      Temps d'éxécution de la page : 11,450 sec (3)

      Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales