RSS Feed Problem

otAAAh

Grünschnabel
Hallo, ich habe wiedereinmal ein Problem mit meiner RSS Datei,

PHP:
<?php  
include("_mysql.php"); 
header("Content-type: application/xml"); 
echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>';  
?> 
<rss version="2.0"> 
  <channel> 
    <title>FIRSTBORN.de Feed</title> 
    <language>de-DE</language> 
    <?php 
    $query = "SELECT 'date' FROM 'webs_news' ORDER BY 'date' DESC LIMIT 0,1"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 
    ?> 
    <lastBuildDate><?php echo date("D, d M Y H:i:s T",$row['date']); ?></lastBuildDate> 
    <link>http://www.firstborn.de</link> 
    <description>News und Artikel zu Firstborn, eSport, Games und webSPELL</description> 
    <copyright>Copyright <?php date(y); ?></copyright> 
    <generator>firstborn.de</generator> 
    <image> 
      <url>http://otaaah.ot.ohost.de/webspell/design/1ani_navbox120x120.gif</url> 
      <title>FIRSTBORN.de</title> 
      <link>http://www.firstborn.de</link> 
    </image> 
     <?php 
      $query = "SELECT 'newsID','headline1','rubric','date','content1' FROM 'webs_news' ORDER BY 'date' DESC"; 
        $result = mysql_query($query); 
    while($row = mysql_fetch_assoc($result)) { 
    echo "    <item>\n"; 
    echo "      <title>".$row['headline1']."</title>\n"; 
    echo "      <link>http://www.firstborn.de/index.php?site=news_comments&newsID=".$row['newsID']."=de</link>\n"; 
    echo "      <category>".$row['rubric']."</category>\n"; 
    echo "      <pubDate>".date("D, d M Y H:i:s T",$row['date'])."</pubDate>\n"; 
    echo "      <description>".substr($row['content1'],0,200)."...</description>\n"; 
    echo "    <item>\n"; 
    }    
    ?> 
</channel> 
</rss>

Das ist meine RSS, und aussehen tuts dann so:
http://www.firstborn.de/rss.php

Mit ner xmö habe ich es auch schon versucht:
http://www.firstborn.de/rss.xml

Wieso setzt er die Items nicht?!
Vorab schonmal Dnake für jegliche Hilfe

nfg otAAAh
 

Gumbo

Erfahrenes Mitglied
Ich vermute dass die Datenbankabfragen fehlschlagen. Lass dir doch mal die MySQL-Fehlermeldung (mysql_error()-Funktion) ausgeben.
 

otAAAh

Grünschnabel
Also dann steht folgendes:

Code:
mysql_error(
Warning: Cannot modify header information - headers already sent by (output started at /kunden/184673_71739/webseiten/rss.php:2) in /kunden/184673_71739/webseiten/rss.php on line 4
de-DE
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /kunden/184673_71739/webseiten/rss.php on line 14
Thu, 01 Jan 1970 01:00:00 CET http://www.firstborn.de News und Artikel zu Firstborn, eSport, Games und webSPELL Copyright firstborn.de http://otaaah.ot.ohost.de/webspell/design/1ani_navbox120x120.gif http://www.firstborn.de
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /kunden/184673_71739/webseiten/rss.php on line 29
)
 

maeTimmae

Erfahrenes Mitglied
Falsch:
SQL:
SELECT 'date'
FROM 'webs_news'
ORDER BY 'date' DESC
LIMIT 0,1

Richtiger:
SQL:
SELECT `date`
FROM `webs_news`
ORDER BY `date` DESC
LIMIT 0,1

Hättest du dir die SQL-Fehlermeldung via [phpf]mysql_error[/phpf] ausgeben lassen, wärest du eventuell auch selbst drauf gekommen :)

Strings werden via einfache oder doppelte Anführungszeichen gekennzeichnet, Bezeichnungen in SQL jedoch mit `` (oder ohne, falls nicht eindeutig als Bezeichnung einer Datenbank, Tabelle oder Spalte zu deklarieren).

Edit: Das gilt übrigens für alle SQL-Queries... Deine zweite Abfrage müsstest du bitte selbst noch ändern.
 

otAAAh

Grünschnabel
Danke für die Antwort.

Aber da kann ich nur eins sagen: Augen auf im Starßenberkehr: habe die mysql-Fehlermeldung davor hingeschrieben gehabt.
Ich schreibe sie gerne aber nocheinmal hin, da dies nicht der Fehler war!

mysql_error(
Warning: Cannot modify header information - headers already sent by (output started at /kunden/184673_71739/webseiten/rss.php:1) in /kunden/184673_71739/webseiten/rss.php on line 3
de-DE
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /kunden/184673_71739/webseiten/rss.php on line 13
Thu, 01 Jan 1970 01:00:00 CET http://www.firstborn.de News und Artikel zu Firstborn, eSport, Games und webSPELL Copyright firstborn.de http://otaaah.ot.ohost.de/webspell/design/1ani_navbox120x120.gif http://www.firstborn.de
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /kunden/184673_71739/webseiten/rss.php on line 30
)


Für mich sind diese Fehlermeldungen wie ein Leeres Buch, somit muss ich euch noch einmal belästigen.

