Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Własny kanał RSS
Forum PHP.pl > Forum > Przedszkole
szczalpi
Witam
Mam taki kod kanału rss, ale nie wiem czemu nie wyświetla mi go normalnie.
Poniżej podaje kod:
  1.  
  2.  
  3.  
  4. $db=mysql_connect('', '', '');
  5. mysql_select_db('', $db);
  6. ?>
  7.  
  8. <?php
  9. header("Content-Type: text/xml");
  10.  
  11. ?>
  12. <xml version="1.0" encoding="iso-8859-2">
  13. <rss version="2.0">
  14. <channel>
  15. <title></title>
  16. <link></link>
  17. <description></description>
  18.  
  19. <?
  20. $zapytanie = 'SELECT * FROM kody_pocztowe ORDER BY id DESC LIMIT 5';
  21. mysql_query('SET character_set_connection=utf8');
  22. mysql_query('SET character_set_client=utf8');
  23. mysql_query('SET character_set_results=utf8');
  24. $wynik = mysql_query($zapytanie) or die(mysql_error());
  25.  
  26. while($row = mysql_fetch_array($wynik))
  27. {
  28. echo ' <item>
  29. <title>'.$row["id"].'</title>
  30. <link>'.$row["kod_pocztowy"].'</link>
  31. <description>'.$row["miasta"].'</description>
  32.  
  33. </item>';
  34. }
  35. ?>
  36. </channel>
  37. </rss>
  38. </xml>

Wyświetlanie można sprawdzić pod adresemrss
Proszę o pomoc.
grzes999
Plik dobrze ci wyświetla. Teraz tylko ten plik xml musisz ostylować za pomocą XSLT.
szczalpi
Witam
Od czego trzeba zaczac ?
kayman
Kod
<xml version="1.0" encoding="iso-8859-2">
    <rss version="2.0">
        <channel>
            <title></title>
            <link></link>
            <description></description>


to wyswietl jako za pomoca php jako echo
klocu
Nic nie musisz stylować.
Na początek zacznij od sprawdzenia backendu bo póki co ten pliczek online generuje dodatkowy kawałek kodu, który nie pozwala przeglądarkom uznać go za plik prawidłowy według schematu xml.

Kod
<br />
<b>Warning</b>:  include(katalogstron/class/mysql.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in <b>/home/szczyp/public_html/www.ewypoczywaj.pl/rss/news_rss.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>:  include(katalogstron/class/mysql.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in <b>/home/szczyp/public_html/www.ewypoczywaj.pl/rss/news_rss.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Failed opening 'katalogstron/class/mysql.php' for inclusion (include_path='.') in <b>/home/szczyp/public_html/www.ewypoczywaj.pl/rss/news_rss.php</b> on line <b>2</b><br />


Po drugie to co generujesz nie jest zgodne ze schematem RSS, a jest jedynie jakimś pomieszanym XMLem.
RSS nie ma czegoś takiego jak:
Kod
<xml version="1.0" encoding="iso-8859-2">
tylko
Kod
<?xml version="1.0" encoding="iso-8859-2"?>

W związku z tym, że <xml> nie jest korzeniem to i nie może mieć zamknięcia </xml>.
Korzeniem jest zawsze <rss>, a całość zawsze zamyka </rss>
szczalpi
Zmieniłem troszkę.
  1. <?php
  2. header("Content-Type: text/xml");
  3. echo '<?xml version="1.0" encoding="iso-8859-2"?>
  4. <rss version="2.0">
  5. <channel>
  6. <title></title>
  7. <link></link>
  8. <description></description>';
  9.  
  10.  
  11. $zapytanie = 'SELECT * FROM kody_pocztowe ORDER BY id DESC LIMIT 5';
  12. mysql_query('SET character_set_connection=utf8');
  13. mysql_query('SET character_set_client=utf8');
  14. mysql_query('SET character_set_results=utf8');
  15. $wynik = mysql_query($zapytanie) or die(mysql_error());
  16.  
  17. while($row = mysql_fetch_array($wynik))
  18. {
  19. echo ' <item>
  20. <title>'.$row["id"].'</title>
  21. <link>'.$row["kod_pocztowy"].'</link>
  22. <description>'.$row["miasta"].'</description>
  23.  
  24. </item> ';
  25. }
  26. echo ' </channel>
  27. </rss>'; ?>


Niestety wywal dalej błąd.
  1. Błąd przetwarzania XML: deklaracja XML lub tekstu nie jest na początku jednostki
  2. Obszar: <a href="http://ewypoczywaj.pl/rss/news_rss.php" target="_blank">http://ewypoczywaj.pl/rss/news_rss.php</a>
  3. Numer wiersza: 2, kolumna 1:<?xml version="1.0" encoding="iso-8859-2"?>
markonix
Czemu mieszasz kodowanie? W MySql deklarujesz UTF, a w XML ISO..
Wydaje mi się, że normą w przypadku RSS jest UTF.
szczalpi
Zmieniłem na utf-8, ale dalej błąd.
kayman
masz kawalek mojego

Kod
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
echo '<rss version="2.0">'.PHP_EOL;
echo '    <channel>'.PHP_EOL;
echo '       <title>'.$title .'</title>'.PHP_EOL;
echo '      <link>'.$link .'</link>'.PHP_EOL;
echo '      <description>'.description($description) .'</description>'.PHP_EOL;
echo '      <lastBuildDate>'.date('D, d M Y G:i:s O').'</lastBuildDate>'.PHP_EOL;
                if (isset($_GET['sid'])) sid_items($sid);       // tu funkcje do items            
echo '   </channel>'.PHP_EOL;
echo'</rss>';
klocu
Cytat
Zmieniłem na utf-8


No nie bardzo, zmiana ta nie polega tylko na zmianie zapisu w deklaracji.
Wymaga to przekodowania wszystkich treści na docelowe kodowanie -> see php iconv

W sumie to my robimy diagnozę z doskoku.
Ale czemu samemu nie sprawdzisz - jest do tego narzędzie, powie ci dokładnie co dolega skryptowi pod względem niezgodności ze standardem.
http://validator.w3.org/appc/ -> check by url -> analize output -> corect code
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.