Webstatt.org - Community seit 2006 - 2012 (2024?)

RSS-Feed aus DB erstellen

user-193
17.09.2007 20:02

Ich möchte jetzt auf meiner Seite ein RSS-Feed einbauen welches mir die Einträge automatisch aus der DB ausliest. Leider habe ich 0 Ahnung wie man so was macht. VL hat ja jemand oder kennt so ein Script, welches ich nur noch anpassen muss. Dass wäre super!

MFG

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-282
17.09.2007 20:29

Ich weiss zwar nicht mehr von wo ich es habe, aber das wird dir bestimmt helfen. War auf so einer Hilfeseite für Webmaster. zwinkern

Gruß, user-282 lächeln

PHP: RSS-Feed für die eigene Website erstellen
Geschrieben am Friday, 05.November.2004 @ 14:49:00 CET

Die folgende Funktion erzeugt aus einer Datenbank dynamisch ein RSS-Feed mit der Endung .xml.
function mkRSS () {
////KONFIGURATION (diese Variablen müssen angepasst werden):
$dbServer = "localhost"; //database server (meist localhost)
$dbName = "myDB"; //name of database
$dbUser = "me"; // user name
$dbPassword="myPassword"; // user password
$tableName="myTable"; // Tabellenname der Tab., aus der die Daten entnommen werden
$lines="10"; // Anzahl anzuzeigender Datensätze
$filename="myFile"; //ohne Extension
$title="z.B. Name der Website myDomain.de"; //Titel des RSS-Feeds
$description="Die ".$lines." besten Links"; //Was zeigt das RSS-Feed?
$language="de"; //Sprachkürzel
$link="http://www.mydomain.de/links.html"; //Link
$itemTitle="..."; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht
$itemText="..."; //Spaltenname aus der DB, wo der Text des einzelnen Items steht

//das SQL-Statement muss an die eigenen Erfordernisse angepasst werden
$sql="SELECT * FROM ".$tableName." Where ... ORDER BY ... DESC/ASC LIMIT 0,$lines";

//Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss.
////ENDE KONFIGURATION

//DOCUMENT_ROOT wird automatisch ermittelt
$siteRoot= substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"],
"",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/"zwinkern+1);

//Erzeugen des RSS-Inhaltes:
$rssHeader="<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="0.91">
<channel>
<title>".$title."</title>
<description>".$description."</description>
<language>".$language."</language>
<link>$link</link>
";
$rssFooter="</channel>
</rss>";
$dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error());
$setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error());
$result=mysql_query($sql,$dbLink) or die(mysql_error());
$content=$rssHeader;
while($row=mysql_fetch_array($result)){
$titel=substr ($row[$itemTitle], 0, 150); //$row anpassen! auch in der nächsten Zeile
$text=substr ($row[$itemText], 0, 500); //der Text darf höchstens 500 Zeichen lang sein
$itemLink="..."; //dies ist ein Link, der DIREKT diesen Punkt auf der Homepage öffnet.
//Er muss entsprechend deines Scripts dynamisch gebildet werden.
$content.="<item>
<title>".$titel."</title>
<description>".$text."</description>
<link>".$itemLink."</link>
</item>
";
}
$content.=$rssFooter;

//file wird geschrieben
$fh=fopen ($siteRoot.$filename.".rss", "w"zwinkern;
fputs ( $fh, $content);
fclose($fh);

//file wird umbenannt
rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml"zwinkern;
return;
}

zwinkern Don't Panic! - Die Antwort lautet: 42
Avatar user-290
17.09.2007 20:34

Kleine Anmerkung:
Ich denke mal, das ist die Quelle von dem Script:
http://www.nak-webmaster.de/modules.php?name=News&file=article&sid=99

Avatar user-282
17.09.2007 21:24

Original von user-290
Kleine Anmerkung:
Ich denke mal, das ist die Quelle von dem Script:
http://www.nak-webmaster.de/modules.php?name=News&file=article&sid=99


Fettes Grinsen Bingo genau die Seite meinte ich. user-158ke, user-290!
Gruß, user-282 lächeln

zwinkern Don't Panic! - Die Antwort lautet: 42
user-193
18.09.2007 11:35

danke für das Script. Aber kaönnt ihr mir noch ein paar tipps geben.

Wie muss ich das Script beginnen. Mit <?php ?> oder und welche dateiendung muss ich angeben? Zur Zeit läuft dass Script bis zur Zeile 46, und dann kommt folgende Fehlermeldung:


XML-Verarbeitungsfehler: nicht wohlgeformt
Adresse: http://www.svakindberg.at/web-site/rss-feed.xml
Zeile Nr. 46, Spalte 18: $itemLink="?content=news&submenue=home&ID=1"; //di
-----------------^

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-271
18.09.2007 12:15

