![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 3 Dołączył: 28.12.2007 Skąd: Świdnik Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłem taką klasę
Kod <?php class kursyWalut { //Funkcja zwraca link do najnowszego pliku XML. W zaleznosci od opcjonalnego parametru //$typ funkcja zwraca link do pliku z kursem typu a lub c (domyslnie a) private function pobierzNazwe($typ='a') { //Pobieram plik dir.txt, wrzucam jego zawartosc do tabeli i odwracam kolejnosc //tabeli, aby na początku otrzymac najnowsze nazwy plikow XML $plik=array_reverse(file('http://nbp.pl/kursy/xml/dir.txt')); //Zwracam nazwe najnowszego pliku XML w zaleznosci od typu: a lub c if($typ=='c') {return 'http://nbp.pl/Kursy/xml/'.trim($plik[2]).'.xml';} else {return 'http://nbp.pl/Kursy/xml/'.trim($plik[0]).'.xml';} } //Funkcja zwraca obiekt z kursem walut po przetworzeniu go z formatu XML //do ktorego link podany jest w parametrze $adres private function parsujXML($adres) { return simplexml_load_file($adres); } //Funkcja pobiera aktualny kurs typu podanego w opcjonalnym parametrze //$typ (a lub c, domyslnie a) i zapisuje go w bazie danych public function pobierzKurs($typ='') { //Pobiera adres pliku z najnowszym kursem $plik=$this->pobierzNazwe($typ); //Zwraca kurs w postaci obiketu $kurs=$this->parsujXML($plik); //Serializuje obiekt $kurs=serialize($kurs); //Oczyszczanie zserializowanego obiketu z cudzyslowow $kurs=mysql_real_escape_string($kurs); //Zapis do bazy danych $result=mysql_query('INSERT INTO kursy VALUES(NULL,"'.$kurs.'")'); } } $sql=mysql_connect('localhost','',''); mysql_select_db('waluty'); $result=mysql_query('SELECT kurs FROM kursy WHERE id=2'); $row=mysql_fetch_array($result); $kurs=unserialize($row[0]); echo '<pre>'; print_r($kurs); echo '</pre>'; ?> Wyskakuje mi błąd Kod duzo razy taki error: Warning: unserialize() [function.unserialize]: Node no longer exists in C:\wamp\www\class.kursywalut.php on line 86 SimpleXMLElement Object Warning: print_r() [function.print-r]: Node no longer exists in C:\wamp\www\class.kursywalut.php on line 88 ( ) Mogę się jedynie domyślać, że chodzi tu o to, że gdy deserializuje obiekt to nie ma zdefiniowanej klasu SimpleXMLElement albo coś takiego. To są moje domysły. Proszę o pomoc i z góry dziękuję. -------------------- ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 6.06.2007 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Też dziś z tym walczyłem. Nie możesz serializować obiektu SimpleXML. Albo zapisujesz go jako asXML albo możesz pokombinować z konwersją na JSON.
-------------------- rabinek.pl
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 11:18 |