Gå til innhold

Hente artikler fra MySQL database til RSS


Anbefalte innlegg

Videoannonse
Annonse

Ja, jeg brukte den koden som Cruella de Villa postet tidligere, bare at jeg byttet SELECT * FROM $this->table_name ORDER BY timestamp // eller noe sånt

 

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{
//Noen variabler
var $hostname = "localhost";
var $username = "brukernavn";
var $password = "passord";
var $usertable = "tabell_navn";
var $dbName = "database_navn";
var $result;

function koble_til(){
//Kobler til databasen vår
mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Unable to select database");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(mysql_num_rows($this->result) != 0){
while($d = mysql_fetch_object($this->result)){
 $data[] = $d;
}
return $data;
}
return null;
}
function skrivut(){
$result = $this->query("SELECT * FROM $this->usertable ORDER BY id");
if (!is_null($result)){
$now = date('d.m-Y@H:i:s', time());
$rss = <<<RSS
<rss version="2.0">
 <channel>\n
 <title>Anders Moen :: News</title>
 <description>Anders Moen's RSS feed</description>
 <lastBuildDate>$now</lastBuildDate>
 <link>http://andersmoen.hotserv.dk/new/</link>
RSS;
    foreach($result as $r){
     $date = date('d/m/Y@H:i:s', $r->timestamp);
      $rss .=<<<RSS
           <item>
   <title>$r->tittel</title>
   <pubDate>$r->dato</pubDate> 
   <description>$r->innhold1
$r->innhold2</description>
   <link>http://andersmoen.hotserv.dk/new/?page=view&id=$r->id</link>
  </item>
RSS;
}
$rss .="</channel></rss>";
header('Content-type:text/xml');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);
//Lukker koblingen til databasen
mysql_close();
}
} //Slutt på klassen vår
?>

Lenke til kommentar

<? 
//Vi lager et nytt objekt 
$obj = new rss_feed(); 
//Så kaller vi opp funksjonene våre 
$obj->print_rss(); 

class db{ 
   function db(){ 
       $this->hostname = "sdsddssddsds"; 
       $this->username = "sdsddssddsds"; 
       $this->password = "sdsddssddsds"; 
       $this->usertable = "artikler"; 
       $this->dbName = "sdsddssddsds"; 
   } 

   function connect(){ 
       //Kobler til databasen vår 
       mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error()); 
       mysql_select_db($this->dbName)  || die("Unable to select database: ". mysql_error()); 
   } 
   function query($query){ 
       $data = array(); 
       $result = mysql_query($query);         
       if(mysql_num_rows($result) != 0){ 
           while($d = mysql_fetch_object($result)){ 
               $data[] = $d; 
           } 
           return $data; 
       }         
       return null; 
   } 
   function close(){ 
       //Lukker koblingen til databasen 
       mysql_close(); 
   } 
} 

//Lager en klasse 
class rss_feed{ 
var $db; 
var $usertable =  "artikler"; 

   function rss_feed(){ 
       $this->db = new db(); 
       $this->db->connect(); 
   } 

   function print_rss(){ 
       $result = $this->db->query("select * from $this->usertable WHERE status=\"publisert\" ORDER BY id"); 
       if (!is_null($result)){ 
           $now = date('d.m-Y@H:i:s', time()); 
           $rss = <<<RSS
           <rss version="2.0"> 
               <channel>\n 
               <title>Nyheter fra eksempel</title>\n 
               <description>Inneholder de siste nyhtene fra eksempel</description>\n 
               <lastBuildDate>$now</lastBuildDate>  
               <link>http://eksempel.no</link>\n 
RSS;
            foreach($result as $r){ 
                $date = date('d/m/Y@H:i:s', $r->timestamp); 
                 $rss .=<<<RSS
                   <item> 
                       <title>$r->tittel</title> 
                       <pubDate>$date</pubDate>  
                       <description>$r->hovedtekst</description> 
                       <link>http://eksempel.no?side=nyhetsviser&id=$r->id/link> 
                   </item> 
RSS;
           } 
           $rss .="</channel></rss>"; 
           header('Content-type:text/xml "charset=iso-8859-1"');
 	
           print $rss; 
       } 
       $this->close_db(); 
   } 
   function close_db(){ 
       $this->db->close(); 
   } 
} 
//Slutt på klassen vår 
?>

 

Opera: XML-parsing mislyktes: syntaksfeil (Linje: 14, Tegn 65) - well-formedness constraint: entity declared

 

Firefox: XML-lesefeil: ikke velformet, linjenummer 14, kolonne 69:

 

Internet Explorer: Hvor vil du lagre filen? :roll:

 

når jeg "slang inn"

header('Content-type="text/xml"');
header('xml version="1.1" encoding="iso-8859-1"');

:

 

Opera: HTMLside

Firefox: HTMLside

Internet Explorer: Siden kan ikke vises

Endret av Quattro7
Lenke til kommentar

Dere har vel en kode for å vise nyhetene på forsiden/en vanlig side? Kan dere ikke bare bruke den, men legge til RSS-delene rundt?

 

Her er koden jeg bruker selv:

PHP
<?php

header('Content-Type: text/xml');

header('Pragma: public');

 

echo "<?xml version="1.0"?>";

echo "<rss version="0.91">";

echo "<channel>";

 

echo "<title>TibiaNordic RSS</title>";

echo "<description>RSS Feed with the news from TibiaNordic.</description>";

echo "<link>http://tibianordic.com/</link>";

 

$query mysql_query"SELECT * FROM sys_news ORDER BY date DESC LIMIT 10" ) or die(mysql_error());

 

while( ( $news mysql_fetch_array$query ) ) !== FALSE ) {

 

// $_lang->select_language( LANG_ENGLISH );

$title stripslashes$_lang->fetch_dynamic_token"news_" . $news['id'] . "_headline" ) );

 

echo " <item>";

echo " <title>{$title}</title>";

echo " <description>Follow the link to read the whole news.</description>";

echo " <link>http://tibianordic.com/news/{$news['short_name']}</link>";

echo " </item>";

 

}

 

 

echo "</channel>";

echo "</rss>";

 

?>

Lenke til kommentar
XML-parsing mislyktes: syntaksfeil (Linje: 1, Tegn 66)

 

Tolk dokumentet på nytt som HTML

Feil:unexpected start-tag (root element already specified)

Spesifikasjon:http://www.w3.org/TR/REC-xml/

  1: <script type='text/javascript' src='/pop.js'></script>            <rss version="2.0">

  2:                <channel>

  3: 

  4:                <title>Nyheter</title>

 

 

Jo, du har nok noe JS som ikke skulle være der, som antakeligvis kanskje ligger i databasen?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...