IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Gestion d'une liste avec xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Points : 151
    Points
    151
    Par défaut [SimpleXML] Gestion d'une liste avec xml
    Bonsoir,
    Mon problème est le suivant :

    Pour un site web je dois réaliser une page concernant des articles de presse.
    Je n'ai aucune base de données, c'est pour cela que j'ai pensé à xml.

    En gros, mes articles seront regroupés par date de parution (le mois), exemple Avril 2008, Mars 2008 etc..

    J'ai pensé à un fichier xml de cette forme là :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <medialist>
       <date value="Avril 2008">
          <article>lien vers l\'article</article>
          <article>lien vers l\'article</article>
          <article>lien vers l\'article</article>
       </date>
       <date value="Mars 2008">
          <article>lien vers l\'article</article>
          <article>lien vers l\'article</article>
          <article>lien vers l\'article</article>
       </date>
    </medialist>
    Pouvez vous me dire si c'est une bonne structure de base. Toutes vos idées sont bonne à prendre.

    Ensuite, comment modifier ce xml dans une partie d'administration pour permettre l'ajout d'un article, d'une date etc....

    Merci d'avance pour vos réponses

  2. #2
    Membre actif
    Avatar de maxime.ohayon
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 113
    Points : 226
    Points
    226
    Par défaut
    Salut,

    Ta structure de base semble interessante, et pour la manipulation de fichier Xml tu peux utiliser SimpleXml.

    Bye
    Faut faire l'ane pour avoir de l'avoine

  3. #3
    Membre habitué
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Points : 151
    Points
    151
    Par défaut
    Après plusieurs essai, la manipulation de SimpleXML est relativement simple.
    Cependant je me permet de soulever un autre problème.
    Voici donc mon fichier xml de base que j'ai décider de retenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <medialist>
       <date value="Avril 2008">
          <article href="leLien" target="laCible" texte="leTexte" />
          <article href="leLien" target="laCible" texte="leTexte" />
          <article href="leLien" target="laCible" texte="leTexte" />
       </date>
       <date value="Mars 2008">
          <article href="leLien" target="laCible" texte="leTexte" />
          <article href="leLien" target="laCible" texte="leTexte" />
          <article href="leLien" target="laCible" texte="leTexte" />
       </date>
    </medialist>
    Je m'assure bien sur que lorsque j'ajoute un noeud date la valeur de 'value' n'existe pas déja.

    Mais lors de l'ajout d'un article, j'ai besoin de récupérer le 'parent' du nouvel article.
    Je pense parcourir le fichier xml, récupérer toutes les dates existantes et les mettre dans un select.
    Ensuite lors de la soumission du formulaire, je voudrais récupérer le noeud correspondant.
    Exemple (avec le fichier de base) :
    Dans mon formulaire, je sélectionne "Avril 2008". Lors de la soumission du formulaire, je récupère donc en POST la chaine "Avril 2008".
    Comment faire pour récupérer directement le noeud correspondant à la date pour ensuite faire un addChild('article') ?

    Merci d'avance

  4. #4
    Membre actif
    Avatar de maxime.ohayon
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 113
    Points : 226
    Points
    226
    Par défaut
    Alors pour ajouter un noeud de type article il faut que tu parcours tout le fichier et que tu mets toutes les dates dans le select mais la technique consiste à passer l'indice en post.

    Soit ton fichier XML test.xml
    <medialist>
    <date value="Avril 2008">
    <article href="leLien" target="laCible" texte="leTexte" />
    <article href="leLien" target="laCible" texte="leTexte" />
    <article href="leLien" target="laCible" texte="leTexte" />
    </date>
    <date value="Mars 2008">
    <article href="leLien" target="laCible" texte="leTexte" />
    <article href="leLien" target="laCible" texte="leTexte" />
    <article href="leLien" target="laCible" texte="leTexte" />
    </date>
    </medialist>

    imagine ton arbre (xml) comme un tableau à plusieurs dimensions.
    tu construis ton select comme cela

    <select .....>
    <option value="0">Avril 2008</option>
    <option value="1">Mars 2008</option>
    .........
    </select>

    et ensuite dans ton script php tu peux faire un truc du genre

    $xml = simplexml_load_file('test.xml');

    $article = $xml->date[0]->addChild('article');
    $article->addAttribute('href', 'leLien');
    $article->addAttribute('target', 'laCible');
    $article->addAttribute('texte', 'leTexte');



    sachant que le '0' correspond à l'endroit où tu veux inserer soit Avril 2008

    on n'oubliera pas de sauvegarder

    $xml->asXML('test.xml');

    et le tour est joué
    Bye

    Max
    Faut faire l'ane pour avoir de l'avoine

  5. #5
    Membre habitué
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Points : 151
    Points
    151
    Par défaut
    Merci pour tout, finalement, j'ai du changer la structure du fichier étant donné que je doit utiliser des caractères spéciaux mais le problème est entièrement résolu.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Entité-Association] Gestion d'une table avec listes de référentiel
    Par dorian53 dans le forum Schéma
    Réponses: 9
    Dernier message: 13/03/2013, 21h49
  2. Fonction pour une liste avec XML to Linq
    Par Pelote2012 dans le forum Linq
    Réponses: 5
    Dernier message: 24/01/2012, 17h55
  3. Réponses: 0
    Dernier message: 14/11/2010, 14h59
  4. [IP-2007] Gestion d'une liste avec Infopath
    Par rohstev dans le forum InfoPath
    Réponses: 4
    Dernier message: 22/07/2010, 13h42
  5. Réponses: 0
    Dernier message: 16/03/2010, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo