nero27 | Bonjour, Je suis en train de mettre en place un flux RSS pour mon site et j'ai un souci avec DomDocument->get_element_by_id() qui me retourne cette erreur : "Fatal error: Call to a member function on a non-object in [...]" correspondant à la ligne "$element_channel = $file->get_elements_by_id("news" );" J'ai essayé de remplacer par $element_channel = $file->get_elements_by_tagname("channel" ); et là tout fonctionne bien. Pourquoi cela ne fonctionne-t-il pas avec get_element_by_id() ? Voici mon code :
Code :
- <?php
- function createXML(){
- // Création du fichier en mémoire
- $file = domxml_new_doc("1.0" );
- // Création du noeud racine
- $root = $file->create_element("rss" ); //On crée l élément racine
- $root->set_attribute("version", "2.0" ); //On lui ajoute l attribut version (2.0)
- $root = $file->append_child($root); //On insère la racine dans le document
- // Création du noeud channel
- $element_channel = $file->create_element("channel" );//On crée un élément channel
- $element_channel->set_attribute("id", "news" ); //On donne un attribut id à notre channel
- $element_channel = $root->append_child($element_channel);//On ajoute cet élément à la racine
- // Création du noeud description
- $element_description = $file->create_element("description" );//On crée un élément description
- $element_description = $element_channel->append_child($element_description);//On ajoute cet élément au channel
- // Création du texte pour le noeud description
- $texte_description = $file->create_text_node("Nouveautés sur Mon-Cobaye.net" ); //On crée un texte
- $texte_description = $element_description->append_child($texte_description); //On insère ce texte dans le noeud description
- // Création du noeud link et ajout du texte à l élément
- $element_link = $file->create_element("link" );
- $element_link = $element_channel->append_child($element_link);
- $texte_link = $file->create_text_node("http://www.mon-cobaye.net" );
- $texte_link = $element_link->append_child($texte_link);
- // Création du noeud title et ajout du texte à l élément
- $element_title = $file->create_element("title" );
- $element_title = $element_channel->append_child($element_title);
- $texte_title = $file->create_text_node("Mon-Cobaye" );
- $texte_title = $element_title->append_child($texte_title);
- //On retourne le fichier XML
- return $file;
- }
- function addOneNews($file, $title, $date, $author, $nouveaute){
- //On récupère le channel
- //$element_channel = $file->get_element_by_id("news" );
- $element_channel = $file->get_elements_by_tagname("channel" );
- // Création du noeud item
- $element_item = $file->create_element("item" );
- $element_item = $element_channel[0]->append_child($element_item);
- // Création du noeud title et ajout du texte à l élément
- $element_title = $file->create_element("title" );
- $element_title = $element_item->append_child($element_title);
- $texte_title = $file->create_text_node($title);
- $texte_title = $element_title->append_child($texte_title);
- // Création du noeud link et ajout du texte à l élément
- $element_link = $file->create_element("link" );
- $element_link = $element_item->append_child($element_link);
- $texte_link = $file->create_text_node("http://www.mon-cobaye.net/nouveautes.php" );
- $texte_link = $element_link->append_child($texte_link);
- // Création du noeud pubDate et ajout du texte à l élément
- $element_date = $file->create_element("pubDate" );
- $element_date = $element_item->append_child($element_date);
- $texte_date = $file->create_text_node($date);
- $texte_date = $element_date->append_child($texte_date);
- // Création du noeud author et ajout du texte à l élément
- $element_author = $file->create_element("author" );
- $element_author = $element_item->append_child($element_author);
- $texte_author = $file->create_text_node($author);
- $texte_author = $element_author->append_child($texte_author);
- // Création du noeud description et ajout du texte à l élément
- $element_desc = $file->create_element("description" );
- $element_desc = $element_item->append_child($element_desc);
- $texte_desc = $file->create_text_node(utf8_encode($nouveaute));
- $texte_desc = $element_desc->append_child($texte_desc);
- }
- function saveXML($file){
- //Sauvegarde du fichier
- $file->dump_file("news/news.xml",false, true);
- }
- $link = mysql_connect("localhost", "user","pass" ) or die(mysql_error()."<br />".$query);
- mysql_select_db("moncobay",$link) or die(mysql_error()."<br />".$query);
- $query="select n.*, u.pseudo from nouveautes n, user u where n.id_user=u.id_user order by idn desc limit 0,10";
- $resultn=mysql_query($query,$link) or die(mysql_error()."<br />".$query);
- //Création du fichier XML
- $file = createXML();
- while ($rown = mysql_fetch_array($resultn))
- {
- addOneNews($file,$rown['titre'],strftime("%d/%m/%Y %H:%M",strtotime($rown['date'])),$rown['pseudo'],nl2br($rown['nouveaute']));
- }
- saveXML($file);
- mysql_close($link);
- ?>
| Pouvez-vous m'aider ? Message édité par nero27 le 20-11-2007 à 11:51:17
|