Page 1 sur 1

XML -> MYSQL

Posté : 22 avr. 2009, 01:22
par nats
Bonjour à tous,

j'insère des donnés contenues dans un xml dans ma base de données mysql/phpmyadmin grâce au tutoriel d'@rthur

http://www.phpfrance.com/forums/voir_reponse-264954.php
Je souhaiterais maintenant insérer les données d'un XML dans différentes tables mysql.

Voici ma requête

Code : Tout sélectionner

mysql_query("INSERT INTO jos_estateagent AND jos_estateagent_categories AND jos_estateagent_images SET created_by='".($annonce->client)."', obj_id='".($annonce->reference)."', title='".($annonce->titre)."', description='".($annonce->texte)."', created='".($annonce->date_saisie)."', path='".($annonce->photo)."', type='".($annonce->code_type)."', pcode='".($annonce->code_postal)."', town='".($annonce->ville)."', homes_size='".($annonce->surface)."', rooms='".($annonce->nb_pieces)."', price='".($annonce->prix)."', id='".($annonce->type)."' ") or die("Erreur MySQL : ".mysql_error());
Quand j'insère dans une seule table ça fonctionne par contre quand je veux inserer dans les differentes tables voilà le message d'erreur que j'ai

Code : Tout sélectionner

Erreur MySQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND jos_estateagent_categories AND jos_estateagent_images SET created_by='OPTIM' at line 1
Merci de votre compréhension, je suis débutant.

Posté : 22 avr. 2009, 01:31
par Nagol
un insert = une table, il faut exécuter plusieurs reqêtes sql distinctes. ou passer plusieurs inserts séparés par des ; dans un appel mysql(i)_query

Posté : 22 avr. 2009, 06:03
par nats
un insert = une table, il faut exécuter plusieurs reqêtes sql distinctes. ou passer plusieurs inserts séparés par des ; dans un appel mysql(i)_query
Merci beaucoup Nagol pour ta reactivité.

Un problème en amenant un autre je n'arrive pas à récupérer les valeurs de <photo></photo> et de <type></type>.
L'insertion se fait mais elle est vierge.

Code : Tout sélectionner

<?include "_connexion.php";?> <?php $optimhome_xml = simplexml_load_file('exemple.xml'); foreach ($optimhome_xml ->annonce as $annonce) { mysql_query("INSERT INTO jos_estateagent SET created_by='".($annonce->client)."', obj_id='".($annonce->reference)."', title='".($annonce->titre)."', description='".($annonce->texte)."', created='".($annonce->date_saisie)."', type='".($annonce->code_type)."', pcode='".($annonce->code_postal)."', town='".($annonce->ville)."', homes_size='".($annonce->surface)."', rooms='".($annonce->nb_pieces)."', price='".($annonce->prix)."'") or die("Erreur MySQL : ".mysql_error()); } foreach ($optimhome_xml ->prestation as $prestation){ mysql_query("INSERT INTO jos_estateagent_categories SET name='".($prestation->type)."'") or die("Erreur MySQL : ".mysql_error()); } foreach ($optimhome_xml ->photo as $photo){ mysql_query("INSERT INTO jos_estateagent_images SET path='".($prestation->photo)."'") or die("Erreur MySQL : ".mysql_error()); } ?>
Voci mon xml



Merci d'avance

Code : Tout sélectionner

<?xml version='1.0' encoding='windows-1252'?> <annonces> <annonce> <client>OPTIMHOME</client> <reference>123456</reference> <titre>APPARTEMENT A ARGENTEUIL</titre> <texte>(95) ARGENTEUIL – F4 LUMINEUX (BAIES VITREES) ET FONCTIONNEL, COMPOSE DE : ENTREE, SEJOUR, CUIS EQUIP INDEPENDANTE, 3 CHAMBRES, 2 DRESSING, PLACE DE PARKING PRIVEE, GARDIEN, INTERPHONE. ECOLES, GARE ET COMMERCES SUR PLACE. A DECOUVRIR : CONTACTER LYES AGENT MANDATAIRE 95 AU</texte> <date_saisie>09/11/2008</date_saisie> <photos> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> <photo>http://www.optimhome.com/images/upload/biens/A-abdly-1010365413-P.jpg</photo> </photos> <agence> <telAgence>06 34 00 55 23</telAgence> <emailAgence>[email protected]</emailAgence> <nomAgence>Agent mandataire Optimhome Test</nomAgence> </agence> <bien> <code_type>APPARTEMENT</code_type> <code_postal>95100</code_postal> <ville>ARGENTEUIL</ville> <code_insee approximatif='false'></code_insee> <surface>130</surface> <nb_pieces>4</nb_pieces> <prix>235000</prix> </bien> <prestation> <type>VENTE</type> </prestation> </annonce> </annonces>

Posté : 22 avr. 2009, 15:26
par Nagol
tes variables :)

foreach ($optimhome_xml ->photo as $photo)

mais

$prestation->photo

tu peux tout faire avec une seule boucle (et faire plusieurs inserts à l'intérieur) ca devrait clarifier le tout (et puis les boucles faut limiter c'est mieux niveau perf.

Posté : 23 avr. 2009, 11:43
par nats
tes variables :)

foreach ($optimhome_xml ->photo as $photo)

mais

$prestation->photo

tu peux tout faire avec une seule boucle (et faire plusieurs inserts à l'intérieur) ca devrait clarifier le tout (et puis les boucles faut limiter c'est mieux niveau perf.
Je ne te suis plus :oops:
J'aurais donc une erreur au niveau de mes variables.

Si j'ai bien compris

Code : Tout sélectionner

$optimhome_xml = simplexml_load_file('exemple.xml');
Me permet de récuperer le xml.

Code : Tout sélectionner

foreach ($optimhome_xml ->annonce as $annonce)
Chaque fois que je load le xml les données du xml sont contenues dans la variable $annonce.

J'aimerais savoir pourquoi je n'arrive pas à accéder aux données dans <photos></photos> et <prestation></prestation> et surtout comment y accéder.
Je pense avoir raté une étape au niveau de ton explication vu que je débute il doit y avoir un élément que je ne maitrise pas.

Peux tu également m'éclairer sur la syntaxe pour tout faire avec une seule boucle. Je suis tout honteux au milieu de vous experts je vous remercie d'avance pour votre aide.

Posté : 27 avr. 2009, 22:15
par nats
Avec ma méthode je n'arrive à récupérer les données que jusqu'à <date_saisie></date_saisie>. Comme vous l'avez compris j'aimerais traiter toutes les données du xml et je n'ai toujours pas trouvé la solution.
Merci d'avance