Zum ersten:
Ein Script beginnt mit <?php und endet mit ?>
das was da oben steht, diese ersten beiden Zeilen, entweder askommentieren, also ein # oder ein // davor schreiben, oder gleich weglassen
dann...ein php script hat normalerweise die endung .php früher .php3 geht inzwischen auch .php5? (frage an die runde)
noja .php geht immer zwinkern wenn es php ist

noja und uzm zweiten:
das ist kein php fehler, das ist ein xml fehler zwinkern

das link an dem link....mhhh....macht das htmlentities? das problem ist, dass das & nicht ok ist, der will ein &amp;
noja...htmlentities müsste das problem beheben

Ab Zeile 32:
$rssHeader="<?xml version='1.0' encoding='ISO-8859-1'?>
<rss version='0.91'>
<channel>
<title>".htmlentities($title)."</title>
<description>".htmlentities($description)."</description>
<language>".htmlentities($language)."</language>
<link>".htmlentities($link)."</link>
";


Ab Zeile 51:
$content.="<item>
<title>".htmlentities($titel)."</title>
<description>".htmlentities($text)."</description>
<link>".htmlentities($itemLink)."</link>
</item>
";

#!/bin/bash
traurig){ neutral:& };:
user-193
18.09.2007 14:48

Also, ich hab jetzt die Datei, rss-feed.php wie folgt gemacht:


<?php
function mkRSS () {
////KONFIGURATION (diese Variablen müssen angepasst werden):
$dbServer = "localhost"; //database server (meist localhost)
$dbName = "lautnerhsql1"; //name of database
$dbUser = "lautnerhsql1"; // user name
$dbPassword="***"; // user password
$tableName="home"; // Tabellenname der Tab., aus der die Daten entnommen werden
$lines="10"; // Anzahl anzuzeigender Datensätze
$filename="rss-feed"; //ohne Extension
$title="SVAK Newsfeed"; //Titel des RSS-Feeds
$description="Aktuelle SVAK News!"; //Was zeigt das RSS-Feed?
$language="de"; //Sprachkürzel
$link="http://www.svakindberg.at/web-site/rss.html"; //Link
$itemTitle="News"; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht
$itemText="News"; //Spaltenname aus der DB, wo der Text des einzelnen Items steht

//das SQL-Statement muss an die eigenen Erfordernisse angepasst werden
$sql="SELECT * FROM ".$tableName." ORDER BY id DESC LIMIT 0,$lines";

//Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss.
////ENDE KONFIGURATION

//DOCUMENT_ROOT wird automatisch ermittelt
$siteRoot= substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"],
"",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/"zwinkern+1);

//Erzeugen des RSS-Inhaltes:
$rssHeader="<?xml version='1.0' encoding='ISO-8859-1'?>
<rss version='0.91'>
<channel>
<title>".htmlentities($title)."</title>
<description>".htmlentities($description)."</description>
<language>".htmlentities($language)."</language>
<link>".htmlentities($link)."</link>
";
$rssFooter="</channel>
</rss>";
$dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error());
$setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error());
$result=mysql_query($sql,$dbLink) or die(mysql_error());
$content=$rssHeader;
while($row=mysql_fetch_array($result)){
$titel=substr ($row[$itemTitle], 0, 150); //$row anpassen! auch in der nächsten Zeile
$text=substr ($row[$itemText], 0, 500); //der Text darf höchstens 500 Zeichen lang sein
$itemLink="?content=news&submenue=home&ID=1"; //di
$content.="<item>
<title>".htmlentities($titel)."</title>
<description>".htmlentities($text)."</description>
<link>".htmlentities($itemLink)."</link>
</item>
";
}
$content.=$rssFooter;

//file wird geschrieben
$fh=fopen ($siteRoot.$filename.".rss", "w"zwinkern;
fputs ( $fh, $content);
fclose($fh);

//file wird umbenannt
rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml"zwinkern;
return;
}
?>


Jedoch ist mir nicht klar, was ich in Zeile 15 und 47 hineinschreiben muss, und wie dass mit der externen Datei funktioniert, welche erstellt werden soll.

Könnte mir das wer erklären?

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-162
18.09.2007 15:12

In Zeile 15 musst du den Pfad zu deiner XML Datei angeben, also der Ort wo deine Datei später hineingeschriben wird. (Siehe unten bei fopen() )

In Zeile 47 gibst du den Link zu deiner Nachricht an, also dort wo man die gesamte Nachricht etc. lesen kann.

In den Zeilen 58 bis 60 wird die externe Datei erstellt und mit dem Inhalt beschrieben - automatisch. Du musst nichts mehr tun ausser dieses Script aufrufen und die XML Datei in deine Webseite einbinden

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-193
18.09.2007 16:11

Ich bin anscheinend zu blöd dafür.

Also, ich habe jetzt den Code, in die Seite index.php geschrieben und mit der Datei rss-feed.xml verlinkt.

aber, es passiert nichts.

???

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-162
18.09.2007 19:54

Was erwartest du denn, was passieren soll?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-193
19.09.2007 06:57

