Creer du XML a partir d'une base de donnée
Fermé
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
-
19 mai 2010 à 12:24
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 - 25 mai 2010 à 12:42
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 - 25 mai 2010 à 12:42
A voir également:
- Creer du XML a partir d'une base de donnée
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer une liste déroulante excel - Guide
- Créer une adresse hotmail - Guide
16 réponses
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
19 mai 2010 à 12:28
19 mai 2010 à 12:28
Oui c'est possible même si tu ne fait que générer un code et pas créer un fichier XML...
En faite, c'est exactement la même chose que pour faire un tableau HTML ou une liste ordonnée à partir de php, sauf que tu remplace les "<table>, <tr>, <td>" ou "<ul>, <li>" par des "<?xml version="1.0" encoding="ISO-8859-1"?>, <nombalise>, ..."
A+
En faite, c'est exactement la même chose que pour faire un tableau HTML ou une liste ordonnée à partir de php, sauf que tu remplace les "<table>, <tr>, <td>" ou "<ul>, <li>" par des "<?xml version="1.0" encoding="ISO-8859-1"?>, <nombalise>, ..."
A+
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
19 mai 2010 à 14:07
19 mai 2010 à 14:07
Oui voila c'est ça ;)
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
Modifié par apprentiDev le 20/05/2010 à 17:05
Modifié par apprentiDev le 20/05/2010 à 17:05
Bonjour j'ai modifier le code pour que ce soit plus compréhensible. Vu que ce n'est qu'un exemple je ne met qu'une partie des infos à afficher qui est ici les coordonnées Y et X. Voici le code :
<?php
//phpinfo();
include('config.php');
echo'<?xml version="1.0" encoding="UTF-8"?>';
//header("Content-Type: text/xml; charset=utf-8");
echo"Coordonees Y";
$sql2 = "select Y(coord_scene),X(coord_scene) FROM scene sc";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>\n"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>\n";
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>\n";
echo"</marker>\n";
}
?>
Cependant firebug me dit qu'il y a une erreur au niveau du header donc du coup je l'ai mis en commentaire. Cependant j'ai vérifier mais la syntaxe me semble exact.
L'erreur annoncé par firebug est: Warning: Cannot modify header information - headers already sent by (output started at /data/web/sites/xxxxxxxx/zzzzz/php/config.php:1) in /data/web/sites/www.xxxxxxxx/zzzzzz/php/ajax_mysql2.php on line 6
Pouvez-vous m'aider ?
En vous remerciant d'avance,
ApprentiDev
<?php
//phpinfo();
include('config.php');
echo'<?xml version="1.0" encoding="UTF-8"?>';
//header("Content-Type: text/xml; charset=utf-8");
echo"Coordonees Y";
$sql2 = "select Y(coord_scene),X(coord_scene) FROM scene sc";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>\n"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>\n";
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>\n";
echo"</marker>\n";
}
?>
Cependant firebug me dit qu'il y a une erreur au niveau du header donc du coup je l'ai mis en commentaire. Cependant j'ai vérifier mais la syntaxe me semble exact.
L'erreur annoncé par firebug est: Warning: Cannot modify header information - headers already sent by (output started at /data/web/sites/xxxxxxxx/zzzzz/php/config.php:1) in /data/web/sites/www.xxxxxxxx/zzzzzz/php/ajax_mysql2.php on line 6
Pouvez-vous m'aider ?
En vous remerciant d'avance,
ApprentiDev
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
21 mai 2010 à 10:05
21 mai 2010 à 10:05
Bonjour à tous,
Concernant le probléme du header je l'ai en parti reglé. Le probléme c'est que en utilisant firebug il me dit que le header est mal forulé. Vu que c'est un documeny XML génère par PHP j'ai mis echo'header("Content-Type: text/xml; charset=utf-8")';
Firebug me marque mal formé <?xml version="1.0" encoding="UTF-8"?>...ype: text/xml; charset=utf-8")<marker>
C'est comme si pour lui le header est composé des lignes suivantes :
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo'header("Content-Type: text/xml; charset=utf-8")';
echo"<marker>\n"; // La balise racine
Je ne comprend pas d'ou viens l'erreur.
Voici le code complet :
<?php
//phpinfo();
include('config.php');
//echo "cocou dez";
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo'header("Content-Type: text/xml; charset=utf-8")';
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>\n"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>\n"; // balise pour les latitude
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>\n"; //balise pour longitude
echo "<nom>" . $ligne2['id_scene'] . "</nom>\n"; // balise pour le nom
echo "<url>" . $ligne2['trace_scene'] . "</url>\n"; // pour l'url
echo"</marker>\n";
}
?>
En vous remerciant d'avance,
ApprentiDev
Concernant le probléme du header je l'ai en parti reglé. Le probléme c'est que en utilisant firebug il me dit que le header est mal forulé. Vu que c'est un documeny XML génère par PHP j'ai mis echo'header("Content-Type: text/xml; charset=utf-8")';
Firebug me marque mal formé <?xml version="1.0" encoding="UTF-8"?>...ype: text/xml; charset=utf-8")<marker>
C'est comme si pour lui le header est composé des lignes suivantes :
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo'header("Content-Type: text/xml; charset=utf-8")';
echo"<marker>\n"; // La balise racine
Je ne comprend pas d'ou viens l'erreur.
Voici le code complet :
<?php
//phpinfo();
include('config.php');
//echo "cocou dez";
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo'header("Content-Type: text/xml; charset=utf-8")';
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>\n"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>\n"; // balise pour les latitude
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>\n"; //balise pour longitude
echo "<nom>" . $ligne2['id_scene'] . "</nom>\n"; // balise pour le nom
echo "<url>" . $ligne2['trace_scene'] . "</url>\n"; // pour l'url
echo"</marker>\n";
}
?>
En vous remerciant d'avance,
ApprentiDev
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
21 mai 2010 à 10:18
21 mai 2010 à 10:18
echo'header("Content-Type: text/xml; charset=utf-8")';
Ca n'existe aps tout simplement ! Le header est une instruction php, pas du texte à afficher !
header("Content-Type: text/xml; charset=utf-8");
La ça peut marcher :p
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
21 mai 2010 à 10:23
21 mai 2010 à 10:23
Je l'ai fait mais cette fois j'ai l'erreur warning: Cannot modify header information - headers already sent by (output started at /data/web/sites/xxxxxxxxxxx/zzzzzz/php/config.php:1) in /data/web/sites/xxxxxxxx/zzzzz/php/ajax_mysql2.php on line 6
( voir post précedent en fin de message)
Merci de ton aide.
( voir post précedent en fin de message)
Merci de ton aide.
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
21 mai 2010 à 10:24
21 mai 2010 à 10:24
Et dans config.php des fois, tu n'aurait pas de header ?
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
Modifié par apprentiDev le 21/05/2010 à 10:34
Modifié par apprentiDev le 21/05/2010 à 10:34
Voici le code de config.php ( j'ai juste enlevé les informations sensible)
<?php
$base = '';
$user = '';
$pass = '';
$serveur = '';
mysql_connect($serveur,$user,$pass) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
?>
et firebug me met l'erreur suivante :
déclaration XML mal formée
<?xml version=1.0 encoding=UTF-8?>head...Type: text/xml; charset=utf-8)<marker>
alors qu'il n'y a, que le header qui a éte remis corectement
<?php
$base = '';
$user = '';
$pass = '';
$serveur = '';
mysql_connect($serveur,$user,$pass) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
?>
et firebug me met l'erreur suivante :
déclaration XML mal formée
<?xml version=1.0 encoding=UTF-8?>head...Type: text/xml; charset=utf-8)<marker>
alors qu'il n'y a, que le header qui a éte remis corectement
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
21 mai 2010 à 10:50
21 mai 2010 à 10:50
Enlève le header pour voir ?
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
Modifié par apprentiDev le 21/05/2010 à 11:16
Modifié par apprentiDev le 21/05/2010 à 11:16
En enlevant le header j'obtiens:
données incompréhensibles après l'élément de document
[Break on this error] <?xml version="1.0" encoding="UTF-8"?>...197320153</nom><url>201</url></marker>
Or c'est le code pour l'affichage des balises avec les informations à fournir.
Aprés la balise fermante de marker
Il n'y a rien aprés la balise fermante a part le } pour fermer le while et le ?> qui ferme la partie php.
(Je remets le code)
<?php
//phpinfo();
include('config.php');
//echo "cocou dez";
echo'<?xml version="1.0" encoding="UTF-8"?>';
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 10";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>"; // balise pour les latitude
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>"; //balise pour longitude
echo "<nom>" . $ligne2['id_scene'] . "</nom>"; // balise pour le nom
echo "<url>" . $ligne2['trace_scene'] . "</url>"; // pour l'url
echo"</marker>";
}
?>
et si ca peut aider voici le code qui doit lire les informations :
var urlstr = "http://zzzzzzzzzzzzzzr/xxxxxxx/php/ajax_mysql2.php";
alert("ajax javascript");
GDownloadUrl(urlstr, function(data) {
var xml = GXml.parse(data);
alert("Creation marqueur");
var markers = xml.documentElement.getElementsByTagName("marker");
alert("la boucle for");
for (var i = 0; i < 2; i++) {
alert("eolo");
var nom = markers[i].getAttribute("nom");
alert("nom marqueur");
var url = markers[i].getAttribute("url");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("long")));
alert("var point")
var marker = createMarker(point,nom,url);
map.addOverlay(marker);
}
});
données incompréhensibles après l'élément de document
[Break on this error] <?xml version="1.0" encoding="UTF-8"?>...197320153</nom><url>201</url></marker>
Or c'est le code pour l'affichage des balises avec les informations à fournir.
Aprés la balise fermante de marker
Il n'y a rien aprés la balise fermante a part le } pour fermer le while et le ?> qui ferme la partie php.
(Je remets le code)
<?php
//phpinfo();
include('config.php');
//echo "cocou dez";
echo'<?xml version="1.0" encoding="UTF-8"?>';
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 10";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker>"; // La balise racine
echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>"; // balise pour les latitude
echo "<long>" . $ligne2['X(coord_scene)'] . "</long>"; //balise pour longitude
echo "<nom>" . $ligne2['id_scene'] . "</nom>"; // balise pour le nom
echo "<url>" . $ligne2['trace_scene'] . "</url>"; // pour l'url
echo"</marker>";
}
?>
et si ca peut aider voici le code qui doit lire les informations :
var urlstr = "http://zzzzzzzzzzzzzzr/xxxxxxx/php/ajax_mysql2.php";
alert("ajax javascript");
GDownloadUrl(urlstr, function(data) {
var xml = GXml.parse(data);
alert("Creation marqueur");
var markers = xml.documentElement.getElementsByTagName("marker");
alert("la boucle for");
for (var i = 0; i < 2; i++) {
alert("eolo");
var nom = markers[i].getAttribute("nom");
alert("nom marqueur");
var url = markers[i].getAttribute("url");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("long")));
alert("var point")
var marker = createMarker(point,nom,url);
map.addOverlay(marker);
}
});
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
21 mai 2010 à 11:15
21 mai 2010 à 11:15
Essaye ça à tout hasard :
<?php @header("Content-Type: text/xml; charset=utf-8"); // le @ sert a masquer les erreurs, le header se place généralement en début de page sauf cas exceptionnel include('config.php'); echo'<?xml version="1.0" encoding="UTF-8"?>'; $sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 10"; $resultats2 = mysql_query($sql2); while ($ligne2=mysql_fetch_array($resultats2)){ echo"<marker>"; // La balise racine echo "<lat>" . $ligne2['Y(coord_scene)'] . "</lat>"; // balise pour les latitude echo "<long>" . $ligne2['X(coord_scene)'] . "</long>"; //balise pour longitude echo "<nom>" . $ligne2['id_scene'] . "</nom>"; // balise pour le nom echo "<url>" . $ligne2['trace_scene'] . "</url>"; // pour l'url echo"</marker>"; } ?>
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
25 mai 2010 à 10:59
25 mai 2010 à 10:59
Bonjour,
Après modification j'ai réussi à créer un XML qui a cette tête la :
<markers>
<marker> lat= 8.12 long= 8.35nom=1001197620254 url=202
</marker>
</markers>
Le problème c'est qu'il me faudrait un XML plutôt comme ceci :
<markers>
<marker lat="8.12" long="8.35" nom="1001197620254" url="202" />
</markers>
Cependant quand je modifie mon code pour obtenir ce nouveau résultat j'obtient toujours XML mal construit. J'ai pensé que ça venait des guillemets mais j'ai beau les changer de place je trouve la même erreur.
Si vous pouvez m'aider, je vous remercie d'avance,
ApprentiDev
Après modification j'ai réussi à créer un XML qui a cette tête la :
<markers>
<marker> lat= 8.12 long= 8.35nom=1001197620254 url=202
</marker>
</markers>
Le problème c'est qu'il me faudrait un XML plutôt comme ceci :
<markers>
<marker lat="8.12" long="8.35" nom="1001197620254" url="202" />
</markers>
Cependant quand je modifie mon code pour obtenir ce nouveau résultat j'obtient toujours XML mal construit. J'ai pensé que ça venait des guillemets mais j'ai beau les changer de place je trouve la même erreur.
Si vous pouvez m'aider, je vous remercie d'avance,
ApprentiDev
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
25 mai 2010 à 11:09
25 mai 2010 à 11:09
As-tu vérifié ton DTD ?
Peux-tu mettre ton nouveau code ainsi que celui qui te met l'erreur ?
As-tu bien déclaré ton document XML comme il se doit ?
Plus d'infos : https://www.commentcamarche.net/contents/1332-xml-introduction-a-xml
Peux-tu mettre ton nouveau code ainsi que celui qui te met l'erreur ?
As-tu bien déclaré ton document XML comme il se doit ?
Plus d'infos : https://www.commentcamarche.net/contents/1332-xml-introduction-a-xml
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
25 mai 2010 à 11:13
25 mai 2010 à 11:13
Bonjour hack_net,
Je n'ai pas mis de DTD car j'ai compris que ce n'etais pas obligatoire. Si ce n'est pas le cas quand faut-il le mettre ou non?
Voici le nouveau code :
<?php
//phpinfo();
header("Content-Type: text/xml; charset=utf-8");
include('config.php');
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo "<markers>";
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 1";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker lat= ". $ligne2['Y(coord_scene)'] .
" long= ". $ligne2['X(coord_scene)'] .
"nom=" . $ligne2['id_scene'] .
" url=" . $ligne2['trace_scene'] . "
/>";
}
echo "</markers>";
?>
Je n'ai pas mis de DTD car j'ai compris que ce n'etais pas obligatoire. Si ce n'est pas le cas quand faut-il le mettre ou non?
Voici le nouveau code :
<?php
//phpinfo();
header("Content-Type: text/xml; charset=utf-8");
include('config.php');
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo "<markers>";
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 1";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo"<marker lat= ". $ligne2['Y(coord_scene)'] .
" long= ". $ligne2['X(coord_scene)'] .
"nom=" . $ligne2['id_scene'] .
" url=" . $ligne2['trace_scene'] . "
/>";
}
echo "</markers>";
?>
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
25 mai 2010 à 11:47
25 mai 2010 à 11:47
Le code a l'air correct...
En effet, le DTD n'est pas obligatoire, cependant, il est vivement recommander ! A quoi sert-il ? Il sert a définir au navigateur de quel "type" il est (quel version du langage, ...).
Bref, si dans une version de XML les balise de type <balise argument1="contenu" /> est interdit, et que tu ne spécifie pas de quel type est ton XML, il peut y avoir des erreur de ce style... Je ne connais pas bien le XML pour le moment donc je ne pourrait pas te dire si je viens de dire une bêtise, mais en tout cas, il est bien plus préférable de mettre les DTD...
A+
En effet, le DTD n'est pas obligatoire, cependant, il est vivement recommander ! A quoi sert-il ? Il sert a définir au navigateur de quel "type" il est (quel version du langage, ...).
Bref, si dans une version de XML les balise de type <balise argument1="contenu" /> est interdit, et que tu ne spécifie pas de quel type est ton XML, il peut y avoir des erreur de ce style... Je ne connais pas bien le XML pour le moment donc je ne pourrait pas te dire si je viens de dire une bêtise, mais en tout cas, il est bien plus préférable de mettre les DTD...
A+
apprentiDev
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
Modifié par apprentiDev le 25/05/2010 à 11:54
Modifié par apprentiDev le 25/05/2010 à 11:54
Merci de tes informations.
Bon si le code te semble corect c'est toujours qu'il ne doit pas y avoir de grosse faute.
Pour le DTD tu le construit ou dans le code? Je sais comment on le construit mais pas ou est ce qu'on le met dans le code.
Je te remercie d'avoir regardé le code.
Bon si le code te semble corect c'est toujours qu'il ne doit pas y avoir de grosse faute.
Pour le DTD tu le construit ou dans le code? Je sais comment on le construit mais pas ou est ce qu'on le met dans le code.
Je te remercie d'avoir regardé le code.
hack_net
Messages postés
783
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
5 juin 2014
51
25 mai 2010 à 12:42
25 mai 2010 à 12:42
Quand tu regardes le lien plus haut que je t'ai donné, et que tu continus dans le chapitre, tu arrives à :
https://www.commentcamarche.net/contents/1334-structure-d-un-document-xml
puis
https://www.commentcamarche.net/contents/1330-presentation-des-dtd
etc...
Voilà ;)
A+
https://www.commentcamarche.net/contents/1334-structure-d-un-document-xml
puis
https://www.commentcamarche.net/contents/1330-presentation-des-dtd
etc...
Voilà ;)
A+
19 mai 2010 à 13:52
echo <nombalise>,
requete SQL pour que les éléments correspondant à nom balise s'affiche
echo <nombalise2>,
requête SQL pour que l'élément correspondant a nom balise 2 s'affiche
echo </nombalise2>,
echo </nombalise>,
Merci de ta réponse.