RSS Feeds aus Datenbankeinträgen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansatz
auslese
beispiel
code
dank
date
datenbank
definieren
domain
frage
http
kommentar
ordern
richtige kommentar
schleife
spalte
spalten
tag
test
verschiedene spalten
-
Hallo!
Ich möchte, wie der Threadttitel schon sagt, RSS Feeds aus bestimmten tag/date">Datenbankeinträgen definieren. Ich habe mir überlegt, für
und<title> </title>
Variablen zu definieren Und zwar insofern, dass die Variablen mit der entsprechenden MYSQL Abfrage in der Datenbank verbunden sind. Könnt ihr mir sagen, ob der Ansatz richtig ist bzw. mir dabei helfen?<description> </description>
Danke schonmal im Vorraus.
Gruß,
Webdesignerin
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
wenn ich es richtig verstanden habe, dann ist der Ansatz richtig.
die Variabeln musst du nur noch "füttern":
<?php $SQL = "SELECT * FROM feed"; $query = mysql_query($SQL); if(!$query) { exit; } while($row = mysql_fetch_object($query)) { echo "<title>$row->title</title> <description>$row->desc</description>"; } ?>
Beitrag zuletzt geändert: 4.10.2010 17:42:30 von ichbinlooper -
Hallo ichbinlooper!
Die Datensätze werden ja sicher automatisch chronologisch geordnet, dann brauche ich ja kein ORDER BY - oder?
Ich habe für den <title> Tag vor, die Spalte namens NEWS aus meiner Tabelle auszulesen und beim <description> Tag möchte ich die Spalte KOMMENTAR auslesen. In Deinem Beispiel steht nur von einem einmailigen Auslesen etwas. Daher noch eine Frage zum Abruf der Datensätze mit SELECT aus der Datenbank:
Wie frage ich den zwei "verschiedene" Spalten gleichzeitg ab, die dann auch noch richtig zugeordnet werden (also der richtige Kommentar zu den News)?
Gruß,
Webdesignerin -
Wie frage ich den zwei "verschiedene" Spalten gleichzeitg ab, die dann auch noch richtig zugeordnet werden (also der richtige Kommentar zu den News)?
In dem Beispiel von ichbinlooper werden bereits zwei Spalten abgefragt: zum einen die Spalte "title" ($row->title) und die Spalte "desc" ($row->desc").
Es wird hierbei immer Zeilenweise vorgegangen, so dass immer der richtige Kommentar zu den richtigen News angezeigt wird.
<?php $SQL = "SELECT * FROM feed"; $query = mysql_query($SQL); if(!$query) { exit; } while($row = mysql_fetch_object($query)) { echo "<title>$row->title</title> <description>$row->desc</description>"; } ?>
Was du vielleicht meinst sind mehrere Zeilen?! Dafür sorgt die while-Schleife. Diese ließt solange die Datensätze aus den Spalten "title" und "desc" aus bis alle durch sind:
Angenommen du hast folgende Datenbank: id news kommentar time 1 Hallo Das ist der Kommentar 09:25 2 Test Das ist ein Test 08:36 ...
Und folgende Abfrage:
<?php $SQL = "SELECT * FROM feed ORDER BY time"; $query = mysql_query($SQL); if(!$query) { exit; } while($row = mysql_fetch_object($query)) { echo "<title>$row->news</title><br /> <description>$row->kommentar</description><br />"; } ?>
Dann bekommst du diese Ausgabe:
<title>Test</title>
<descripton>Das ist ein Test</description>
<title>Hallo</title>
<descripton>Das ist ein Kommentar</description>
Wenn du nun 100 Datensätze hast werden dir durch die While-Schleife alle 100 angezeigt. (sortiert nach der Zeit).
Beitrag zuletzt geändert: 5.10.2010 12:41:55 von alfr3d -
Hallo alfr3d!
Ja richtig, ich hatte das mit der while-Schleife gemeint. Danke für den Code!
@all: Mein Code sieht jetzt folgendermaßen aus (ich habe mich an Toobs Blog orientiert):
<?php header("Content-Type: application/rss+xml; charset=ISO-8859-"); echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>"; ?> <rss version="2.0"> <channel> <title>RSS Feed</title> <link>http://www.meine-domain.de</link> <description>Datenbank-Einträge als RSS-Feed</description> <language>de-de</language> <copyright>Copyright 2010 Domaininhaber</copyright> <?php mysql_connect("HOST", "USER","PASSWORT") or die ("Keine Verbindung moeglich"); mysql_select_db("DATENBANK") or die ("Die Datenbank existiert nicht."); $SQL = "SELECT * FROM Tabellen_Name ORDER BY Zeit DESC LIMIT 10 // 10 = Anzahl der angezeigten Feeds, die nach Zeit/Datum in absteigender Reihenfolge geordnet sind $rResultset = mysql_query($SQL); while ($aResult = mysql_fetch_array($rResultset)){ ?> <item> <title><?=$aResult['Spaltenname_fuer_den_Titel']?></title> <link>http://www.meine-domain.de/news.php?<?=$aResult['ID']?></link> <guid>http://www.meine-domain.de/news.php?-<?=$aResult['ID']?></guid> <description><![CDATA[ <?=nl2br(stripslashes(htmlentities($aResult['Spaltenname_fuer_die_Beschreibung'])))?> ]]></description> <pubDate><?=date("D, d M Y H:i:s O", strtotime($aResult['Zeit']))?></pubDate> //obiges Beispiel für den TIMESTAMP, ansonsten <?=date("D, d M Y H:i:s O", $aResult['DateTime'])?> </item> <?php } ?> </channel> </rss>
Edit: Problem gelöst und Skript gefixt.
Gruß,
Webdesignerin
Beitrag zuletzt geändert: 5.10.2010 19:21:34 von webdesignerin -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage