Fehlermeldung im PHP Code für RSS Feed

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

  • Fehlermeldung im PHP Code für RSS Feed

    Hallo,

    ich möchte, News auslesen und diese dann als RSS anbieten. Dazu habe ich in diesem Forum ein PHP Code gefunden und diesen entspreched modifiziert.

    Allerdings bekomme ich die Fehlermeldung:
    PHP-Code:
    WarningCannot modify header information headers already sent 
    by 
    (output started at /www/htdocs/test/test/test.php:1in 
    /www/htdocs/test/test/news.php on line 9
    http
    ://www.test.de Beschreibung de-de You have an error 
    in your SQL syntaxcheck the manual that corresponds to your 
    MySQL server version 
    for the right syntax to use near '(created, '%a
    %
    %%%H:%i:%s') as created ORDER BY id DESC LIMIT 0,20' at line 1 



    Ich habe den folgenden Code benutzt:
    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>Name des Feeds</title>
            <link>http://www.test.de</link>
            <description>Beschreibung</description>
            <language>de-de</language>
            <?php
            $sqlQuery 
    "SELECT * from _news";
            
    $sqlQuery.= "DATE_FORMAT(created, '%a, %d %b %Y %H:%i:%s') as created";
            
    $dbRes mysql_query($sqlQuery." ORDER BY id DESC LIMIT 0,20")
                or die(
    mysql_error());
            while( 
    $dbRow mysql_fetch_object($dbRes) ) {
                echo 
    "<item>\n";
                echo 
    "<title>".$dbRow->titel."</title>\n";
                echo 
    "<link>".ABSPATH."/artikel.php?id=".$dbRow->id."</link>\n";
                echo 
    "<description><![CDATA[".$dbRow->head."]]></description>\n";
                echo 
    "<pubDate>".$dbRow->created." ".date("O")."</pubDate>\n";
                echo 
    "</item>\n";
            }
            
    ?>
        </channel>
    </rss>
    Kann mir vielleicht jemand helfen und mir einen Tipp geben, warum ich diese Fehlermeldung erhalte?

    Dafür bedanke ich mich bereits im Voraus

    Gruß
    Zuletzt geändert von belanglos; 07.02.2008, 16:01.

  • #2
    1. Regeln beachten (code umbrechen!). ich will nicht auf einem 21" monitor scrollen

    2. http://php-resource.de/forum/showthr...threadid=62965
    Freedom is a state of mind. Not a state in which we live.

    troxdev.ch | animefieber

    Kommentar


    • #3
      Schon mal vielen Dank!

      Ich hatte tatsächlich ein Leerzeichen vorm beginnenden PHP-Code.

      Leider wird mir jetzt kein Inhalt angezeigt. Demnach werden wohl die News nicht ausgelesen. Was kann das noch für Gründe haben?

      Kommentar


      • #4
        in your SQL syntax; check the manual that corresponds to your
        MySQL server version for the right syntax to use near '(created, '%a,
        %d %b %Y %H:%i:%s') as created ORDER BY id DESC LIMIT 0,20' at
        line 1
        Du hast noch einen MySql Fehler in deiner Query
        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


        • #5
          Leider wird mir jetzt kein Inhalt angezeigt.
          im browser und/oder quelltext??

          error_reporting oben??
          **********
          arkos
          **********

          Kommentar


          • #6
            Original geschrieben von jahlives
            Du hast noch einen MySql Fehler in deiner Query
            Obwohl ich gar keine Fehlermeldung erhalte? Kann es dann sein, dass nicht zur Datenbank verbunden wird?

            Kommentar


            • #7
              Original geschrieben von arkos
              im browser und/oder quelltext??

              error_reporting oben??
              Wenn ich die Datei jetzt aufrufe, sehe ich nur den üblichen RSS Feed Bildschirm im Firefox angezeigt. Und da wo die Titel mit Beschreibung stehen sollten, steht nur:

              Name des Feeds
              Beschreibung des Feeds

              Kommentar


              • #8
                Original geschrieben von belanglos
                Obwohl ich gar keine Fehlermeldung erhalte? Kann es dann sein, dass nicht zur Datenbank verbunden wird?
                jahlives hat ja nur aus der von dir geposteten Meldung zitiert. Falls du sie nicht mehr siehst, schau deinen Quelltext an.
                Ausserdem ist deine Abfrage so offensichtlich falsch, dass du nicht mal Debug-Ausgaben benötigen solltest, um das zu sehen. Und sonst lass dir halt die Abfrage mal ausgeben.
                Gruss
                H2O

                Kommentar


                • #9
                  Original geschrieben von H2O
                  jahlives hat ja nur aus der von dir geposteten Meldung zitiert. Falls du sie nicht mehr siehst, schau deinen Quelltext an.
                  Ausserdem ist deine Abfrage so offensichtlich falsch, dass du nicht mal Debug-Ausgaben benötigen solltest, um das zu sehen. Und sonst lass dir halt die Abfrage mal ausgeben.
                  Kannst du mir einen Tipp geben? Ich bin ein aboluter Anfänger.

                  Kommentar


                  • #10
                    Den Tipp hab ich dir eigentlich schon gegeben. Aber wenn du es nicht schaffst, deine Abfrage auszugeben; so sieht sie aus:
                    Code:
                    SELECT * from dfc_news DATE_FORMAT(created, '%a, %d %b %Y %H:%i:%s') as created ORDER BY id DESC LIMIT 0,20
                    Wahrscheinlich sollte sie aber etwa so aussehen (ich eliminiere mal das SELECT * FROM):
                    Code:
                    SELECT
                    	titel,
                    	id,
                    	head,
                    	DATE_FORMAT(created, '%a, %d %b %Y %H:%i:%s') AS created
                    FROM
                    	dfc_news
                    ORDER BY
                    	id
                    LIMIT
                    	0, 20;
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      Lass dir mal deine Query ausgeben, wo wie du sie an die DB schickst. Poste das Resultat hier
                      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


                      • #12
                        Original geschrieben von jahlives
                        Lass dir mal deine Query ausgeben, wo wie du sie an die DB schickst. Poste das Resultat hier
                        Meinst du direkt in der DB? Dort erhalte ich dann die entsprechenden News.

                        Kommentar


                        • #13
                          Lies den letzten Post von H2O, mach dir Gedanken darüber was dein Code hier macht:
                          PHP-Code:
                                 $sqlQuery "SELECT * from _news";
                          $sqlQuery.= "DATE_FORMAT(created, '%a, %d %b %Y %H:%i:%s') as created";
                          $dbRes mysql_query($sqlQuery." ORDER BY id DESC LIMIT 0,20"
                          ... und bau deine Query richtig um.
                          Meinst du direkt in der DB? Dort erhalte ich dann die entsprechenden News.
                          jahlives meint folgendes:
                          PHP-Code:
                          echo $sqlQuery " ORDER BY id DESC LIMIT 0,20"
                          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                          Kommentar


                          • #14
                            Ich habs sie ja schon ausgegeben (ausser dass du nachträglich den Tabellennamen geändert hast).
                            Offensichtlich liest du aber die Antworten gar nicht, sonst wüstest du auch wie sie aussehen sollte.
                            Gruss
                            H2O

                            Kommentar


                            • #15
                              Original geschrieben von H2O
                              Offensichtlich liest du aber die Antworten gar nicht, sonst wüstest du auch wie sie aussehen sollte.
                              Sorry, diesen Eindruck wollte ich nicht erwecken.

                              Ersetzte ich dann
                              $sqlQuery = "SELECT * from _news";
                              $sqlQuery.= "DATE_FORMAT(created, '%a, %d %b %Y
                              %H:%i:%s') as created";
                              durch
                              $sqlQuery = "SELECT titel, id, head, DATE_FORMAT(created, '%a, %d %b %Y %H:%i:%s') AS created FROM
                              dfc_news ORDER BY id LIMIT 0, 20";
                              ?

                              Und benötige ich dann überhaupt noch:

                              $dbRes = mysql_query($sqlQuery." ORDER BY id DESC
                              LIMIT 0,20")
                              or die(mysql_error());
                              komplett? Die Sortierung kann wahrscheinlich raus oder?

                              Ich habe den PHP-Code jetzt folgendermaßen abgeändert:

                              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>http://www.test.de</link>
                                      <description>Feed</description>
                                      <language>de-de</language>
                                      <?php
                                      $sqlQuery 
                              "SELECT titel, id, head, DATE_FORMAT(created, 
                              '%a, %d %b %Y %H:%i:%s') AS created FROM _news ORDER BY id 
                              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."/testphp=".$dbRow->id."</link>\n";
                                          echo 
                              "<description><![CDATA[".$dbRow->head."]]></description>\n";
                                          echo 
                              "<pubDate>".$dbRow->created." ".date("O")."</pubDate>\n";
                                          echo 
                              "</item>\n";
                                      }
                                      
                              ?>
                                  </channel>
                              </rss>
                              Zuletzt geändert von belanglos; 07.02.2008, 18:25.

                              Kommentar

                              Lädt...
                              X