Question ultra basique : relation php/mysql avec xml

Eléphant du PHP | 95 Messages

20 juil. 2005, 12:45

Bonjour,

Je sais que ma question va paraître très bête à certain d'entre vous...
- J'ai une base mysql avec des adresses de centre commerciaux
- J'ai un site en php qui permet de faire des recherche sur cette base

Je souhaite proposer à l'utilisateur une carte de france permettant de localiser ces sites et de consulter leur adresse en cliquant sur des points de la carte.

Ma carte provient d'une source flash et nécessite un fichier xml provenant de données de la base...

Dans ma base :
id_centre
nom
adresse1
adresse2
adresse3
CP
Ville
Contact
Mail
Tel

Dans mon fichier XML, il faut que je retouve ces mêmes données formatée XML. Comment faire ? Je n'ai jamais fait ça auparavant et je suis assez débutante en PHP...

Merci par avance de vos réponses.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 juil. 2005, 12:53

si tu souhaites récupérer les données de ta base et les insérer dans un fichier au format XML, tu peux suivre ces étapes :

1 - connexion à la base, récupération des données
2 - création dun fichier .xml
3 - boucle sur chaque ligne de résultat
4 -> pour chaque ligne : écriture des données formatées en XML (avec les balises donc) dans le fichier
5 -> retour au 3
6 - fermeture du fichier

regarde du coté des Fonction de manipulations de fichiers, notamment fopen(), fwrite() et fclose()

Eléphant du PHP | 95 Messages

21 juil. 2005, 15:51

J'ai avancé sur mon problème mais étant totalement néophyte, j'aurais encore besoin d'un peu d'aide...

J'ai trouvé un excellent article sur mon problème à l'adresse suivante :
Voir ici (c'est la page de cache de google car la page elle même a un probleme)

J'ai donc fait mon code moi-même à partir de ce tuto :
<?php require_once('../Connections/connRecherche.php'); ?>
<?php
mysql_select_db($database_connRecherche, $connRecherche);
$query_Recordset1 = "SELECT * FROM site";
$Recordset1 = mysql_query($query_Recordset1, $connRecherche) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

if ($totalRows_Recordset1 != 0) { 
$file= fopen("results.xml", "w"); 
$_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n"; 
$_xml .="<annuaire>\r\n"; 
while ($totalRows_Recordset1 = mysql_fetch_array($Recordset1)) { 
if ($totalRows_Recordset1 ["id_site"]) { 
$_xml .="\t<id_site id=\"" . $totalRows_Recordset1["id_site"] . "\">\r\n"; 
$_xml .="\t\t<denomination>" . $totalRows_Recordset1["denomination"] . "</denomination>\r\n";
$_xml .="\t\t<id_centre>" . $totalRows_Recordset1["id_centre"] . "</id_centre>\r\n";
$_xml .="\t\t<CodePostal>" . $totalRows_Recordset1["codePostal"] . "</CodePostal> ";
$_xml .="\t\t<ville>" . $totalRows_Recordset1["ville"] . "</ville>\r\n";
$_xml .="\t\t<NomContact>" . $totalRows_Recordset1["nomContact"] . "</NomContact>\r\n";
$_xml .="\t</id_site>\r\n"; 
} 
else { 
$_xml .="\t<id_site title=\"Plus rien dans la base\">\r\n";
$_xml .="\t\t<denomination>Aucune</denomination>\r\n"; 
$_xml .="\t</id_site>\r\n"; 
} 
} 
$_xml .="</annuaire>"; 
fwrite($file, $_xml); 
fclose($file); 
echo "XML has been written.  <a href=\"results.xml\">View the XML.</a>"; 
} 
else { 
echo "No Records found"; 
} 

?>
Il me reste un tout petit problème : lorsque j'exécute la page, j'ai le message d'erreur :

Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource

Or ce caractère qui ne semble pas plaire, c'est le é contenu dans le mot "Département".
Comment faire ? (sans interdire la saisie des caractères accentués dans la base !).

Merci à tous
Je veux apprendre !!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 juil. 2005, 15:57

remplace ces caractères par leur équivalent HTML en utilisant htmlEntities() sur tes chaines

Eléphant du PHP | 95 Messages

20 mars 2007, 15:46

Voilà une réponse qui vient bien tard mais qui pourra servir au plus grand nombre vu le nombre de fois où mon topic a été vu : le problème venait de ce que le fichier était enregistré en UFT-8.

Tout simplement !!!
Je veux apprendre !!