php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
rss feed anbieten


 
McPU
01-02-2008, 00:52 
 
Hallo,

Ich habe versucht, ein rss feed anzubieten mit dynamischen inhalten...und bin mal wieder frustriert, weils nicht klappt.

hier ist der code


<?php header("Content-type: text/xml");
echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>'; ?>
<rss version="2.0">

<channel>
<title>xyzs Blog.</title>
<language>de-ch</language>

<description>Feed zu meinem Blog</description>
<copyright>Copyright: xyz<?php date(y); ?></copyright>

<?php

include "inc/config.php";
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung: ".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

$sql = "SELECT
ID,
title,
descr,
date
FROM
news
ORDER BY
date DESC";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
$news_ID = array();
$news_title = array();
$news_descr = array();
$news_date = array();
while($row = mysql_fetch_assoc($result)) {
$news_ID[] = $row['ID'];
$news_title[] = $row['title'];
$news_descr[] = $row['descr'];
$news_date[] = $row['date'];

}

foreach ($news_date as $id => $date) {


echo "<item> \n";
echo "<title>".$news_title[$id]."</title> \n";
echo "<description>".$news_descr[$id]."</description> \n";
echo "<pubDate>".$news_date[$id]."</pubDate> \n";
+++
echo "</item> \n";
}

}


?>
</channel>
</rss>


Ich weiß nicht ganz wo der fehler ist....aber auf meiner rss-seite sind keine Einträge zu finden, die seite an sich ist da, es wird auch Überschrift etc. angezeigt, nur das dynamische halt nicht. :(

Einträge in der Datenbank sind garantiert vorhanden ;-)


Könnt ihr den Fehler finden?

Echt tausend dank!!!

 
krel
01-02-2008, 01:04 
 
bitte erstmal Code umbrechen!
desweiteren gibt es wieder einmal das Problem der Zeichenverkettung. Das Syntax highlighting sollte dir schon zeigen, dass

echo "<guid><a href="http://www.pudet.de/sebastian-dziubiel/index.php?location=blog&news_id=" target="_blank">
http://www.pudet.de/sebastian-dziub...n=blog&news_id=a>".$news_ID[$id]."</guid> \n";

so nicht funktioniert ersetze die äußeren " durch einfach ', dann hast du schonmal was vernünftiges stehen

 
jahlives
01-02-2008, 11:12 
 
Code umbrechen (wie schon gesagt)

so nicht funktioniert ersetze die äußeren " durch einfach ', dann hast du schonmal was vernünftiges stehen

Bringt ihm nicht soviel weil er in diesem String auch noch \n drin hat --> er braucht die doppelten Anführungszeichen (zumindest für den Teil wo \n drinsteht)
@topicstarter
Mach dich mal über die hohe Kunst des Escapens von Sonderzeichen innerhalb von Strings schlau (Manual kann helfen).

Gruss

tobi

 
H2O
01-02-2008, 11:24 
 
Original geschrieben von jahlives

Bringt ihm nicht soviel weil er in diesem String auch noch \n drin hat --> er braucht die doppelten Anführungszeichen (zumindest für den Teil wo \n drinsteht)
@topicstarter
Mach dich mal über die hohe Kunst des Escapens von Sonderzeichen innerhalb von Strings schlau (Manual kann helfen). Oder aussen Doppelte und innen Enfache. Dann kannst du dir das Escapen auch ersparen. Also
echo "<guid><a href='http://www.pudet.de/sebastian-dziubiel/index.php?location=blog&news_id=$news_ID[$id]'
target='_blank'></a></guid>\n"; // funktioniert

echo '<link><a href="http://www.pudet.de/sebastian-dziubiel/index.php?location=blog&news_id=$news_ID[$id]"
target="_blank"></a>$news_ID[$id]</link>\n'; // funktioniert nicht

 
PHP-Desaster
01-02-2008, 11:49 
 
Nein Jungs, das seht ihr falsch! Das Forum hat seine URLs in Links umgewandelt! Da ist nix mit Escapen!

 
McPU
01-02-2008, 16:19 
 
oh, da hat das forum tatsächlich was verändert!

so ist es original:


echo "<guid>http://www.pudet.de/xyz/index.php?location=blog&news_id=".$news_ID[$id]."</guid> \n";
echo "<link>http://www.pudet.de/xyz/index.php?location=blog&news_id=".$news_ID[$id]."</link> \n";



Ich hab mal den ganzen dynamischen Teil in eine test.php datei ausgelagert und geguckt was die ausgibt.

Das wird ausgegeben(quellcode):



<item>
<title>Kakteen im Angebot</title>
<description>Das ist ein langer Kurztext! Länger geht's momentan nicht. Man denkt gar nicht, wie viel hier so reinpasst. Das ist wirklich eine ganze Menge. Lorem ipsum dolor</description>
<pubDate>2008-01-29 22:54:51</pubDate>
<guid>http://www.pudet.de/xyz/index.php?location=blog&news_id=18</guid>
<link>http://www.pudet.de/xyz/index.php?location=blog&news_id=18</link>
</item>
<item>
<title>Neues Gesteck</title>

<description>Seit heute finden Sie in unserem Shop ein neues Gesteck.</description>
<pubDate>2008-01-29 22:52:18</pubDate>
<guid>http://www.pudet.de/xyz/index.php?location=blog&news_id=17</guid>
<link>http://www.pudet.de/xyz/index.php?location=blog&news_id=17</link>
</item>
<item>
<title>Homepage online!</title>
<description>Die Gärtnerei Matthey stellt sich auf ihrer Homepage vor!</description>
<pubDate>2008-01-29 22:48:40</pubDate>

<guid>http://www.pudet.de/xyz/index.php?location=blog&news_id=16</guid>
<link>http://www.pudet.de/xyz/index.php?location=blog&news_id=16</link>
</item>



das is doch eigentlich genau das was ich will.


Im rss wird TROTZDEM kein eintrag angezeigt!! woran kann das liegen?? Kenn sich jemand mit rss aus?


vielen dank für die bisherigen antworten und noch mehr dank den kommenden!

 
jahlives
01-02-2008, 16:26 
 
@Topicstarter
Bitte brich deinen Code um, damit man nicht zur Seite scrollen muss.
Zum Prüfen von RSS Feeds bietet sich z.B. http://feedvalidator.org/
Und bei meinem Feed steht noch:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
...

Und schau dir bitte mal auch den Aufbau eines RSS Feeds bei http://de.wikipedia.org/wiki/RSS an

Gruss

tobi

 
McPU
01-02-2008, 18:27 
 
Danke für den Tipp mit dem validator!


Ich denke, dass es an diesem Fehler hier liegt:

line 14, column 76: XML parsing error: <unknown>:14:76: not well-formed (invalid token)

Das ist die betroffene Zeile:

<guid>http://www.pudet.de/xyz/index.php?location=blog&news_id=18</guid>



Das, was mir der Validator als Hilfe anbietet versteh ich nicht.

Ich hoffe jemand von euch kann mir sagen, was an dieser Zeile nicht in ordnung ist.

 
PHP-Desaster
01-02-2008, 21:18 
 
& muss als Entität geschrieben werden, also & a m p ;

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:08 Uhr.