PHP 5 et XML externe

Résolu
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008 - 25 mai 2008 à 12:23
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008 - 29 mai 2008 à 00:56
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

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2008 à 12:59
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.
à+
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 12:36
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é !
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
25 mai 2008 à 13:00
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>
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
25 mai 2008 à 13:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 13:18
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é !
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
25 mai 2008 à 13:28
ok, vais voir la doc et tester tout ça, merci encore
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 13:59
de rien !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
25 mai 2008 à 14:09
Hello,

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

à+
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 14:12
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é !
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
25 mai 2008 à 14:46
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.
à+
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 14:48
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é !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 mai 2008 à 15:01
@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.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 15:13
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é !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 mai 2008 à 15:18
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.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 16:46
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é !
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
25 mai 2008 à 21:43
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
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
25 mai 2008 à 22:04
function get_data ($id) {

    if (file_exists ($xml_file)) {
 
    }
}

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

à+
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
26 mai 2008 à 00:25
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');
0
elDiablo81 Messages postés 9 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 19:55
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
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 mai 2008 à 20:09
Hello,

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