php in RSS
Het probleem is dat .php niet als een xml-bestand herkend wordt, dus ook niet als een RSS Feed. En een .xml wordt niet als php gezien, dus de php wordt dan niet uitgevoerd.
Code (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
43
44
45
46
47
48
49
50
51
52
53
54
55
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
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
// database verbinding toevoegen
include_once('database.inc.php');
header('Content-Type: text/xml');
$now_rfc822 = date("r");
$output = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<rss version="0.92">
<channel>
<title>Voorbeeld</title>
<link>http://localhost</link>
<description>Voorbeeld speciaal voor Pater</description>
<language>nl</language>
<pubDate>$now_rfc822</pubDate>
<lastBuildDate>$now_rfc822</lastBuildDate>
<ttl>15</ttl>
XML;
// verbinding maken met SQL server
$obj = new database;
$obj->connect();
/* tabel is uiteraard jouw tabel (rss of iets dergelijks) */
$sql = "SELECT * FROM `tabel` ORDER BY `id` DESC LIMIT 0,10";
$result = $obj->execute($sql);
while($xml = mysql_fetch_object($result)) {
$title = htmlspecialchars(utf8_encode($xml->uitTabel1));
$link = htmlspecialchars(utf8_encode('http://localhost/index.php?page=linkNaarJouwSite&id=' . $xml->id));
$text = <<<TEXT
<P>Er is een nieuwsbericht toegevoegd aan de site </P>
<P>Het nieuwsbericht val in de categorie:<B> $xml->categorie </B> en betreft het volgende:
<B>$xml->onderwerp</B></P>
<P>
Datum: <B> $xml->date </B><BR />
Bericht: <B> $xml->bericht </B><BR />
</P>
<P>
Lees verder op: <A href="$link" target="_new"><B> http://localhost</B></A>
</P>
TEXT;
$desc = htmlspecialchars(utf8_encode($text));
$output .=<<<XML
<item>
<title>$title</title>
<link>$link</link>
<description>$desc</description>
</item>
XML;
}
$output .= '</channel></rss>';
print $output;
?>
// database verbinding toevoegen
include_once('database.inc.php');
header('Content-Type: text/xml');
$now_rfc822 = date("r");
$output = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<rss version="0.92">
<channel>
<title>Voorbeeld</title>
<link>http://localhost</link>
<description>Voorbeeld speciaal voor Pater</description>
<language>nl</language>
<pubDate>$now_rfc822</pubDate>
<lastBuildDate>$now_rfc822</lastBuildDate>
<ttl>15</ttl>
XML;
// verbinding maken met SQL server
$obj = new database;
$obj->connect();
/* tabel is uiteraard jouw tabel (rss of iets dergelijks) */
$sql = "SELECT * FROM `tabel` ORDER BY `id` DESC LIMIT 0,10";
$result = $obj->execute($sql);
while($xml = mysql_fetch_object($result)) {
$title = htmlspecialchars(utf8_encode($xml->uitTabel1));
$link = htmlspecialchars(utf8_encode('http://localhost/index.php?page=linkNaarJouwSite&id=' . $xml->id));
$text = <<<TEXT
<P>Er is een nieuwsbericht toegevoegd aan de site </P>
<P>Het nieuwsbericht val in de categorie:<B> $xml->categorie </B> en betreft het volgende:
<B>$xml->onderwerp</B></P>
<P>
Datum: <B> $xml->date </B><BR />
Bericht: <B> $xml->bericht </B><BR />
</P>
<P>
Lees verder op: <A href="$link" target="_new"><B> http://localhost</B></A>
</P>
TEXT;
$desc = htmlspecialchars(utf8_encode($text));
$output .=<<<XML
<item>
<title>$title</title>
<link>$link</link>
<description>$desc</description>
</item>
XML;
}
$output .= '</channel></rss>';
print $output;
?>
Dit script haalt stukken tekst uit je database en plaatst die in een rss-bestand. Het invoegen in de database moet geen probleem zijn neem ik aan?
Deze had ik toevallig nog liggen, heb hem wel een beetje bewerkt. Met een beetje PHP kennis moet je er wel uitkomen neem ik aan?
Sorry voor het weinige commentaar overigens; had het voor mezelf geschreven ;)
edit: Opslaan als .php bestand
Gewijzigd op 01/07/2005 03:04:00 door Winston Smith
-Hoe ziet de RSS reader dat het hier om een xml-bestand gaat. Via de header?
-Waarom staan de xml-gedeeltes tussen <<<XML ….. XML?
-Waarom moet ik een verbinding maken met de SQL server? Ik heb toch al een verbinding met de database.
-Kan ik (als dan de $obj zou vervallen) ook $rel = mysql_query($sql) gebruiken i.p.v. $result = $obj->execute($sql)
-Ik wil een array uit de db halen en daar doorheel loopen. Kan ik dan $row[id] gebruiken i.p.v. $xml->id
-vanwaar de $text-variabele en waarom staat deze tussen <<<text … text
Alvast bedankt.
- Dat is een syntax waarmee je wat makkelijker kan typen: je hoeft bijvoorbeeld niet " te escapen
- Hoeft ook niet als die verbinding er al is (als je een permanente verbinding hebt met mysql_pconnect())
- Dat zou inderdaad moeten lukken ja
- Ook dat kan, doe dan wel $row = mysql_fetch_array()
- Die tekst komt in de RSS reader, en hij staat tussen <<<TEXT omdat dat hetzelfde is als je tweede vraag. Net iets makkelijker dus ;)
Geen dank :)
Gewijzigd op 01/07/2005 23:35:00 door Winston Smith
Code (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
43
44
45
46
47
48
49
50
51
52
53
54
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
43
44
45
46
47
48
49
50
51
52
53
54
<?php
// database verbinding toevoegen
include_once('connect_nuuts.inc');
header('Content-Type: text/xml');
$now_rfc822 = date("r");
$output = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<rss version="0.92">
<channel>
<title>Mofert.nl RSS Feed</title>
<link>http://www.mofert.nl</link>
<description>Nuuts euver Mofert</description>
<language>li</language>
<pubDate>$now_rfc822</pubDate>
<lastBuildDate>$now_rfc822</lastBuildDate>
<ttl>15</ttl>
XML;
// verbinding maken met SQL server
$obj = new database;
$obj->connect();
/* tabel is uiteraard jouw tabel (rss of iets dergelijks) */
$sql = "SELECT * FROM nuuts ORDER BY id DESC LIMIT 0,10";
$result = $obj->execute($sql);
while($xml = mysql_fetch_object($result)) {
$title = htmlspecialchars(utf8_encode($xml->titel));
$link = htmlspecialchars(utf8_encode('http://www.mofert.nl/nuutsberich.php?id=' . $xml->id));
$text = <<<TEXT
<P>Er is een nieuwsbericht toegevoegd aan de site </P>
<P>Het nieuwsbericht valt in de categorie:<B> $xml->categorie </B> en betreft het volgende:
<P>
Datum: <B> $xml->ts_pub </B><BR />
Bericht: <B> $xml->berich </B><BR />
</P>
<P>
Lees verder op: <A href="$link" target="_new"><B> http://www.mofert.nl</B></A>
</P>
TEXT;
$desc = htmlspecialchars(utf8_encode($text));
$output .=<<<XML
<item>
<title>$title</title>
<link>$link</link>
<description>$desc</description>
</item>
XML;
}
$output .= '</channel></rss>';
print $output;
?>
// database verbinding toevoegen
include_once('connect_nuuts.inc');
header('Content-Type: text/xml');
$now_rfc822 = date("r");
$output = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<rss version="0.92">
<channel>
<title>Mofert.nl RSS Feed</title>
<link>http://www.mofert.nl</link>
<description>Nuuts euver Mofert</description>
<language>li</language>
<pubDate>$now_rfc822</pubDate>
<lastBuildDate>$now_rfc822</lastBuildDate>
<ttl>15</ttl>
XML;
// verbinding maken met SQL server
$obj = new database;
$obj->connect();
/* tabel is uiteraard jouw tabel (rss of iets dergelijks) */
$sql = "SELECT * FROM nuuts ORDER BY id DESC LIMIT 0,10";
$result = $obj->execute($sql);
while($xml = mysql_fetch_object($result)) {
$title = htmlspecialchars(utf8_encode($xml->titel));
$link = htmlspecialchars(utf8_encode('http://www.mofert.nl/nuutsberich.php?id=' . $xml->id));
$text = <<<TEXT
<P>Er is een nieuwsbericht toegevoegd aan de site </P>
<P>Het nieuwsbericht valt in de categorie:<B> $xml->categorie </B> en betreft het volgende:
<P>
Datum: <B> $xml->ts_pub </B><BR />
Bericht: <B> $xml->berich </B><BR />
</P>
<P>
Lees verder op: <A href="$link" target="_new"><B> http://www.mofert.nl</B></A>
</P>
TEXT;
$desc = htmlspecialchars(utf8_encode($text));
$output .=<<<XML
<item>
<title>$title</title>
<link>$link</link>
<description>$desc</description>
</item>
XML;
}
$output .= '</channel></rss>';
print $output;
?>
De locatie is http://www.mofert.nl/rss.php
Kan iemand een kijken wat ik fout heb gedaan?
RewriteEngine On
RewriteRule rss.xml$ rss-script.php
ff uit het hoofd.
Kun je een beetje meer uitlef geven a.u.b. Ik ben niet erg ervaren met dit soort dingen.