[php/xml] rss feed van php naar xml

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo mensen,

Ik ben vanmorgen binnen gestapt in de wereld van de RSS.
Ik heb een website en wil mijn headlines in rss weer kunnen geven.
Dit is gelukt met het volgende stukje code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 
include("config.php"); 
echo "<?xml version=\"1.0\"?>"; 
echo "<rss version=\"2.0\">"; 
echo "<channel>"; 

$query = "SELECT * FROM admin_nieuws ORDER BY nieuws_id DESC LIMIT 0,5"; 
$sql = mysql_query("$query"); 
while ($row = mysql_fetch_array($sql)){ 
    $nieuws_id = $row['nieuws_id']; 
    $nieuws_onderwerp = $row['nieuws_titel']; 
    $nieuws_omschrijving = $row['nieuws_bericht']; 
    echo "<item>"; 
    echo "<title>$nieuws_onderwerp</title>"; 
    echo "<link><a href='http://www.aquawish.nl/?p=home&actie=nieuwsbericht&nieuws_id=$nieuws_id'>$nieuws_onderwerp</a><br/></link>"; 
    echo "<description>$nieuws_omschrijving<p/></description>"; 
    echo "</item>"; 
} 

echo "</channel>"; 
echo "</rss>"; 
?>  


Wanneer ik dit opsla als feed.php en ik open het, dan wordt alles perfect weergegeven. Echter vraag ik me af of het niet mogelijk is om dit wat ik met bovenstaande code aanroep in een .xml bestand te openen. Die standaard rss bestanden in .xml zien er mooier uit. Alleen is mijn vraag hoe doe ik dit. En hoe stel ik in, dat er maar een paar keer per dag gegevens uit het database worden geupdate in de rss feed?
Ik hoop dat ik dit in het juiste forum onderdeel heb gezet, en jullie me kunnen helpen.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Wat bedoel je? Juiste contenttype meesturen of zit je te zoeken naar een xsl toe te voegen om het fancier te maken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
PHP:
1
2
header ("Content-Type: text/xml");  
header ("Pragma: no-cache");


Dat toevoegen voor je gaat outputten. De extensie heeft er niks mee te maken.

Je 2e vraag : De file genereren en dan opslaan als een .xml file kan je een x keer per dag doen mbv. een cronjob (mits je host dit toestaat).

[ Voor 30% gewijzigd door Cartman! op 23-01-2007 10:57 ]


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

En voor de duidelijkheid:

In je RSS feed hoef je geen a, br of </p> tags te gebruiken.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Bedoel je dat je geen new lines etc hebt?

PHP:
1
2
3
4
5
    echo "<item>
    <title>$nieuws_onderwerp</title>
    <link><a href='http://www.aquawish.nl/?p=home&actie=nieuwsbericht&nieuws_id=$nieuws_id'>$nieuws_onderwerp</a><br/></link> 
    <description>$nieuws_omschrijving<p/></description> 
    </item>";


Zo krijg je in ieder geval de new lines en tabs. Of bedoel je anders?

En je kan een zin verkorten met substr(). Al is dit wederom wat je bedoelt :+

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Als je php 5 gebruikt kan je gebruik maken van de xmlWriter extensie.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class rss extends xmlWriter
{
    public function __construct ( $sPath, $sIdentString = '  ' )
    {     
        $this->openUri ( $sPath );
        $this->setIndent ( true );
        $this->setIndentString ( $sIdentString );
    }
    
    public function vSetHeader ( $sTitle, $sLink, $sDescription )
    {
        $this->startDocument ( '1.0', 'UTF-8' );
        $this->startElement ( 'rss' );
        $this->writeAttribute ( 'version', '2.0' );
        $this->startElement ( 'channel' );
        $this->writeElement ( 'title', $sTitle );
        $this->writeElement ( 'link', $sLink );
        $this->writeElement ( 'description', $sDescription );
        $this->writeElement ( 'lastBuildDate', date ( DATE_RFC822 ) );
    }
    
    public function vAddItem ( $aData )
    {
        $this->startElement ( 'item' );
        $this->writeElement ( 'title', $aData['sTitle'] );
        $this->writeElement ( 'link', $aData['sUrl'] );
        $this->writeElement ( 'description', $aData['sDescription'] );
        $this->writeElement ( 'pubDate', date ( DATE_RFC822, $aData['iDate'] ) );
        $this->endElement ();
    }
    
    public function vFlushOutput () 
    {
        $this->endDocument ();
        $this->flush ();
    }
}

$oRSS = new rss ( 'file.xml' );
$oRSS->vSetHeader ( 'titel', 'link', 'omschrijving' );
$oRSS->vAddItem ( $aData );
$oRSS->vFlushOutput ();

March of the Eagles

Pagina: 1