Gå til innhold

Hente artikler fra MySQL database til RSS


Anbefalte innlegg

Skrevet (endret)

Jeg fikk det til :)

 

Jeg bare byttet ORDER BY timestamp med ORDER BY id.

 

 

Tusen takk!

Hvis du vil se (haha), klikk her. Akkurat nå inneholder tabellen min bare tullenyheter. Lorem lipsum med andre ord.

Endret av Andy-Pandy
Videoannonse
Annonse
Skrevet

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
?>

Skrevet (endret)

<? 
//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
Skrevet

Håkay, dette er mer enn merkelig.

Kan du gi en ddl av tabellen du skal hente fra?

Link til feeden din?

Koden du bruker (gjerne i pastebin)

 

Det funker nemlig hos meg, og jeg klarer ikke se hvorfor det ikke funker hos deg.

Skrevet

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>";

 

?>

Skrevet (endret)

Begynn med å fjerne javascript øverst i filen din

 

Og bytt ut linje 72-73 med dette:

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

Endret av CruellaDeVille
Skrevet
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?

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...