Envoyé par : Utilisateur anonyme
Date : 10/06/2005 09:17
Je n'en peu plus ... certains d'entre vous on déjas éssayé de m'aider mais j'en suis toujours au même point :
je dois créer une appli web (php/mysql) dans l'aquel je dois générer une liste provenant d'une table mysql. donc avec les info que l'on ma données je suis partis en direction d'un fichier rdf créé dynamiquement par php. mais je n'arrive a rien ! pire encore sur le site je test la création de fichier rdf en ligne exemple_rdf2 et la pas de pb affichage du xul est parfais et je n'ai pas de méssage d'érreur. je fais donc un copier coller des scripts en me disant que quitte a ne pas comprendre ce que je fais je pourrais le voir tourner. et bien non sur mon poste j'ai une érreur
un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect
pourquoi une appli qui vient d'internet tourne sans pb sur mon poste alors qu'un copier coller du code en local ne marche pas ? franchement je ne sais plus ...
Envoyé par : Julien Appert
Date : 10/06/2005 09:25
je dirais que c'est parce que le script se connecte à une page se trouvant sur un autre domaine. Si le fichier php était sur ton serveur local je pense que tu n'aurais pas ce message.
Envoyé par : Utilisateur anonyme
Date : 10/06/2005 09:46
Ben non le script ne fait aucune référence a une page internet exterieur et je suis bein en local, j'ai même modifié la ligne : loadTree('tree', 'http://127.0.0.1/test/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP par : loadTree('tree', 'http://localhost/tools/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP pour qu'il colle a mon serveur. j'ai une arbo :
root |-xxxx |-xxxx |-tools | |-create_rdf.php | |-create_rdf.xul
et j'appel http://localhost/tools/create_rdf.xul ...
voici le code des fichiers php et xul mais a par la ligne de chemin du serveur il est exactement comme celui du site ...
create_rdf.xul :
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="sample_win" onload="init()" height="200 px" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript"><![CDATA[ var tree; var out; var datasource; var Observer = { onBeginLoad: function(aSink) { out.label = 'Begin refresh';}, onInterrupt: function(aSink) { out.label = 'Refresh interrupted!';}, onResume: function(aSink) { out.label = 'Refresh resume!';}, onEndLoad: function(aSink) { tree.builder.rebuild(); out.label = 'Refresh done'; }, onError: function(aSink, aStatus, aErrorMsg) { alert('Error! ' + aErrorMsg); } }; function init() { loadTree('tree', 'http://localhost/tools/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP out = document.getElementById("out"); } function loadTree(treeId, dsUrl) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); datasource = RDF.GetDataSource(dsUrl); var tree = document.getElementById(treeId); var remote = datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); // Mozilla utilise un cache pour les sources de données. Si la source de données // est déja chargée (propriété loaded à true), on peut l'ajouter directement // à la base de données de notre élément et on lui demande de se reconstruire. // Si la source de données n'est pas dans le cache on lui attache d'abord un objet // Observer pour reconstruire l'élément quand la source de donnée sera complétement // chargée (mode asynchrone). if (remote.loaded) { tree.database.AddDataSource(datasource); tree.builder.rebuild(); } else { var sink = datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); tree.database.AddDataSource(datasource); } } catch(e) { alert(e); } } function reloadTree(treeId) { try { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); var sink = datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); sink.addXMLSinkObserver(Observer); datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Refresh(false); tree = document.getElementById(treeId); } catch(e) { alert(e); } } ]]></script> <button label="Refresh" oncommand="reloadTree('tree')" /> <tree id="tree" flex="1" flags="dont-build-content" ref="urn:data:row" datasources="rdf:null"> <treecols> <treecol id="id" label="Id" primary="true" flex="1" class="sortDirectionIndicator" sortActive="true" sortDirection="ascending" sort="rdf:http://dummy/rdf#id"/> <splitter class="tree-splitter"/> <treecol id="name" label="Name" flex="1" class="sortDirectionIndicator" sortActive="false" sortDirection="ascending" sort="rdf:http://dummy/rdf#name"/> </treecols> <template> <treechildren> <treeitem uri="rdf:*"> <treerow> <treecell label="rdf:http://dummy/rdf#id"/> <treecell label="rdf:http://dummy/rdf#name"/> </treerow> </treeitem> </treechildren> </template> </tree> <statusbar flex="1"><statusbarpanel flex="1" id="out" label=""/></statusbar> </window>
create_rdf.php :
<?php define('EOL', "\r\n");
function XML_entities($str) { return preg_replace(array("'&'", "'\"'"), array('&', '"'), $str); }
// Connexion à la base de données $cnx=mysql_connect('localhost', 'root', ''); mysql_select_db('test',$cnx);
// execution de la requète SQL
$result = mysql_query('SELECT * FROM sample_tbl',$cnx);
// on spécifie au navigateur le type mime des données qu'on va lui envoyé. Ici, c'est du RDF, dont text/xml.
header('Content-type: text/xml');
// on commence à lui envoyer le début du fichier RDF
echo('<?xml version="1.0" encoding="ISO-8859-1"?>'.EOL); echo('<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'.EOL); echo(' xmlns:row="http://dummy/rdf#">'.EOL);
echo('<RDF:Bag about="urn:data:row">'.EOL);
// boucle de récupération des enregistrements de la requête et génération du contenu RDF while ($row = mysql_fetch_assoc($result)) { echo('<RDF:li>'.EOL); echo('<RDF:Description>'); foreach ($row as $field_name => $field_value) { echo('<row:'.$field_name.'>'.XML_entities($field_value).'</row:'.$field_name.'>'); } echo('</RDF:Description>'.EOL); echo('</RDF:li>'.EOL); }
// fin du fichier RDF echo('</RDF:Bag>'.EOL); echo('</RDF:RDF>'.EOL);
// fermeture du curseur et de la connexion mysql_free_result($result); mysql_close($cnx); ?>
Envoyé par : Julien Appert
Date : 10/06/2005 10:05
es-tu allé mettre, dans about:config, le signed.applets.codebase_principal_support sur true ?
Envoyé par : laurentj
Date : 10/06/2005 11:32
Julien : y a pas besoin de ça dans des versions récentes, comme il est précisé en bas de la page /wiki/ApplisWeb/ExemplePhpRdf.
Gimlith : tu teste sur le site la version pour Firefox > 0.8, mais tu as installé en locale la version pour Firefox < 0.8 !
Si tu regarde bien le source de l'exemple 2, tu remarqueras que le code javascript n'est plus du tout le même, et beaucoup plus simple..
Je vais mettre à jour la page /wiki/ApplisWeb/ExemplePhpRdf...
Envoyé par : Julien Appert
Date : 10/06/2005 11:51
Il me semblait bien aussi que le code n'était pas le même...
Julien : y a pas besoin de ça dans des versions récentes, comme il est précisé en bas de la page /wiki/ApplisWeb/ExemplePhpRdf.
Arf, je ne m'en étais même pas rendu compte. Faut que j'arrête de le faire automatiquement à chaque installation alors ;o)
Envoyé par : Utilisateur anonyme
Date : 10/06/2005 12:43
Ca marche ... je ne m'explique toujours pas comment d'un serveur a un autre cette partie de la config doit être a true mais ca marche (j'ai même repiqué le bouton ajouté du site et j'ai ecris un bout de code qui me rentre bien de nouveaux noms dans la bdd mysql) donc si quelqu'un sait expliquer pourquoi sur xulfr.org ca marche en ayant signed.applets.codebase_principal_support a false alors qu'en local il me le faut a true ce serait wondertop car je vais avoir du mal a faire configurer cette options a tous mes postes déportés (en espérant que je finisse cette appli un jour bien entendus)
Envoyé par : laurentj
Date : 10/06/2005 12:49
car je vais avoir du mal a faire configurer cette options a tous mes postes déportés
Non, il ne faut surtout pas ! C'est un trou de sécurité !
Je suis en train de retoucher les exemples. Y a des trucs qui ne fonctionnent plus chez moi (la mise à jour : firefox reprend toujours le rdf mis en cache, et je n'arrive plus à ajouter des items :-/ ).
Envoyé par : Utilisateur anonyme
Date : 10/06/2005 12:54
désolé la réponse n'est pas dans l'ordre cela dit éffectivement ce n'était pas claire du coté des sources différentes. maintenant ca roule et sans aucun pb et comme je suis passé par l'affichage des sources de a page du site j'en est profité pour ecrire le bout de code pour ajouter un nom et il fonctionne. si avec un exemple comme celui le je ne m'en sort pas !!!
Merci beaucoup et que le xul soit avec vous (and the xul be with you).
Envoyé par : laurentj
Date : 10/06/2005 14:42
Ca y est, j'ai mis à jour les exemples et la page. Tout semble fonctionner correctement.
Dans l'exemple avançé, j'ai rajouté un bouton "supprimer".
Le tout est dans un zip téléchargeable.
revoir donc la page /wiki/SourceDeDonneesRdf
a+
Envoyé par : Lapinator
Date : 10/06/2005 16:05
Je profite en passant que le W3C a crée un RDF validator http://www.w3.org/RDF/Validator/, qui permet de testé les RDFs s'il sont correct :)
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.