Accueil > Forum > > > > Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql
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
|
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
|
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
|
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
|
|
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
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|