Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 07/12/2010, 00h30   #1
Membre du Club
 
Inscription : mars 2008
Messages : 281
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 281
Points : 47
Points : 47
Par défaut générer un fichier xml avec des caratéres speciaux via php

Bonsoir !

Je créer dynamiquement un fichier XML en PHP depuis une base de données après l'ajout du donnée.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
<?php
*
*
*
// insertion donnée
include 'connexion.php';
mysql_query("SET NAMES 'UTF8'");
 
 
mysql_query("insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$datedebut', '$datefin')") or die("erreur insertion donner". mysql_error());
 
/*$req1=mysql_query("insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$dated','$dated')") or die("erreur l'ajout des donnees". mysql_error());*/
 
  //$sql="insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$dated','$dated')";
//*********
echo "données ajouter avec succès";
//creation fichier xml
mysql_query("SET NAMES 'UTF8'");
 
$req1=mysql_query("SELECT num_art,auteur, nom_art, titre_art, description_art, DATE_FORMAT(date_d_art , '%d/%m/%Y' ) as date_d_art, DATE_FORMAT(date_f_art , '%d/%m/%Y' ) as date_f_art from articles ORDER BY num_art DESC") or die("erreur l'ajout des donnees". mysql_error());
 
$xml = '<?xml version="1.0" encoding="UTF-8"?>'.'<root>';
$xml .= '<articles>';
 
 while ($l = mysql_fetch_array($req1)) {
 
$xml .= '<num_art>'.$l['num_art'].'</num_art>';
$xml .= '<auteur>'.$l['auteur'].'</auteur>';
$xml .= '<nom_art>'.$l['nom_art'].'</nom_art>';
$xml.='<titre_art>'.$l['titre_art'].'</titre_art>';
$xml.='<description_art>'.$l['description_art'].'</description_art>';
$xml.='<date_d_art>'.$l['date_d_art'].'</date_d_art>';
$xml.='<date_f_art>'.$l['date_f_art'].'</date_f_art>';
 
 
 }
$xml .= '</articles>';
 
 $xml .= '</root>';
 
 $fp = fopen("xml/articles/articles.xml", 'w+');
 //print('c est le :'.$datet.'<br/>');
 fputs($fp, $xml);
 fclose($fp);
*
*
*
?>
ceci va me créer un fichier XML nommé articles.xml, tous passe bien , mais s'il y a de contenu qui contient des caractères spéciaux là ou ça me cause de problème au niveau de l’exploitation de mon fichier

exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<root>
<articles>
<num_art>8</num_art>
<auteur></auteur>
<nom_art>&#1591;&#1576;&#1602; &#1575;&#1604;&#1610;&#1608;&#1605;</nom_art>
<titre_art>&#1603;&#1585;&#1575;&#1578;&#1575;&#1606; &#1575;&#1604;&#1583;&#1610;&#1603; &#1575;&#1604;&#1585;&#1608;&#1605;&#1610; &#1576;&#1575;&#1604;&#1582;&#1590;&#1585;</titre_art>
<description_art>< &#1581;&#1576;&#1578;&#1575; &#1580;&#1586;&#1585; ></description_art>
<date_d_art>05/12/2010</date_d_art>
<date_f_art>06/12/2010</date_f_art>
</articles>
</root>
y a-t-il une solution pour forcer l'ajout des caractères spéciaux ?
sooprano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h36   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
pourquoi ne pas utiliser des outils adapter comme SimpleXML, DOMDocument ou XMLWriter (c'est pas ce qui manque en lib xml dans PHP)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 23h32   #3
Membre du Club
 
Inscription : mars 2008
Messages : 281
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 281
Points : 47
Points : 47
Citation:
Envoyé par stealth35 Voir le message
pourquoi ne pas utiliser des outils adapter comme SimpleXML, DOMDocument ou XMLWriter (c'est pas ce qui manque en lib xml dans PHP)
je veux forcer l'ajout du caractère spéciaux dans fichier XML, ainsi apres je vais exploiter ses données via AJAX pour l'afficher.
si le fichier xml contient un caractère le mouvement de récupération ne marche plus
sooprano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 00h45   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Citation:
exemple :
Où sont les caractères spéciaux pour toi dans l'exemple que tu as donné ?
Serait-ce le < suivant <description_art> et le > précédant </description_art> ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h37   #5
Membre du Club
 
Inscription : mars 2008
Messages : 281
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 281
Points : 47
Points : 47
Citation:
Envoyé par Séb. Voir le message
Où sont les caractères spéciaux pour toi dans l'exemple que tu as donné ?
Serait-ce le < suivant <description_art> et le > précédant </description_art> ?
ok exemple
Code :
1
2
<description_art>je suis << caratere speciaux >></description_art>
sooprano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h18   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Donc là pour toi les caractères spéciaux sont << et >> ?
En XML < et > doivent être échappés :

Citation:
The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings " &amp; " and " &lt; " respectively. The right angle bracket (>) may be represented using the string " &gt; ", and MUST, for compatibility, be escaped using either " &gt; " or a character reference when it appears in the string " ]]> " in content, when that string is not marking the end of a CDATA section.
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 00h55   #7
Membre du Club
 
Inscription : mars 2008
Messages : 281
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 281
Points : 47
Points : 47
Citation:
Envoyé par Séb. Voir le message
Donc là pour toi les caractères spéciaux sont << et >> ?
En XML < et > doivent être échappés :



http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
Oui mais si je veux forcer l'ajout presque tous caractères spéciaux ça dépend pas
Citation:
>
existe pas une solution pour ça

est ce que CDATA peut résoudre mon problème ainsi j'utilise unicode UTF-8
sooprano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 00h57   #8
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Citation:
wi mais si je veux forcer l'ajout presque tous caractères speciaux ça dépend pas
Pas compris.

Citation:
existe pas une solution pour ça
&gt; / htmlspecialchars( ) si nécessaire.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 15h03   #9
Membre du Club
 
Inscription : mars 2008
Messages : 281
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 281
Points : 47
Points : 47
Citation:
Envoyé par Séb. Voir le message
Pas compris.


&gt; / htmlspecialchars( ) si nécessaire.
ah je vois, malheureusement je dois forcer l'ajout du caractères spéciales y a t'il pas une solution alors ?
sooprano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 15h11   #10
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Je ne comprends pas ton problème.

Si dans ton XML tu mets &lt; plus tard il sera considéré en tant que < par la lib XML traitant le fichier.

Autrement dit, pour qu'une chaîne soit valide XML il suffit de faire :

Code :
1
2
$string = '124 < 324 == FALSE' ;
$xml = '<op>' . htmlspecialchars($string) . '</op>' ;
Ceci est fait automatiquement par les libs telles DOM ou SimpleXML, plus besoin de htmlspecialchars( ), ex. :

Code :
$node->addChild('op', $string) ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement 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 19h06.


 
 
 
 
Partenaires

Hébergement Web