es wird diese Datei nicht erstellt!

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-162
19.09.2007 08:37

Fehlermeldungen, Warungen, etc?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-271
19.09.2007 10:39

wahrscheinlich hat das script nicht die rechte diese Datei zu erstellen zwinkern check mal deine chmods

#!/bin/bash
traurig){ neutral:& };:
user-193
19.09.2007 15:10

chmod hab ich jetzt, auf 777 gestellt, hat sich aber noch nichts geändert.

Ich schreib euch jetzt nochmal alles auf. Vl hab ich einfach was falsch verstanden!

Ich habe das oben gepostete Script, in die Datei index.php included und dann, habe ich die Datei rss-feed.xml im Head Bereich verlinkt.

Hier der betroffene Code:


<?php
include ('../connect.php'zwinkern;

function mkRSS () {
////KONFIGURATION (diese Variablen müssen angepasst werden):
$dbServer = "localhost"; //database server (meist localhost)
$dbName = "xxx"; //name of database
$dbUser = "xxx"; // user name
$dbPassword="xxx"; // user password
$tableName="home"; // Tabellenname der Tab., aus der die Daten entnommen werden
$lines="10"; // Anzahl anzuzeigender Datensätze
$filename="rss-feed"; //ohne Extension
$title="SVAK Newsfeed"; //Titel des RSS-Feeds
$description="Aktuelle SVAK News!"; //Was zeigt das RSS-Feed?
$language="de"; //Sprachkürzel
$link="http://www.svakindberg.at/web-site/rss-feed.xml"; //Link
$itemTitle="headline"; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht
$itemText="beschreibung"; //Spaltenname aus der DB, wo der Text des einzelnen Items steht

//das SQL-Statement muss an die eigenen Erfordernisse angepasst werden
$sql="SELECT * FROM ".$tableName." ORDER BY id DESC LIMIT 0,$lines";

//Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss.
////ENDE KONFIGURATION

//DOCUMENT_ROOT wird automatisch ermittelt
$siteRoot= substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"],
"",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/"zwinkern+1);

//Erzeugen des RSS-Inhaltes:
$rssHeader="<?xml version='1.0' encoding='ISO-8859-1'?>
<rss version='0.91'>
<channel>
<title>".htmlentities($title)."</title>
<description>".htmlentities($description)."</description>
<language>".htmlentities($language)."</language>
<link>".htmlentities($link)."</link>
";
$rssFooter="</channel>
</rss>";
$dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error());
$setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error());
$result=mysql_query($sql,$dbLink) or die(mysql_error());
$content=$rssHeader;
while($row=mysql_fetch_array($result)){
$titel=substr ($row[$itemTitle], 0, 150); //$row anpassen! auch in der nächsten Zeile
$text=substr ($row[$itemText], 0, 500); //der Text darf höchstens 500 Zeichen lang sein
$itemLink="?content=news&submenue=home&ID=1"; //di
$content.="<item>
<title>".htmlentities($titel)."</title>
<description>".htmlentities($text)."</description>
<link>".htmlentities($itemLink)."</link>
</item>
";
}
$content.=$rssFooter;

//file wird geschrieben
$fh=fopen ($siteRoot.$filename.".rss", "w"zwinkern;
fputs ( $fh, $content);
fclose($fh);

//file wird umbenannt
rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml"zwinkern;
return;
}
?>
<html>
<head>
<title>SVA - Die Steierm&auml;rkische - VOEST Alpine - Kindberg - Web-Site - www.svakindberg.at</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" type="text/css" rel="stylesheet">
<link href="rss-feed.xml" rel="alternate" type="application/rss+xml" title="SVAK Newsfeed!">
<style type="text/css">
body {background-image:url(Bilder/svakindberg_02.jpg); background-repeat:repeat-x; background-color: #EBEBEB; font-family:Verdana, Arial, Helvetica, sans-serif;}
</style>
</head>

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-162
19.09.2007 15:33

1. Zensier dein mySQL Passwort
2. Das Script musst du nicht in die index-Datei einbinden, es reicht wenn die Datei aufgefrufen wird, wenn eine neue News veröffentlicht wurde.
3. mach mal error_reporting(E_ALL); ganz an den Anfang, direkt nach <?php

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-159
19.09.2007 15:35

Hab das ganze mal zensiert.

user-193
19.09.2007 18:02

jo, danke, hab ich total vergessen.

mhm, kann es sein dass ich einfach eine zu schwache php version hab?

Is das normal, dass beim erroreport nichts passiert?

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
Avatar user-162
19.09.2007 19:38

Original von user-193
mhm, kann es sein dass ich einfach eine zu schwache php version hab?

Mh... gibt ihm mal ein paar Aufbauvitamine? *SCNR*

hast du das ganze irgendwo online zum anschauen?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-193
19.09.2007 19:46

meinst du die seite?

www.svakindberg.at/web-site/rss-test.php

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!