PHP 5 et XML externe [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
Salut à tous,

J'ai fait une recherche dans le foru, avant de poster, mais j'avoue que 'ai pas compris grand chose...

Dom et compagnie, j'y connais rien, d'où le sujet sous débutants... lol

J'explique,

- j'ai un fichier "content.xml"

- voici sa structure:
<content><contenu id="accueil"></contenu><contenu id="prestations"></contenu><contenu id="conditions"></contenu></content>
$prestations = <contenu id="prestations">;
$conditions = <contenu id="conditions">;

- Le but étant de pouvoir utiliser ces variables plus tard pour les modifier si besoin est et enregister ces nouvelles variables dans le fichier XML en question.

Merci pour votre aide et éventuelles suggestions.

elDiablo
</contenu></contenu>

23 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Je crois qu'il te maque une ou deux notions de base sur les fonctions. Tu ne peux pas déclarer "avant" la fonction.
Soit tu déclares à l'intérieur, soit tu passes la variable en paramètre, soit tu en fais une variable globale.
à+
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
la structure que tu nous montre n'est en aucun cas du xml !
Le XML c'est ça :

<content>
    
          blablablabla
    
    
          blabla
    
</content>

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

Oulà, mon message ne s'est pas affiché comme je le voulais, désolé...

ma structure est

<content>
<contenu id="accueil">
</contenu>
<contenu id="prestations">
</contenu>
<contenu id="conditions">
</content>
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

Donc,

mes variables:
$accueil -> doit contenir les données de la balise <contenu id="accueil">
$prestations -> doit contenir <contenu id="prestaions">
$conditions -> doit contenir <contenu id="conditions">

tout en sachant que dans ces balises il y a du texte avec des retours à la ligne, comment faire pour récupérer ce texte dans une variable php avec le même formatage du texte?

et ensuite, comment faire pour enregister du texte formaté sous la même balise?
-> avec les fonction de fichier ça irait? genre fwrite() ?

Merci encore
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
je ne sais pas mais pour récupéré des infos dans un fichier xml je te conseil d'utiliser l'extension DomDocument !

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

ok, vais voir la doc et tester tout ça, merci encore
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
de rien !

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

va plutôt apprendre http://fr3.php.net/manual/fr/book.simplexml.php

à+
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
Salut Evangun,

C'est vrai qu'il y a l'extension simple_xml mais on m'a dit que le l'extension DomDocument était mieux et qu'elle offrait plus de possibilité !

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello, c'est sûr qu'elle est plus puissante mais elle est aussi plus gourmande en ressources. Pour des utilisations simples, mieux vaut rester sur SimpleXML.
à+
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
ok, désolé de t'avoir contredit, c'est juste que je suis en train de faire un chat en php en utilisant l'extension DomDocument...

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
@Nicomiville => je t'ai déjà dit que le gars qui t'avait dit que siumplexml était déprécié et que DOMDocument était mieux t'avait raconté n'importe quoi. Ces 2 extensions ne servent pas àla même chose. Lorsqu'il s'agit de simplement parcourir et lire un flux XML? autant utiliser simplexml, très simple et peu gourmande. Ceux qui te disent qu'il faut tjrs utiliser DOMDocument sont des gars qui se la pètent en ne voulant utiliser que ce qui est le plus difficile à utiliser juste histoire de monter qu'on peut le faire.
C'est idiot : à chaque contexte correspond une bonne solution. dans ce contexte, simplexml est une très bonne solution, bien meilleure que DOMDocument.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
oui, c'est ce que j'ai dis dans mon dernier message il me semble, le même "gas" ma dit q'il aimais faire des truc complexe et qu'il me conseillait d'apprendre le c++ et d'utiliser === au lieu de == en php !

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Il a raison pour ===, même si là aisso ça dépend globalement du contexte.
Quant au C++, c'est un langage...oui...pourquoi ne pas l'apprendre en effet. Mais encore faut-il savoir pourquoi.
Faire des trucs "xomplexes" ne veut pas dire bien programmer. ON programme bien quand on utilise ce qu'il faut, quand il le faut...on est un mauvais programmeur quand on met 200 lignes avec un temps d'exécution de 2s à faire ce que l'on pourrait faire en 20 lignes avec un temps d'exécution à 0,2s...

Apprends à faire la part des choses dans ce que l'on te dit. C'est vital si tu veux progresser.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
ok, on m'a aussi dit que le c++ était bien pour faire des système d'exploitation et que l'on pouvait utiliser l'ASM pour enrichir nos fonction c++ et que si je programmais en asm j'était un dieu lol !
Enfin bref on s'égare la...

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

Salut les gars,

bon, j'ai feuilleté la doc et tout, fais quelques exercices pour tester, mais je coince là...

voici ma fonction:

function get_data ($id) {
if (file_exists ($xml_file)) {
$xml = simplexml_load_file ($xml_file);
$contenu = $xml->children();
foreach ($xml->children as $id) {
$id = $arg->getName();
$content = $content[$id];
}
return $content;
}
}

seulement, quand je fais echo get_data('accueil');
rien ne se passe... l'un de vous pourrait m'expliquer pourquoi et où est mon erreur?

merci beaucoup
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
function get_data ($id) {

    if (file_exists ($xml_file)) {
 
    }
}

$xml_file n'est pas défini dans ta fonction...

à+
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

encore désolé de t'embêter avec mon petit problème probablement dérisoire, mais...

en fait elle est définie avant ma fonction.
je viens d'essayer de l'inclure dans ma fonction, mais le résultat reste le même en fait...

j'y comprends plus rien


$xml_file = "content.xml";

function get_data ($id) {
if (file_exists ($xml_file)) {
$xml = simplexml_load_file ($xml_file);
$contenu = $xml->children();
foreach ($xml->children as $id) {
$id = $arg->getName();
$content = $content['$id'];
}
return $content;
}
}

echo get_data('prestations');
Messages postés
9
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008

Salut Evangun,

Encore merci pour le temps que tu m'as accordé.
Finalement, j'en ai parlé avec un ami, qui m'a dit que je pouvais faire plus simple sans que cela change mon résultat final (dans flash en fait, qui importe mon fichier XML).

Il m'a suffit de renommer mes champs en gardant le même attribut.

Du coup, et je suis étonné de la simplicité de la chose, cela me donne ceci:
$xml_file = "content.xml";
if (file_exists($xml_file)) {
$xml = simplexml_load_file ($xml_file);
$accueil = utf8_decode ($xml->accueil);
$prestations = utf8_decode ($xml->prestations);
$conditions = utf8_decode ($xml->conditions);
}

echo $prestations;
echo "
";
echo $conditions;
echo "
";
echo $accueil;

Et lorsque j'affiche, mes données sont bien là.

Seulement, et oui, je me trouve confronté à un autre petit soucis...
Il se trouve que mes données contiennent du texte avec des retours à la ligne.
Flash. lui il les charge tel quel et mon texte reste formaté avec mes retours à la ligne, dans que php non... :-(

Ma question est donc la suivante, existe-t-il une fontction qui me permettre de récupèrer mon texte avec ses retours à la ligne?

Encore merci pour votre aide précieuse

elDiablo
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

nl2br() à priori, mais...faut voir comment est formaté ton xml.