Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > XSL & XSLT
XSL & XSLT Forum d'entraide pour les extensions XSL et XSLT permettant de manipuler vos documents XML à l'aide de feuilles de style et de transformations avec PHP. Avant de poster -> tutoriels XSL et XSLT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/07/2007, 05h14   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 0
Points : 0
Par défaut [XSL] récupérer requète SQL a partir d'un fichier Xml et les traiter par un interface

Bonjour,

je récupère actuellement les données en Xml d'une grosse base de données. Le but est de comparer et de mettre à jour les données par rapport à celle que l'on a déjà. Grace à un fichier Xsl, je transforme les données Xml en requètes SQL. Qd j'ouvre le fichier Xml ds un web browser, il me sort les requètes, je les copie colle ds ma base pour pouvoir les utiliser. Le problème c'est que j'aimerai rendre tout transparent, que l'utilisateur n'est pas à copier coller les requètes. Je souhaite utiliser une interface en java (ou php). J'essaye de parser mon fichier mais je n'y arrive pas ( sous php4 avec domxml_open_file()...). Je ne sais pas si c'est la méthode pour récupérer mes commandes SQL ds une variable par exemple et pouvoir l'utiliser après.

Merci d'avance pour votre aide
jmumu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 19h07   #2
Futur Membre du Club
 
Étudiant
Inscription : novembre 2006
Messages : 19
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2006
Messages : 19
Points : 19
Points : 19
Envoyer un message via MSN à bouffa Envoyer un message via Yahoo à bouffa Envoyer un message via Skype™ à bouffa
L'idée serait d'effectuer la transformation du fichier xml par le fichier xsl à l'aide de php et donc récupérer dans php le résultat de la transformation (cad les requètes).
bouffa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 03h49   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 0
Points : 0
oui c'est exactement ça !!
J'arrive finalement à mettre mes requêtes dans une variable, grâce à çà :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$xh = xslt_create();
$file=fopen("book.xml","r");
$xml=fread($file,16384);
fclose($file);
$file=fopen("books.xsl","r");
$xsl=fread($file,16384);
fclose($file);
$arguments = array(
  '/_xml' => $xml,
  '/_xsl' => $xsl
  );
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
xslt_free($xh);
//print "$result";
                        ?>
Le problème maintenant c'est qu'il me dit exécution de la requête impossible!! Alors que c'est simplement des insert into!
jmumu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2007, 13h48   #4
Futur Membre du Club
 
Étudiant
Inscription : novembre 2006
Messages : 19
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2006
Messages : 19
Points : 19
Points : 19
Envoyer un message via MSN à bouffa Envoyer un message via Yahoo à bouffa Envoyer un message via Skype™ à bouffa
Citation:
Envoyé par jmumu
oui c'est exactement cà!!
J'arrive finalement à mettre mes requètes ds une variable, gràce à çà :
<?php
$xh = xslt_create();
$file=fopen("book.xml","r");
$xml=fread($file,16384);
fclose($file);
$file=fopen("books.xsl","r");
$xsl=fread($file,16384);
fclose($file);
$arguments = array(
'/_xml' => $xml,
'/_xsl' => $xsl
);
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
xslt_free($xh);
//print "$result";
?>

Le problème maintenant c qu'il me dit exécution de la requète impossible!! Alors que c'est simplement des insert into!
C'est quoi l'erreur affichée ?
bouffa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 04h07   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 0
Points : 0
y a ça que j'ai rajouté en dessous:
Code :
1
2
3
4
5
6
7
8
9
10
$connexion=mysql_connect("localhost","root","")
    or die("connexion impossible");
 
  $base="request";
  $db=mysql_select_db($base,$connexion)
    or die ("la BDD ne peut pas être sélectionné");
$rq = "'$result'";
$result1 = mysql_query($rq)
    or die ("Execution de la requète impossible");
                        ?>
Le truc c'est que php ne permet pas d'avoir plusieurs requêtes à la fois, et d'avoir des ";" dans la requête. Je vais donc utiliser la fonction split() pour découper ma variable.
Ce que je me demande c'est que je vais avoir 30 000 insert into dans mon vrai problème, je sais pas si une variable peut prendre autant de caractères?
Je ne sais pas non plus si les requêtes exécutées une à une ne vont pas prendre trop de temps....
jmumu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h21   #6
Membre à l'essai
 
Inscription : juin 2006
Messages : 36
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juin 2006
Messages : 36
Points : 22
Points : 22
Envoyer un message via ICQ à Migosh59 Envoyer un message via MSN à Migosh59 Envoyer un message via Yahoo à Migosh59
Citation:
Envoyé par jmumu
oui c'est exactement cà!!
J'arrive finalement à mettre mes requètes ds une variable, gràce à çà :
<?php
$xh = xslt_create();
$file=fopen("book.xml","r");
$xml=fread($file,16384);
fclose($file);
$file=fopen("books.xsl","r");
$xsl=fread($file,16384);
fclose($file);
$arguments = array(
'/_xml' => $xml,
'/_xsl' => $xsl
);
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
xslt_free($xh);
//print "$result";
?>

Le problème maintenant c qu'il me dit exécution de la requète impossible!! Alors que c'est simplement des insert into!
Bonjour, y a-t-il quelque chose de particulier à installer pour que ce script fonctionne ?
J'obtiens ceci :
Citation:
Fatal error: Call to undefined function xslt_create() in C:\Program Files\EasyPHP 2.0b1\www\essai.php on line 2
Ou encore mieux y aurait-il moyen de faire la même chose en java ?
Merci
Migosh59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2007, 07h15   #7
Membre du Club
 
Inscription : mars 2003
Messages : 68
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 68
Points : 67
Points : 67
Bonjour,

Et bien si j'étais dans ton cas, j'essayerai de lancer X (un nombre choisi) de requête encapsulé par une transaction (cf http://dev.mysql.com/doc/refman/5.0/fr/commit.html
)
Haa oui faut que ta base de données soit compatible INNODB ..sinon ce que je dit est caduque.

ta chaine devra ressembler a ceci :
Code :
1
2
3
4
5
6
START TRANSACTION;
//tes INSERT ICI;
//tes INSERT ICI;
//tes INSERT ICI;
//tes INSERT ICI;
COMMIT;
dans une boucle autant de fois, jusqu'à arriver a la fin de tout t'es INSERT.
Ce qui permet d'envoyer un paquet de requête d'une seule traite, tout en garantissant que celles ci soient bien exécutées.

Et non pas, envoyer une a une tes requêtes.

j'espère t'avoir mit sur la voie
martel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h27.


 
 
 
 
Partenaires

Hébergement Web