Afficher certaines balises xml en fonction de leurs attributs

Afficher certaines balises xml en fonction de leurs attributs - XML/XSL - Programmation

Marsh Posté le 17-01-2009 à 14:46:58    

Bonjour à tous,
j'espère que vous pourrez m'aider car je n'ai rien trouvé la dessus sur internet ou alors j'ai pas le vocabulaire adéquat.
Voila je fais un site de carnets de voyages. J'aimerais créer un xml ou je liste tous mes voyages et ensuite en fonction des pages du site demandé afficher certains carnets en fonctions des pays...C'est à dire sur la page principale afficher le dernier carnet et sur la page japon afficher tous les carnets relatifs au japon. J'ai essayé plusieurs choses avec le code ci dessous mais ca bug...Je ne m'y connais pas trop en php aussi...Donc voila si vous avez compris mon problème et que vous savez comment y répondre, je vous remercie d'avance pour le temps passé à me répondre!
 
Code pour afficher le xml dans ma page php :

Code :
  1. <?php
  2. $fichier_xml = "liste_carnets.xml"; # Placez ici l'adresse du flux
  3. $nombre_limite = 2; # Nombre maximum d'éléments à afficher
  4. # Affichage du Flux
  5. $raw = file_get_contents($fichier_xml);
  6. if ($raw) {
  7.     if(eregi("<item>(.*)</item>",$raw,$rawitems)){
  8.         $items = explode("<item>", $rawitems[0]);
  9.         $nb = count($items);
  10.         $maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;
  11.         for ($i=0;$i<$maximum;$i++) {
  12.             eregi("<pay1>(.*)</pays>",$items[$i+1], $pays);
  13.   eregi("<title>(.*)</title>",$items[$i+1], $title);
  14.             eregi("<image>(.*)</image>",$items[$i+1], $image);
  15.   eregi("<datesvoyage>(.*)</datesvoyage>",$items[$i+1], $datesvoyage);
  16.   eregi("<datecarnet>(.*)</datecarnet>",$items[$i+1], $datecarnet);
  17.   eregi("<description>(.*)</description>",$items[$i+1], $description);
  18.   eregi("<lien>(.*)</lien>",$items[$i+1], $lien);
  19.             echo "<h5>
  20. <strong>Pays : </strong>".$pays[1]."<br />
  21. <strong>Carnet : </strong><a href=\"".$lien[1]."\">".$title[1]."</a><br />
  22. <strong>Dates du voyage : </strong>".$datesvoyage[1]."</h5>
  23. <div id=\"listederniercarnet\"><h5>".$description[1]."</h5>
  24. </div>";
  25.             }
  26.         }
  27.     }
  28. ?>


 
Exemple du xml  

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  <item class="Japon">
  3.      <Pays>Japon</Pays>
  4.   <title>Voyage au japon</title>
  5.   <image><img src="Data/images/Japon.png" width="30" height="30" /></image>
  6.   <datesvoyage>du 24.07.08 au 04.09.08</datesvoyage>
  7.   <datecarnet>20.01.09</datecarnet>
  8.   <description>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis.</description>
  9.   <link></link>
  10.   <pubDate>Sun, 11 Jan 2009 12:00:00 GMT</pubDate>
  11.         </item>
  12.  <item class="Ecosse">
  13.      <Pays>Ecosse</Pays>
  14.   <title>Voyage en ecosse</title>
  15.   <image><img src="Data/images/Ecosse.png" width="30" height="30" /></image>
  16.   <datesvoyage>du 24.07.08 au 04.09.08</datesvoyage>
  17.   <datecarnet>20.01.09</datecarnet>
  18.   <description>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis.</description>
  19.   <link></link>
  20.   <pubDate>Sun, 11 Jan 2009 12:00:00 GMT</pubDate>
  21.         </item>

Reply

Marsh Posté le 17-01-2009 à 14:46:58   

Reply

Marsh Posté le 17-01-2009 à 15:07:02    

Ton "XML" c'est n'importe quoi, c'est même pas du XML ça ressemble à rien, et faut être complètement ravagé pour lire des fichiers XML à coup d'ereg [:delarue5]

 

