• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

RSS Feed in MySql-Blog einfügen

McCry

Mitglied
Hallo zusammen,
(wenn das hier falsch ist, bitte verschieben. Danke :D )
Also, ich habe mir vor einiger Zeit einen Blog via PHP und MySql "gebaut". Dieser funktioniert auch wunderbar.
Nun möchte ich, dass dieser auch mit einem RSS Reader lesbar ist.
Im Internet finde ich nur etwas zu Wordpress oder ähnlichen Plattformen aber nie etwas, wo ich erfahre, wie ich aus einem MySql-Blog auch einen RSS-Feed machen kann.
Soweit ich weiß, muss man dazu eine XML Datei verwenden. Das würde doch bedeuten, dass die Daten, die ich beim Absenden in die MySql-Datenbank verschicke, auch gleichzeitig in diese XML-Datei geschrieben werden müssen. Oder?

Ich hoffe, das war verständlich erklärt und dass mir jemand helfen kann.
LG
McCry

So.
Ich habe mir jetzt eine rss.xml erstellt und kann den Feed auch schon im Browser abonnieren.
Meine Frage:
Muss ich jetzt bei jedem neuen Blog-Eintrag ein neues <item>...</item> in die rss-xml reinschreiben und wenn ja,
wie kann ich das Ganze automatisieren, sodass der <item>-Eintrag direkt beim Speichern des Blog-Eintrages in die rss.xml geschrieben wird?

Wäre super, wenn mir jemand helfen könnte.
Schönen Sonntag noch
McCry
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Warum so kompliziert?

INFO: Nachfolgender Code ist ungetestet!

PHP:
<?php
    $db = new MySQLi('host','user','password','database');
    $res = $db->query('SELECT `id`,`title`,`description`,`dateline` FROM `blogs` ORDER BY `id` DESC');

    header("Content-type: application/rss+xml");
    echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
    <channel>
        <title></title>
        <language>de</language>
        <link>http://<?php echo $_SERVER['HTTP_HOST']; ?></link>
        <description></description>
        <copyright>Copyright <?php echo date('Y')?> by</copyright>
        <atom:link href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/feed.xml" rel="self" type="application/rss+xml" />
        
        <?php while($in = $res->fetch_assoc()): ?>
        <item>
            <title><?php echo $in['title']; ?></title>
            <description><?php echo $in['description']; ?></description>
            <link>http://<?php echo $_SERVER['HTTP_HOST']; ?>/</link>
            <author></author>
            <guid><?php echo $in['id'] ;?></guid>
            <pubDate><?php echo date("r",$in['dateline']); ?></pubDate>
        </item>
        <?php endwhile; ?>
    </channel>
</rss>

Der eigenen Umgebung anpassen (Zugangsdaten zur DB, DB-Felder, etc.), abspeichern unter rss.php (oder wie auch immer) und dann in einer .htaccess-Datei:

Code:
RewriteEngine On
RewriteRule ^feed\.xml$ rss.php
 
Zuletzt bearbeitet:
:O
Darauf hätte ich auch selber kommen können.
Vielen Dank.

Nur mein Problem jetzt:
In der Aboliste wird zwar mein Feed angezeigt, dieser hat allerdings keinen Post in der Liste.
Wenn ich mir jetzt die rss.php Datei im Browser ansehe, werden dort auch alle Posts angezeigt.
 
Werbung:
Die Posts werden nicht angezeigt. Im Quelltext sind sie jedoch da.

Code:
[COLOR=#000000]<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">[/COLOR]

Die Zeile stimmt bei dir nicht.

Edit:

Die Zeile fehlt bei dir auch:

Code:
[COLOR=#000000]<atom:link href="feed.xml" rel="self" type="application/rss+xml" />[/COLOR]

Edit 2:

Hier kannste deinen Feed auf Fehler prüfen: http://validator.w3.org/feed/check.cgi?url=http://ritualist.de/feed.xml
 
Zuletzt bearbeitet:
Ok danke schonmal :D
Aber wo muss das <atom:link ...> genau hin?

Ich habe das mal testen lassen, und da ist rausgekommen, dass in dieser Zeile:

<link>http://ritualist.de/index.php?page=blog&bid=15</link>
irgendwo bei dem &bid etwas nicht stimmt:
line 12, column 77: XML parsing error: <unknown>:12:77: not well-formed (invalid token)
Leider kann ich mit der Hilfe auf der Seite nicht viel anfangen.

LG

PS: http://ritualist.de/rss.php
 
Zuletzt bearbeitet:
Werbung:
Gut.
Der Tester sagt schonmal, dass es jetzt so funktionieren muss.
Allerdings sagt jetzt mein RSS-Reader, dass er die rss.xml nicht hinzufügen kann.

Der allgemeine Aufbau ist jetzt so:
PHP:
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Ritualist.de</title>
        <link>http://www.ritualist.de</link>
        <description>RSS-Feed fur die Seite Ritualist.de</description>
        <language>de-de</language>
        <copyright>2013 by Ritualist.de</copyright>
        <atom:link href="rss.xml" rel="self" type="application/rss+xml" />
        <?php
            while($row = mysql_fetch_assoc($ergebnisBLOG))
            {
                $id = $row["id"];
                $titel = $row["titel"];
                $date = $row["date"];
                $description = substr($row["text"], 0, 20);
                
                echo "
                        <item>
                            <title>$titel</title>
                            <link>http://ritualist.de/index.php?page=blog&amp;bid=$id</link>
                            <description>$description</description>
                            <guid>http://ritualist.de/index.php?page=blog&amp;bid=$id</guid>
                        </item>
                     ";
            }
        ?>
    </channel>
</rss>

Die .htaccess sieht so aus:
RewriteEngine On
RewriteRule ^feed\.xml$ rss.php
 
Bei mir steht immer noch, dass er die rss.xml nicht hinzufügen kann?. :(

hab grade gesehen, dass du deinen Post bearbeitet hast. Funktioniert aber immer noch nicht.
 
Werbung:
Bei mir steht immer noch, dass er die rss.xml nicht hinzufügen kann?.

Warum rss.xml? Die ausgegebene XML ist unter feed.xml erreichbar.

Der Feed-Validator sagt mir:

Relative href value on self link: /feed.xml

Deshalb sollte an der Stelle mit einem absolutem Wert, eben mit deiner Domain in der href-Angabe, erfolgen.

Edit: Sehe gerade du hast den RSS Feed bzw. die XML jetzt unter rss.xml erreichbar gemacht. Mit dem Firefox internem Reader klappt auch alles so wie's soll.
 
Ahhh.
Mein Reader hat automatisch nach einer rss.xml gesucht.
Ich habe gerade mal die URL manuell eingegeben und jetzt funktioniert es. :D
tausend Dank dir :D
 
Zurück
Oben