dynamisches RSS anbieten - Probleme

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dynamisches RSS anbieten - Probleme

    Hallo,

    ich möchte eine RSS-Feed (XML) anbieten...
    Das Script soll ein paar Sachen auf der DB holen und in die XML-Datei schreiben....

    Wenn ich aber http://www.domain.de/rss.xml aufrufe sehe ich den PHP-Code inklusive dem restlichen Text...!
    Der PHP code wird irgendwie nicht ausgewertet...(geparsed)

    Datei: rss.xml

    PHP-Code:
    <?php
    header
    ("Content-type: application/xml");

    echo 
    "<?xml version='1.0' encoding='iso-8859-1' ?>
    <rss version='2.0'>
    <channel>
    <title>titel</title>
    <description>beschreibung</description>
    <link>link-url</link>
    <language>de</language>"
    ;

    <?
    php
        
    include "sqldata.php";
        
    mysql_connect($sqlhost,$sqluser,$sqlpass) or die ("Keine Verbindung zur SQL-Datenbank!");
        
    mysql_seect_db($sqldb) or die ("SQL-Datenbank wurde nicht gefunden!");

        
    $query "SELECT * from news ORDER BY datum desc LIMIT 0,4";
        
    $result mysql_query($query) or die (mysql_error()); 
        
    $max=mysql_num_rows($result);

        for(
    $i=0;$i<$max;$i++){
            
    $datum=mysql_result($result,$i,"datum");
            
    $title=mysql_result($result,$i,"title");
            
    $text=mysql_result($result,$i,"text");
            
    $autor=mysql_result($result,$i,"autor");
            
    $web=mysql_result($result,$i,"web");

            
    $title=htmlspecialchars($title);
            
    $text=htmlspecialchars($text);
        
            echo 
    "<item>";
                echo 
    "<title>$title</title>";
                echo 
    "<link>$web</link>";
                echo 
    "<guid>$web</guid>";
                echo 
    "<pubDate>$datum</pubDate>";
                echo 
    "<description>[CDATA[$text]]</description>";
            echo 
    "</item>"
        }
    ?>
    </channel>
    </rss>
    Datei: .htaccess (damit die xml-Datei als PHP geparsed wird)

    Code:
    AddType application/x-httpd-php .php .xml
    Kriege die Sachen nicht zum laufen...
    Kann mir jemand einen Tip geben?

    danke,
    dreman
    Zuletzt geändert von dreman; 08.02.2006, 15:23.

  • #2
    hallo dreman,

    schreib doch die benötigten Daten einfach in eine TXT-Datei


    PHP-Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <rss version="0.91">
    <channel>

    <title></title>
    <link></link>
    <language></language>

    Daten aus DB auslesen

    </channel>
    </rss>
    und ändere die Dateiendung auf XML.
    Computernotdienst Eisleben
    Softwarelösung für Rechtsanwälte und Notare

    Kommentar


    • #3
      hi,

      danke für den Hinweis:

      Datei: rss2.php

      PHP-Code:
      <?php
      header
      ("Content-Type: application/rss+xml"); 
      echo 
      "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>";
      ?>

      <rss version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rss-2_0.xsd">
          <channel>
              <title>text.de Aktuelle Projekte</title>
              <link>[url]http://www.text.de/[/url]</link>
              <description>Beschreibung</description>
              <language>de-de</language>

              <copyright>test</copyright>
              <pubDate>Tue, 24 Jan 2006 15:00:00 EST</pubDate>
              <lastBuildDate>Tue, 24 Jan 2006 15:00:00 EST</lastBuildDate>
              <docs>[url]http://www.text.de[/url]</docs>
              <generator></generator>
              <managingEditor>info@text.de</managingEditor>
              <webMaster>info@text.de</webMaster>
              <image>
                  <url>[url]http://www.text.de/img/logo.jpg[/url]</url>
                  <title>SG-Logo</title>
                  <link>[url]http://www.text.de/[/url]</link>
                  <width>144</width>
                  <height>100</height>
                  <description>Logo</description>
              </image>


      <?php
          
      include "sqldata.php";
          
      mysql_connect($sqlhost,$sqluser,$sqlpass) or die ("Keine Verbindung zur SQL-Datenbank!");
          
      mysql_select_db($sqldb) or die ("SQL-Datenbank wurde nicht gefunden!");

          
      $query "SELECT * from sg_news ORDER BY datum desc LIMIT 0,4";
          
      $result mysql_query($query) or die (mysql_error()); 
          
      $max=mysql_num_rows($result);

          for(
      $i=0;$i<$max;$i++){
              
      $datum=mysql_result($result,$i,"datum");
              
      $title=mysql_result($result,$i,"title");
              
      $text.de=mysql_result($result,$i,"text");
              
      $autor=mysql_result($result,$i,"autor");
              
      $web=mysql_result($result,$i,"web");

              
      $title=htmlspecialchars($title);
              
      $text=htmlspecialchars($text);
              
              if(
      $web == ""){
                  
      $web="http://www.text.de";
              }    

              echo 
      "<item>";
                  echo 
      "<title>$title</title>";
                  echo 
      "<link>$web</link>";
                  echo 
      "<guid>$web</guid>";
                  echo 
      "<pubDate>Tue, 24 Jan 2006 15:00:00 EST</pubDate>";
                  echo 
      "<description>$text.de</description>";
              echo 
      "</item>"
          }
      ?>

          </channel>
      </rss>
      Diese Datei ist laut feedvalidator.org "Valid".
      Habe das Feed bereits mit einem Feed-Reader getestet... Läuft...

      ABER
      Die Datei soll "rss2.xml" heißen...
      Wie geht das?

      Wenn ich die Datei in ".xml" umbenenne, dann geht nix mehr...
      Sowohl in FeedReader noch wenn ich auf die XML-Datei zugreife über einen Browser....

      Was mach ich falsch?

      Gruss+Danke für Hilfe,
      dreman

      Kommentar


      • #4
        RSS-Feeds werden i.d.R. zyklisch von Feedreadern abgeholt und zwar ziemlich oft. Wenn sich dein Feedinhalt sehr oft (im Stundentakt) ändert, kannst du deinem Server (am besten über die .htaccess) sagen, er soll die Datei rss.xml als PHP parsen.

        Falls sich dein Feed nicht so oft ändert, du aber bei jedem Request das Script durchnudeln läßt, ist das Resourcenverschwendung. Dann böte sich ein Cronjob an, der eine generate_feed.php startet. Diese überschreibt dann rss.xml durch das neue Feed.
        Für außerplanmäßige Updates kannst du generate_feed.php einfach manuell aufrufen.

        (Übrigens kann man in RSS-Feeds auch ansagen, wie oft sich der Content ändert. Ordentliche Reader bieten dem User die Option, das zu berücksichtigen und eben nicht öfter als angegeben abzuholen.

        Nochwas: Es gibt haufenweise RSS-Klassen, mir fällt zwar jetzt nur noch Magpie ein, aber bestimmt gibts haufenweise. )

        Kommentar

        Lädt...
        X