SimpleXML c'est pas fait pour les chiens [:pingouino]


Message édité par masklinn le 17-01-2009 à 15:07:40

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-01-2009 à 15:09:31    

Ha...dsl j'ai repris ce code php sur internet et qui jusqu'à présent fonctionnait très bien...Il y a vraiment pas moyen d'utiliser un xml pour comme ca ? c'est pas pour faire un flux rss hein...

Reply

Marsh Posté le 17-01-2009 à 15:11:25    

aikiman a écrit :

Il y a vraiment pas moyen d'utiliser un xml pour comme ca ?


Comme je te l'ai déjà dit, ton machin n'est pas du XML. Et le code PHP qui va avec, c'est n'importe quoi.

Message cité 1 fois
Message édité par masklinn le 17-01-2009 à 15:11:43

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-01-2009 à 15:14:01    


c-à-d ?

aikiman a écrit :

Code :
  1. eregi("<pay1>(.*)</pays>",$items[$i+1], $pays);



Ce ne serait pas plutôt :

Code :
  1. eregi("<pays>(.*)</pays>",$items[$i+1], $pays);


("s" et pas "1" )
 
Et +1 avec Masklinn, eregi c'est pas fait pour le XML  [:mlc2]

Reply

Marsh Posté le 17-01-2009 à 15:14:41    

masklinn a écrit :


Comme je te l'ai déjà dit, ton machin n'est pas du XML. Et le code PHP qui va avec, c'est n'importe quoi.


pourquoi ?

Reply

Marsh Posté le 17-01-2009 à 15:17:08    


Parce qu'un document XML ça a un élément racine, son truc n'a pas d'élément racine (il y a 2 éléments "item" sans conteneur)


Message édité par masklinn le 17-01-2009 à 15:17:41

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-01-2009 à 15:18:38    

ah ok...

Reply

Marsh Posté le 17-01-2009 à 15:20:13    

pour pays oui j'avais corrigé c'est en faisant des tests que j'avais changé ca...sinon si il faut que je restructure mon xml je le ferais mais par contre pour simplexml, je vous ai dit que j'y connais rien en php...vous pourriez me donner un script permettant de gérer le nombre d'item affiché et dont on puisse changer la class si ca prends pas trop de temps?

Reply

Marsh Posté le 17-01-2009 à 15:23:33    

Il y a juste à rajouter un conteneur et ca devient un xml valide avec une racine?

Reply

Marsh Posté le 17-01-2009 à 15:23:33   

Reply

Marsh Posté le 17-01-2009 à 19:11:59    

et comme ca c'est pas mieux déjà le xml? Là il y a bien une racine, un CDATA qui permet de voir les accents (même si ca sert pas à ca à la base ca à l'air de le permettre)...
 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rss version="2.0">
  3.    
  4. <channel>
  5.  
  6.         <title>Les derniers carnets d'Enoki</title>
  7.         <link></link>
  8.         <description></description>
  9.  <![CDATA[
  10.  <item>
  11.      <Pays>Japon</Pays>
  12.   <title>Voyage au japon</title>
  13.   <image><img src="Data/images/Japon.png" width="30" height="30" /></image>
  14.   <datesvoyage>du 24.07.08 au 04.09.08</datesvoyage>
  15.   <datecarnet>20.01.09</datecarnet>
  16.   <description>J'ai été surpris de voir que les accents étaient acceptés</description>
  17.   <link></link>
  18.   <pubDate>Sun, 11 Jan 2009 12:00:00 GMT</pubDate>
  19.         </item>
  20.  <item>
  21.      <Pays>Ecosse</Pays>
  22.   <title>Voyage en ecosse</title>
  23.   <image><img src="Data/images/Ecosse.png" width="30" height="30" /></image>
  24.   <datesvoyage>du 24.07.08 au 04.09.08</datesvoyage>
  25.   <datecarnet>20.01.09</datecarnet>
  26.   <description>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis.</description>
  27.   <link></link>
  28.   <pubDate>Sun, 11 Jan 2009 12:00:00 GMT</pubDate>
  29.         </item>
  30.   !"]]>
  31. </channel>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed