Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL][PHP]Wyświetlanie rss
Forum PHP.pl > Forum > Przedszkole
viamarimar
Mam taki skrypt odpowiedzialny za rss. Powiem tak jakiś czas temu dzialal bo przeciez nie bede sprawdzal codziennie czy rss dziala.

Teraz pokazuje blad:

  1. Błąd przetwarzania XML: deklaracja XML lub tekstu nie jest na początku jednostki
  2. Obszar: <a href="http://www.xxxxxxxxxxxxx/guest/rss.php" target="_blank">http://www.xxxxxxxxxxxxx/guest/rss.php</a>
  3. Numer wiersza: 2, kolumna 2: <?xml version="1.0" encoding="utf-8"?>
  4. --------^


Kiedyś jak było coś podobnego to chodziło o kodowanie utf ale przeciez nic nie bylo zmieniane jest ustawione kodowanie utf8 bez boom.
Jeszcze gdzies slyszalem ze jakies spacje sa dosc istotne ale nie wiem czy i gdzie ten probolem ew moze byc

Wie ktos o co moze chodzic?
  1. <?php
  2. header("Content-Type: text/xml");
  3. $file='../ustawienia/c_on.fig.php';
  4. if (file_exists($file)) {
  5. include($file);
  6. }
  7. else{
  8. echo "Nie można załączyć $file!";
  9. }
  10. $zapytanie = 'SELECT * FROM news WHERE aktywny="1" ORDER BY data DESC LIMIT 15';
  11.  
  12. $wynik= mysql_query($zapytanie) or die(mysql_error());
  13.  
  14.  
  15. echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n";
  16. echo "<rss version=\"2.0\">\n ";
  17. echo "<channel>\n";
  18.  
  19. echo " <title>Ogłoszenia</title>\n";
  20. echo " <link>Adres URL</link>\n";
  21. echo "<description> </description>\n";
  22. echo "<language>pl</language>\n";
  23. echo "<copyright>Copyright Š Firma</copyright>\n";
  24. echo "<lastBuildDate>".date("r")."</lastBuildDate>\n";
  25. echo "<image>\n";
  26. echo "\t<title>Logo</title>\n";
  27. echo "\t<url>".$hostUrl."/images/logo.png</url>\n";
  28. echo "\t<link>".$hostUrl."</link>\n";
  29. echo "<width>100</width>\n";
  30. echo "<height>100</height>\n";
  31. echo "</image>\n";
  32.  
  33. while($row = mysql_fetch_array($wynik))
  34. {
  35. echo "<item>\n";
  36. echo "<title>".$row["tytul"]."</title>\n";
  37. echo "<author>".htmlspecialchars($row["login"])."</author>\n";
  38. echo "<link>".$hostUrl."/?s=newsc&amp;a=wys&amp;id=".$row["id"]."</link>\n";
  39. echo "<description>".$row["tytul"]."</description>\n";
  40. echo "<pubDate>".date($row["data"])."</pubDate>\n";
  41. echo "</item>\n\n";
  42. }
  43. echo "</channel>\n</rss>\n";
  44.  
  45. ?>
  46.  
  47.  
com
do xmla masz np http://php.net/manual/en/book.simplexml.php bo tak to jest szukanie igły w stogu siana wink.gif

z komunikatu o błędzie wynika iż masz coś w pierwszej lini a nie powinno tam być, za komentuj header na chwile i sprawdź wink.gif
viamarimar
Nie bardzo wiem jak ma mi to pomoc to simple xml


Cos takiego zwraca:
  1. Adres URL pl Copyright Š Firma Tue, 30 Dec 2014 00:27:12 +0100 http://www.x/images/logo.png http://www.x 100 100 123456 http://x/?s=newsc&a=wys&id=111 Typowy test ogloszenia 2014-12-29 23:02:57 root http://www.x/?s=newsc&a=wys&id=110 test 2014-12-29 14:54:36 root http://www.x/?s=newsc&a=wys&id=109 gfgfdg 2014-12-26 04:03:59 root http://wwwx.pl/?s=newsc&a=wys&id=100 asd 2014-12-18 01:18:44 root http://www.x/?s=newsc&a=wys&id=99 asdasdtest 2014-12-18 01:18:25 root http://www.x/?s=newsc&a=wys&id=98 asdasdasd 2014-12-18 01:18:05

questionmark.gifquestionmark.gif

Tylko wczesniej byl ten header i dzialalo. On musi tam byc chyab zeby rss dzialal


//jezeli to cos zmienia to tak mi sie zdaje ze jedyna zmiana jaka wproadzalem w pliku to

bylo

  1. $file='ustawienia/c_on.fig.php';


zrobilem bo inna sciezka teraz jest

  1. $file='../ustawienia/c_on.fig.php';
com
tak iż zamiast robić echo i pisać to jako tekst zbudujesz całego xmla poleceniami, tak musi być header ale on maskuje błędy, a problemem jest najprawdopodobniej kodowanie

no i wszytko jasne przy tej zmianie zmieniło Ci się kodowanie z utf8 bez bom na te z bom smile.gif

widać to chociażby tutaj :
  1. echo "<copyright>Copyright Š Firma</copyright>\n";
viamarimar


Tworze plik w taki sposob
  1. if(file_put_contents($file,$zawartosc))
  2. {


Zmienna zawartosc to plik konfiguracyjny

blad polega na tym ze on zaczyna od drugiej lini jest jakis myk zeby wpisywal do pliku od pierwszej lini?
com
plik musi być pusty to po pierwsze po drugie on nie zaczyna od 2 lini zapewne w zawartość masz dodany biały znak wink.gif

zrób tak
  1. if(file_put_contents($file,trim($zawartosc)))
viamarimar
To jest zawrtosc, nie ma co ukrywac za bardzo.. nie jakis przerw

  1. $zawartosc='<?php
  2. $db = "'.$_POST[db].'";'.'
  3. $db_user = "'.$_POST[db_user].'";
  4. $db_pass = "'.$_POST[db_pass].'";
  5. $db_name = "'.$_POST[db_name].'";'. '
  6. $polaczenie = mysql_connect($db, $db_user, $db_pass);
  7. if (!$polaczenie) {
  8. die("Not connected : " . mysql_error());
  9. }
  10.  
  11. $db_select = mysql_select_db($db_name,$polaczenie);
  12. if (!$db_select) {
  13. die ("Can\'t use".$db_name." : " . mysql_error());
  14. }
  15. $hostUrl="http://xxx";
  16. mysql_query("SET NAMES utf8");
  17. mysql_query("SET collation_connection = utf8_polish_ci");
  18. mysql_query("SET character_set_connection=utf8");
  19. mysql_query("SET character_set_client=utf8");
  20. mysql_query("SET character_set_results=utf8");
  21. ?>'; //zawartość pliku


trim nic nie zmienil i tak zaczyna od drugiej lini
com
masz tu jakąś magie, ta zmienna jakiemu celu ona służy? bo skoro masz to tak jak tu to to jest tekst który sie nie wykona smile.gif
viamarimar
ot cala magia. i plik sie tworzy tylko czemu od 2 lini?

no i file to adres oczywiscie

  1. if(file_put_contents($file,trim($zawartosc)))
  2. {
  3. // Odczyt i zapis dla właściciela, żadnych praw dla innych
  4. if(chmod($file, 0666))
  5. {
  6. echo '<div class="col-xs-8">Stworzono plik oraz nadano prawa dostępu</div>';
  7. }
  8. else
  9. {
  10. echo '<div class="col-xs-8">Stworzono plik jednak nie udało się nadać praw dostępu</div>';
  11. }
  12. }
  13. else
  14. {
  15. echo '<div class="col-xs-8">Nie udało się stworzyć pliku</div>';
  16. }
com
nwm czemu Ci coś tworzy od 2 lini, spr to :
  1. <?php
  2. $_POST['db'] = 'localhost';
  3. $_POST['db_user'] = 'root';
  4. $_POST['db_pass'] = '';
  5. $_POST['db_name'] = 'test';
  6. $zawartosc='<?php
  7. $db = "'.$_POST['db'].'";'.'
  8. $db_user = "'.$_POST['db_user'].'";
  9. $db_pass = "'.$_POST['db_pass'].'";
  10. $db_name = "'.$_POST['db_name'].'";'. '
  11. $polaczenie = mysql_connect($db, $db_user, $db_pass);
  12. if (!$polaczenie) {
  13. die("Not connected : " . mysql_error());
  14. }
  15.  
  16. $db_select = mysql_select_db($db_name,$polaczenie);
  17. if (!$db_select) {
  18. die ("Can\'t use".$db_name." : " . mysql_error());
  19. }
  20. $hostUrl="http://xxx";
  21. mysql_query("SET NAMES utf8");
  22. mysql_query("SET collation_connection = utf8_polish_ci");
  23. mysql_query("SET character_set_connection=utf8");
  24. mysql_query("SET character_set_client=utf8");
  25. mysql_query("SET character_set_results=utf8");
  26. ?>';
  27. $file = 'x.php';
  28. if(file_put_contents($file,trim($zawartosc)))
  29. {
  30. // Odczyt i zapis dla właściciela, żadnych praw dla innych
  31. if(chmod($file, 0666))
  32. {
  33. echo '<div class="col-xs-8">Stworzono plik oraz nadano prawa dostępu</div>';
  34. }
  35. else
  36. {
  37. echo '<div class="col-xs-8">Stworzono plik jednak nie udało się nadać praw dostępu</div>';
  38. }
  39. }
  40. else
  41. {
  42. echo '<div class="col-xs-8">Nie udało się stworzyć pliku</div>';
  43. }


i znajdź różnice u siebie, bo ten kod tworzy dobrze ten plik smile.gif
viamarimar
to samo...

a jakby urzyc

  1. $plik = fopen("plik_testowy.txt","r");


tylko nie wiem jak w to zawrtosc wcisnac

bo niby r zapewnia od poczatku pliku zapis
com
nie rozumiemy się widać, to rozwiązanie masz dobre i nie tu leży błąd, bo stworzyłem tym skryptem plik x.php który sie zaczyna poprawie od 1 lini, ale ten plik ma jakiś zwiazek z tym xml czy jak?
masz kodowanie bez bom ustawione?
viamarimar
caly czas edytowalem zle miejsce , chyba godzina zrobila swoje i tak dzieki , masakra ..

juz dziala rss i jest od 1 lini tongue.gif
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.