Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] simplexml i serialize()
Forum PHP.pl > Forum > PHP
Tales
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ę.
xradar
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.
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.