begin process at 2012 05 31 19:53:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

XML -> Array -> SQL


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

XML -> Array -> SQL

dimanche 13 janvier 2008 à 18:44:58 | XML -> Array -> SQL

GMo888

Bonjour à tous,
D'abod, un tout grand merci à la communauté de ce site pour les préciseuses informations ! :-)

Après de multiple recherche, j'en arrive à vous poser directement la question, je suis d'un niveau très débutant en PHP, et si l'un de vous pouvait me donner un petit coup de pouce, ce serait formidable.

Via une URL, j'ai accès à des fichiers XML.  Ces fichiers XML (un par produit et de structure identique) contiennent des informations sur des produits.
Je souhaite récupérer ces informations et les stocker dans une base de donnée.

J'ai trouvé un parser XML avec clsParseXML class.
Il retourne toutes les données du fichier XML dans un Array.

J'aimerai récupérer les informations pour les introduire dans une base de donnée XML.

Voici la classe :
<?php
class ParseXML{
      function GetChildren($vals, &$i) {
         $children = array(); // Contains node data
         if (isset($vals[$i]['value'])){
            $children['VALUE'] = $vals[$i]['value'];
         }
        
         while (++$i < count($vals)){
            switch ($vals[$i]['type']){
              
            case 'cdata':
               if (isset($children['VALUE'])){
                  $children['VALUE'] .= $vals[$i]['value'];
               } else {
                  $children['VALUE'] = $vals[$i]['value'];
               }
            break;
           
            case 'complete':
               if (isset($vals[$i]['attributes'])) {
                  $children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
                  $index = count($children[$vals[$i]['tag']])-1;
        
                  if (isset($vals[$i]['value'])){
                     $children[$vals[$i]['tag']][$index]['VALUE'] = $vals[$i]['value'];
                  } else {
                     $children[$vals[$i]['tag']][$index]['VALUE'] = '';
                  }
               } else {
                  if (isset($vals[$i]['value'])){
                     $children[$vals[$i]['tag']][]['VALUE'] = $vals[$i]['value'];
                  } else {
                     $children[$vals[$i]['tag']][]['VALUE'] = '';
                  }
               }
            break;
           
            case 'open':
               if (isset($vals[$i]['attributes'])) {
                  $children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
                  $index = count($children[$vals[$i]['tag']])-1;
                  $children[$vals[$i]['tag']][$index] = array_merge($children[$vals[$i]['tag']][$index],$this->GetChildren($vals, $i));
               } else {
                  $children[$vals[$i]['tag']][] = $this->GetChildren($vals, $i);
               }
            break;
        
            case 'close':
               return $children;
         }
      }
   }
    
      function GetXMLTree($xmlloc){
         if (file_exists($xmlloc)){
            $data = implode('', file($xmlloc));
         } else {
            $fp = fopen($xmlloc,'r');
            while(!feof($fp)){
               $data = $data . fread($fp, 1024);
            }
     
            fclose($fp);
         }
     
         $parser = xml_parser_create('UTF-8');
         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
         xml_parse_into_struct($parser, $data, $vals, $index);
         xml_parser_free($parser);
     
         $tree = array();
         $i = 0;
     
         if (isset($vals[$i]['attributes'])) {
            $tree[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
            $index = count($tree[$vals[$i]['tag']])-1;
            $tree[$vals[$i]['tag']][$index] =  array_merge($tree[$vals[$i]['tag']][$index], $this->GetChildren($vals, $i));
         } else {
            $tree[$vals[$i]['tag']][] = $this->GetChildren($vals, $i);
         }
      return $tree;
      }
}
?>

Voici la requète pour afficher :
<?php
include 'clsParseXML.php';

$xmlparse = &new ParseXML;
$xml = $xmlparse->GetXMLTree('/path/to/xmlfile.xml');

echo "<pre>";
print_r($xml);
echo "</pre>";
?>

Et une partie du résultat :
                                                                    [UNSPSCDESC] => Array
(
[0] => Array
(
[ATTRIBUTES] => Array
(
[LANG] => NL
[ID] => OT1008
)

[VALUE] => Desktop computers
)

)

[MANUFACTURER] => Array
(
[0] => Array
(
[ATTRIBUTES] => Array
(
[LANG] => NL
[ID] => OT1004
)

[VALUE] => HP
)

)

[MANUFACTURERID] => Array
(
[0] => Array
(
[ATTRIBUTES] => Array
(
[LANG] => NL
[ID] => OT1007
)

[VALUE] => AA797A#ABH
)

)
L'idée, c'est de stocker la valeur de chaque ID dans SQL.
Exemple :
ID [OT1008] (le nom du champ est OT1008) -> Valeur "Desktop computers"
ID [OT1004] (le nom du champ est OT1004) -> Valeur "HP"
ID [OT1007] (le nom du champ est OT1007) -> Valeur "AA797A#ABH"

Et je n'arrive vraiement pas à trouver un bout de code pour faire cela ...

Si l'un de vous pouvais m'éguiller, ce serait formidable !

Un tout grand merci d'avance,
Gaëtan


Cette discussion est classée dans : tag, array, value, vals, children


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec un parser XML vers PHP [ par foliop ] Salut j'utilise ce script pour afficher un flux XML en php : Code : function GetXMLTree ($xmldata) { ini_set ('track_errors', '0'); $ Array et objet [ par mrjulien ] Hello !Je suis en train de développer une classe et j'ai un soucis de synthaxeCode :public function result_hand(){        foreach($this->player_info a champs de saisie dans un tableaux dynamique [ par aloulou650 ] Bonjour,,J'ai un tableaux dynamique qui contient des champs de saisie , le problèm c'est que lors de l'insertion dans la base il y a que la derniere l Tableau array etc... [ par Cestmoi ] J'affiche des données de la facon suivante :foreach($server->rules as $key => $value) { echo $key." = ".$value.""; } array() bis [ par nougitch ] Bonjour, Ce matin, un membre du forum m'a aidé à concevoir un tableau dans lequel je stocke le nom d'un champ (récupéré en méthode POST) ainsi que s Foreach (tableau multi-dimensionnels) [ par nougitch ] Salut,Je cherche à insérer dans ma table les valeurs de mon tableaux multi-dimensionnels en fonction de mes deux index. Seulement, je ne sais pas comm Trie array multidimensionnel suivant critère [ par ricozone3d ] Bonjour à tous, Je cherche à faire un trie de tableau de type : [code=php] $array = array( array('name' => 'bouquin.jpg', 'path' => 'MZ_SC2', 'tag' Question pour fusionner deux array en 1 [TITRE CORRIGE...] [ par destiny ] Hello all :)Une petite question sur les arrays, je voudrais scinder 2 array en 1! pour le serializer par la suite -> mon code://Gere la session (inser value en php dans un formulaire [ par eln_francois ] Bonjours,Je cherche comme mettre une variable php dans la partie "value" d'un input de type text. merci pour vos reponce.Voila mon code qui ,biensure, placer document.form1.input.value dans une variable php [ par skiso ] j'aimerais savoir comment place placer document.form1.input.value dans une variable phpou comment placer document.form1.input.value  dan


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 : 0,437 sec (4)

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