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

Langage PHP Discussion :

Construction d'un fichier XML/RSS avec PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 97
    Points
    97
    Par défaut Construction d'un fichier XML/RSS avec PHP
    Bonjour, je voudrais constuire un fichier RSS et j'ai un probleme, chaque <item> peut avoir 0 ou N fichier associé et je ne sais pas comment faire pour récupérer ensuite le résultat.

    voici un bon de code qui sera plus parlant, la c'est ma construction de l'item.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	$xml .= '<item>'."\n";
    	$xml .= '<num>'.$i.'</num>';
    	$xml .= '<id_site>'.$ID_site.'</id_site>'."\n";
    	$xml .= '<titre_site><![CDATA['.$titre_site.']]></titre_site>'."\n";
    	$xml .= '<id_cat>'.$ID_cat.'</id_cat>'."\n";
    	$xml .= '<url><![CDATA['.$url.']]></url>'."\n";
    	$xml .= '<titre_category><![CDATA['.$titre_category.']]></titre_category>'."\n";
    	$xml .= '<titre_category2><![CDATA['.$titre_category2.']]></titre_category2>'."\n";
     
    	$sql3="SELECT * FROM adcenter WHERE ID_cat='".$ID_cat."' AND ID_project='".$ID_project."'";
    	$res3=mysql_query($sql3);
     
    	$j=1;
    	while($val_ban=mysql_fetch_array($res3))
    	{
    		$xml .= '<ban_'.$j.'>'.$val_ban['url'].'</ban_'.$j.'>'."\n";
                              $j++;
     
    	}
     
    	$xml .= '</item>'."\n"."\n";


    ensuite dans la page de lecture, le problème est que je déclare un tableau avec des variables fixe.

    $rss = lit_rss("rss2/flux_".returne($id).".xml",array("num","id_site","titre_site","id_cat","url","titre_category","titre_category2","ban",));

    le soucis c'est que ban change de nom tous le temps en fonction du nombre de fichier possible pour l'item concernée.

    Comment puis-je faire pour récupérer tous les "ban" (fichier) en les distinguant.

    Merci de votre aide, je coince depuis ce matin sur ce problème.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    pourquoi ne pas définir un attribut du style id ou num sur ta balise ban qui contiendrait le numéro ?

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 97
    Points
    97
    Par défaut
    Euh oui je vois ce que tu veux dire, du style :

    <ban>
    <ban url="'.$val_ban['url'].'" id="'.$j.'"/>
    </ban>

    mais comment puis-je ensuite le récupérer dans le tableau? c'est un tableaux à 2 dimension?

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    ça dépend de ta fonction lit_rss... :\

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 97
    Points
    97
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function lit_rss($fichier,$champs)
    {
       // on lit le fichier
       if($chaine = @implode("",@file($fichier))) 
       {
          // on explode sur <item>
          $tmp = preg_split("/<\/?"."item".">/",$chaine);
          // pour chaque <item>
          for($i=1;$i<sizeof($tmp)-1;$i+=2)
             // on lit les champs demand? <champ>
             foreach($champs as $champ)
    		 {
                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
                // on ajoute au tableau
                $tmp3[$i-1][] = @$tmp2[1];
             }
          // et on retourne le tableau
          return $tmp3;
       }
    }
    ma fonction lit rss est faite de cette manière, je l'ai récupérer sur ce site d'ailleur

Discussions similaires

  1. [SimpleXML] [PHP] Parser un fichier XML RSS
    Par kramlech dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/03/2013, 18h05
  2. DOMDocument::load un fichier XML généré avec PHP
    Par jimmyneutron dans le forum Langage
    Réponses: 0
    Dernier message: 16/09/2011, 04h07
  3. Probleme Lecture Fichier RSS avec PHP 4
    Par sirbaldur dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2006, 10h43
  4. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 12h18
  5. Réponses: 10
    Dernier message: 05/04/2005, 11h25

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