Fehlermeldung im PHP Code für RSS Feed

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

  • #16
    Der nachfolgende Code scheint zu funktionieren. Ich habe jetzt nur folgenden Probleme:
    1. Wie bekomme ich es hin, dass ich bei <pubDate>".$dbRow->date."</pubDate> das Datum als "RFC-822 date-time" formatiert wird_

    2. Ich habe ein Problem mit dem Link. Im Link zur News kommt bspw. "&" vor. Und laut XML-Spezifikation ist dies nicht erlaubt. Wie kann ich jetzt noch die News verlinken?

    PHP-Code:
    <?php
    define
    ("ABSPATH""http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']));

    $dbLink mysql_connect("***""***""***") or die(mysql_error());
    if( 
    $dbLink ) {
        
    mysql_select_db("***") or die(mysql_error());
    }

    header("Content-type: text/xml; charset=iso-8859-1");
    echo 
    "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";

    ?>
    <rss version="2.0">
        <channel>
            <title>TITEL</title>
            <link>[url]http://www.test.de[/url]</link>
            <description>Feed</description>
            <language>de-de</language>
            <?php
            $sqlQuery 
    "SELECT titel, id, head, date FROM _news ORDER BY id DESC LIMIT 0, 20";
            
    $dbRes mysql_query($sqlQuery)
                or die(
    mysql_error());
            while( 
    $dbRow mysql_fetch_object($dbRes) ) {
                echo 
    "<item>\n";
                echo 
    "<title>".$dbRow->titel."</title>\n";
                echo 
    "<link>".ABSPATH."</link>\n";
                echo 
    "<description><![CDATA[".$dbRow->head."]]></description>\n";
                echo 
    "<pubDate>".$dbRow->date."</pubDate>\n";
                echo 
    "</item>\n";
            }
            
    ?>
        </channel>
    </rss>

    Kommentar


    • #17
      1. würde ich direkt in mysql machen...
      Code:
      SELECT DATE_FORMAT(date, %a, %d %b %Y %H:%i:%s GMT) AS datum
      (btw. is "date" nicht reserviert? schau besser noch mal nach)!

      2. das & habe ich seinerzeit (lange nicht gexmlt ) immer ganz flauschig mit CDATA ausgegeben.... gibt aber vielleicht noch bessere wege
      **********
      arkos
      **********

      Kommentar


      • #18
        Wenn ich daraus

        Code:
         $sqlQuery = "SELECT titel, id, head, date DATE_FORMAT(date, %a, %d %b %Y %H:%i:%s GMT) AS date FROM
         dfc_news ORDER BY id DESC LIMIT 0, 20";
        mache, bekomme ich die Fehlermeldung:

        # 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 'DATE_FORMAT(date, %a, %d %b %Y %H:%i:%s
        GMT) AS date FROM dfc_news ORDER BY id D' at line 1
        Und wenn ich zwei Abfragen erstelle, wie z.B.:
        Code:
        $sqlQuery = "SELECT titel, id, head, date FROM dfc_news 
        ORDER BY id DESC LIMIT 0, 20";
        $sqlQuery = "SELECT DATE_FORMAT(date, %a, %d %b %Y 
        %H:%i:%s GMT) AS date";
        erhalte ich die Fehlermeldung:
        # 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 '%a, %d %b %Y %H:%i:%s GMT) AS date' at line
        1
        Also irgendwie scheint was mit dem Datum nicht zu passen. Nur was?

        Kommentar


        • #19
          sorry, kleiner faux pas (oder wie dat heißt) bei mir

          hochkommata rein, komma raus:
          Code:
          SELECT DATE_FORMAT(date, '%a %d %b %Y %H:%i:%s GMT') AS datum
          und fehler bei dir:
          nimm das erste unterstrichene date weg
          Code:
          SELECT date DATE_FORMAT(date, '%a %d %b %Y %H:%i:%s GMT') AS datum
                 ----
          **********
          arkos
          **********

          Kommentar


          • #20
            Fauxpas war schon richtig

            Muss ich daraus dann eine Abfrage machen oder in zwei packen? Wenn ich daraus:

            Code:
                    $sqlQuery = "SELECT titel, id, head, DATE_FORMAT(date, 
            '%a %d %b %Y %H:%i:%s GMT') AS datum FROM dfc_news ORDER BY 
            id DESC LIMIT 0, 20";
            mache, bekomme ich immer die Fehlermeldung:

            line 15, column 9: pubDate must be an RFC-822 date-time: (6 occurrences) [help]

            <pubDate></pubDate>

            Kommentar


            • #21
              sollte nu schon richtig sein (wenn ich das rcc-format richtig verstanden habe)

              du musst allerdings bedenken, dass in der jetzigen version das formatierte datum in 'datum' steht und nicht mehr in 'date'

              also NICHT:
              PHP-Code:
              echo "<pubDate>".$dbRow->date."</pubDate>\n"
              sondern:
              PHP-Code:
              echo "<pubDate>".$dbRow->datum."</pubDate>\n"
              **********
              arkos
              **********

              Kommentar


              • #22
                Hast recht Hat geklapppt.

                Nur jetzt sehe ich noch ein kleines Problem. In der News selber werden gewisse Sachen mit zum Beispiel BBCode formatiert. Diese werden jetzt auch mit angezeigt. Beispielsweise sieht man im RSS Feed [b] [url] oder ähnliches BBCode typische Zeichen. Habe ich ein Möglichkeit, diese Zeichen noch auszufiltern?

                Und ich habe noch eine Frage: Gibt es eine Möglichkeit, alles in eine Datei wie zum Beispiel test.xml auszugeben. Denn ich habe sonst die Befürchtung, dass das zu viele Zugriffe auf die Datenbank sein werden.

                Kommentar


                • #23
                  Beispielsweise sieht man im RSS Feed [b] [url] oder ähnliches BBCode typische Zeichen
                  Mit RegExp kein Problem
                  Code:
                  $pattern = '/\[.*\]/isU';
                  und preg_replace(). Als Ersatzstring gibst du '' (Leerstring) an

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #24
                    Und ich habe noch eine Frage: Gibt es eine Möglichkeit, alles in eine Datei wie zum Beispiel test.xml auszugeben. Denn ich habe sonst die Befürchtung, dass das zu viele Zugriffe auf die Datenbank sein werden.
                    file_put_contents - wieviele Zugriff sollens denn werden?
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #25
                      Schon mal einen fetten Dank an euch.

                      Original geschrieben von jahlives
                      Mit RegExp kein Problem
                      Code:
                      $pattern = '/\[.*\]/isU';
                      und preg_replace(). Als Ersatzstring gibst du '' (Leerstring) an

                      Gruss

                      tobi
                      Wie binde ich das denn am besten mit ein? Bin da gerade etwas ratlos wie ich das an welcher Stelle einbinde.


                      Original geschrieben von tontechniker
                      file_put_contents - wieviele Zugriff sollens denn werden?
                      An dieser Geschichte bastel ich später. Danke

                      Kommentar


                      • #26
                        Wie binde ich das denn am besten mit ein? Bin da gerade etwas ratlos wie ich das an welcher Stelle einbinde.
                        An dieser Stelle:
                        PHP-Code:
                        echo "<description><![CDATA[".$dbRow->head."]]></description>\n"
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar

                        Lädt...
                        X