Hier nochmal mein code:
Code:
<?php  
include("_mysql.php"); 
header("Content-type: application/xml"); 
echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>';  
?> 
<rss version="2.0"> 
  <channel> 
    <title>FIRSTBORN.de Feed</title> 
    <language>de-DE</language> 
    <?php 
    $query = "SELECT `date` FROM `webs_news` ORDER BY `date` DESC LIMIT 0,1"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result)
    ?> 
    <lastBuildDate><?php echo date("D, d M Y H:i:s T",$row['date']); ?></lastBuildDate> 
    <link>http://www.firstborn.de</link> 
    <description>News und Artikel zu Firstborn, eSport, Games und webSPELL</description> 
    <copyright>Copyright <?php date(y); ?></copyright> 
    <generator>firstborn.de</generator> 
    <image> 
      <url>http://otaaah.ot.ohost.de/webspell/design/1ani_navbox120x120.gif</url> 
      <title>FIRSTBORN.de</title> 
      <link>http://www.firstborn.de</link> 
    </image> 
     <?php 
      $query = "SELECT ``newsID`,`headline1`,`rubric`,`date`,`content1` FROM `webs_news` ORDER BY `date` DESC"; 
        $result = mysql_query($query); 
    while($row = mysql_fetch_assoc($result)) { 
    echo "    <item>\n"; 
    echo "      <title>".$row[`headline1`]."</title>\n"; 
    echo "      <link>http://www.firstborn.de/index.php?site=news_comments&newsID=".$row[`newsID`]."=de</link>\n"; 
    echo "      <category>".$row[`rubric`]."</category>\n"; 
    echo "      <pubDate>".date("D, d M Y H:i:s T",$row[`date`])."</pubDate>\n"; 
    echo "      <description>".substr($row[`content1`],0,200)."...</description>\n"; 
    echo "    <item>\n"; 
    }    
    ?> 
</channel> 
</rss>
 
Zuletzt bearbeitet:

Gumbo

Erfahrenes Mitglied
Hast du denn schon den von maeTimmae genannten Hinweis befolgt? Und was steht denn in Zeile 1 der „rss.php“-Datei, dass es zu einer vorzeitigen Ausgabe führt?
 

otAAAh

Grünschnabel
Ohh sry, ich vergas zu erwähnen, dass ich mich gerade erst in PHP mySQL und Javascript einarbeite.

Ist mir auch klar, dass es was mit dem bereits gesendeten Header zu tun hat. Jedoch weiß ich noch nicht, was Jede mySQL Fehlerausgabe bedeutet.

Also bitte ich drum, mir das vllt etwas genauer zu erläutern.

Und entschuldigung, wenn meine letzte Antwort etwas pampig rüberkam.

Also... was bedeutet die Fehlermeldung, dass der Header bereits gesendet wurde... wie gesagt kann mit dem gehler nix Anfangen und beim googlen gab es zu diesem Thema ca. 15 verschieden Meinungen. Und als Leihe, ist man dann überfordert.

MfG
 

Gumbo

Erfahrenes Mitglied
MySQL-Syntaxfehlern führen leider nur zu Fehlermeldungen, die wie folgt lautend:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '[…]' at line 1
Dort gilt es dann die gesendete Datenbankabfrage auszugeben und manuell nach Fehlern zu prüfen.


Probier mal Folgendes:
PHP:
<?php

	ob_start();
	// provisorischer Inhaltstyp (Klartext)
	header('Content-Type: text/plain; charset=iso-8859-1');
	include '_mysql.php';
	echo '<?xml version="1.0" encoding="ISO-8859-1"?>';

?> 
<rss version="2.0">
  <channel>
    <title>FIRSTBORN.de Feed</title>
    <language>de-DE</language>
<?php

	$query = "SELECT `date` FROM `webs_news` ORDER BY `date` DESC LIMIT 1";
	$result = mysql_query($query) or die(mysql_error());
	$row = mysql_fetch_assoc($result);

?> 
    <lastBuildDate><?php echo date("D, d M Y H:i:s T", $row['date']); ?></lastBuildDate>
    <link>http://www.firstborn.de</link>
    <description>News und Artikel zu Firstborn, eSport, Games und webSPELL</description>
    <copyright>Copyright <?php echo date('y'); ?></copyright>
    <generator>firstborn.de</generator>
    <image>
      <url>http://otaaah.ot.ohost.de/webspell/design/1ani_navbox120x120.gif</url>
      <title>FIRSTBORN.de</title>
      <link>http://www.firstborn.de</link>
    </image>
<?php

	$query = "SELECT `newsID`, `headline1`, `rubric`, `date`, `content1` FROM `webs_news` ORDER BY `date` DESC";
	$result = mysql_query($query) or die(mysql_error());
	while( $row = mysql_fetch_assoc($result) ) {
		echo "    <item>\n";
		echo "      <title>".$row['headline1']."</title>\n";
		echo "      <link>http://www.firstborn.de/index.php?site=news_comments&newsID='.$row['newsID'].'=de</link>\n";
		echo "      <category>".$row['rubric']."</category>\n";
		echo "      <pubDate>".date("D, d M Y H:i:s T", $row['date'])."</pubDate>\n";
		echo "      <description>".substr($row['content1'], 0, 200)."...</description>\n";
		echo "    <item>\n";
	}

?> 
</channel> 
</rss>
<?php

	// korrekter Inhaltstyp wird gesetzt
	header('Content-Type: application/xml; charset=iso-8859-1');

?>
Und sorge dafür, dass am Anfang der Datei keine Leerzeile und kein Leerzeichen oder ähnliches steht, dass das „<?php“ also das Allererste ist.
 

otAAAh

Grünschnabel
Also die alten probs sind weg jetzt kommt folgende fehler meldung:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /kunden/184673_71739/webseiten/rss.php on line 38