RSS function werkt niet volledig
Uitleg:
ik heb helaas weer een probleem tijdens het coderen van php. Hieronder ziet u een functie over RSS, wanneer een persoon een foto oploadt op de uploadpagina laat ik de uploadpagina deze functie runnen. Deze functie maakt een rss feed aan, een xml bestand dus.
Problemen:
1. Als ik mijn site in firefox open en het RSS icon klikt krijg ik wel het venster, maar zonder titel. Dit wil ik graag hebben weet iemand dat?
2. wanneer ik dit gebruik maakt hij wel RSS feed aan maar die niet gevalideerd kan worden<guid>http://localhost/test/?page=detail&photo={$item['id']}</guid>
als ik dit gebruik valideert hij het wel.
<guid>http://localhost.no-ip.info/detail.php?photo=40</guid>
dit komt voornamelijk door die & teken. want als ik het verander in een vraag teken ? doet hij het wel. Weet misschien iemand hoe je dit in RSS feed uitzet of kan escapen.
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
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
<?php
// RSS functie om een rss feed automatisch te laten maken
function create_rss($db) {
// initialisatie
$query = "";
$result = "";
$xml_string = "";
// query opstellen voor het ophalen van de laatst n foto's
$query = "SELECT p.*, UNIX_TIMESTAMP(p.datum) AS datum, m.naam, m.email FROM photos p, members m WHERE m.id = p.uploader_id ORDER BY datum DESC LIMIT " . RSS_AANTAL_ITEMS .";";
// query uitvoeren en toekennen aan result
$result = safe_query($db, $query);
// resultaten opnemen in XML-string. string wordt omgezet met \n \t
$xml_string = "< ?xml version=\"1.0\" encoding=\"ISO-8859-1\" ? >\n";
$xml_string .= "<rss version=\"2.0\">\n";
$xml_string .= "\t<channel>\n";
$xml_string .= "\t\t<title>Waarom komt er geen titel</title>\n";
$xml_string .= "\t\t<link>" .RSS_LINK."</link>\n";
$xml_string .= "\t\t<copyright>" .RSS_COPY."</copyright>\n";
$xml_string .= "\t\t<pubDate>" .date("r")."</pubDate>\n";
$xml_string .= "\t\t<language>" .RSS_TAAL."</language>\n";
$xml_string .= "\t\t<ttl>" .RSS_TTL."</ttl>\n";
$xml_string .= "\t\t<webMaster>" .RSS_WEBMASTER."</webMaster>\n";
$xml_string .= "\t\t<description>" .RSS_DESCRIPT."</description>\n";
// resultaten in lus zetten in de xml_string verwerken
while ($item = mysqli_fetch_array($result)) {
$xml_string .= "\t\t\t<item>\n";
$xml_string .= "\t\t\t\t<title>{$item['photo_filename']}</title>\n";
$xml_string .= "\t\t\t\t<description>" .zin_afbreken($item['beschrijving'])."</description>\n";
$xml_string .= "\t\t\t\t<guid>http://localhost/test/?page=detail&photo={$item['id']}</guid>\n";
$xml_string .= "\t\t\t\t<author>{$item['email']}</author>\n";
$xml_string .= "\t\t\t\t<pubDate>" .date("r", $item['datum']). "</pubDate>\n";
$xml_string .= "\t\t\t</item>\n";
}
$xml_string .= "\t</channel>\n";
$xml_string .= "</rss>\n";
// rss feed op schijf bewaren
if (!$fp = fopen(RSS_FILENAME, "w")) {
return false;
}
else {
fwrite($fp, $xml_string);
fclose($fp);
return true;
}
}
?>
// RSS functie om een rss feed automatisch te laten maken
function create_rss($db) {
// initialisatie
$query = "";
$result = "";
$xml_string = "";
// query opstellen voor het ophalen van de laatst n foto's
$query = "SELECT p.*, UNIX_TIMESTAMP(p.datum) AS datum, m.naam, m.email FROM photos p, members m WHERE m.id = p.uploader_id ORDER BY datum DESC LIMIT " . RSS_AANTAL_ITEMS .";";
// query uitvoeren en toekennen aan result
$result = safe_query($db, $query);
// resultaten opnemen in XML-string. string wordt omgezet met \n \t
$xml_string = "< ?xml version=\"1.0\" encoding=\"ISO-8859-1\" ? >\n";
$xml_string .= "<rss version=\"2.0\">\n";
$xml_string .= "\t<channel>\n";
$xml_string .= "\t\t<title>Waarom komt er geen titel</title>\n";
$xml_string .= "\t\t<link>" .RSS_LINK."</link>\n";
$xml_string .= "\t\t<copyright>" .RSS_COPY."</copyright>\n";
$xml_string .= "\t\t<pubDate>" .date("r")."</pubDate>\n";
$xml_string .= "\t\t<language>" .RSS_TAAL."</language>\n";
$xml_string .= "\t\t<ttl>" .RSS_TTL."</ttl>\n";
$xml_string .= "\t\t<webMaster>" .RSS_WEBMASTER."</webMaster>\n";
$xml_string .= "\t\t<description>" .RSS_DESCRIPT."</description>\n";
// resultaten in lus zetten in de xml_string verwerken
while ($item = mysqli_fetch_array($result)) {
$xml_string .= "\t\t\t<item>\n";
$xml_string .= "\t\t\t\t<title>{$item['photo_filename']}</title>\n";
$xml_string .= "\t\t\t\t<description>" .zin_afbreken($item['beschrijving'])."</description>\n";
$xml_string .= "\t\t\t\t<guid>http://localhost/test/?page=detail&photo={$item['id']}</guid>\n";
$xml_string .= "\t\t\t\t<author>{$item['email']}</author>\n";
$xml_string .= "\t\t\t\t<pubDate>" .date("r", $item['datum']). "</pubDate>\n";
$xml_string .= "\t\t\t</item>\n";
}
$xml_string .= "\t</channel>\n";
$xml_string .= "</rss>\n";
// rss feed op schijf bewaren
if (!$fp = fopen(RSS_FILENAME, "w")) {
return false;
}
else {
fwrite($fp, $xml_string);
fclose($fp);
return true;
}
}
?>
Pogingen:
1. Titel keihard gewoon erigeschreven geen DEFINE variable meer gebruikt maar werkt niet
2. Bij de <guid>......</guid> heb ikde & teken in een ? veranderd toen valideert de xml bestand wel goed maar kom ik niet op de juist pagina, het kan liggen aan de & teken
help... :'(
Gewijzigd op 01/01/1970 01:00:00 door Hakkatjai
hmmm dit zou ik ook graag willen weten, aan de links te zien laat je de pagina includen.
Anybody....? |:''(
Als je dan in de website de regel:
Zet, dan krijg je in Firefox iig naast de url zo'n mooi RSS icoontje, en kun je het gewoon gebruiken.
Het idee is goed maar het anwoord is fout. Op zicht een goed idee. Ik wil het in xml, want er zijn van die programma's RSS readers die xml alleen lezen.