Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][MySQL][PHP]przerobienie xml do sql
Forum PHP.pl > Forum > Przedszkole
Goldi
Witam,
mam taki oto fragment pliku xml:

  1. <publikacja>
  2. <produkty><id>6254</id><cena>20.90</cena><tytul>tyltul1</tytul><autor>Arnold Kom</autor><opis>Dowiedz się, jak ..</opis><img>http://test.pl/obraz.png</img><imgmini>http://test.pl/obrazek1.png</imgmini><link>http://adres.pl/testy.html</link><isbn>972-85-7452-820-3</isbn<cid>2121</cid></produkty>
  3. dalsza struktura podobna
  4. </publikacja>


Jak taki plik xml mogę zapisać do pliku .sql lub od razu do bazy danych ?

Zrobiłem takie coś szperając w google biggrin.gif :
  1. <?php
  2. $doc = DOMDocument::load('nowosci.xml');
  3. $xpath = new DOMXPath($doc);
  4. $publications = $xpath->query('publication');
  5. foreach($publications as $publication) {
  6. $query = 'INSERT INTO publications SET
  7. `id` = ' . $xpath->query('id/text()', $publication)->item(0) . '
  8. `tytul` = ' . mysql_real_escape_string($xpath->query('tytul/text()', $publication)->item(0)) . '
  9. `autor` = ' . mysql_real_escape_string($xpath->query('autor/text()', $publication)->item(0)) . '
  10. `opis` = ' . mysql_real_escape_string($xpath->query('opis/text()', $publication)->item(0)) . '
  11. `img` = ' . mysql_real_escape_string($xpath->query('img/text()', $publication)->item(0)) . '
  12. `imgmini` = ' . mysql_real_escape_string($xpath->query('imgmini/text()', $publication)->item(0)) . '
  13. `link` = ' . mysql_real_escape_string($xpath->query('link/text()', $publication)->item(0)) . '
  14. `isbn` = ' . mysql_real_escape_string($xpath->query('isbn/text()', $publication)->item(0)) . '
  15. `cid` = ' . mysql_real_escape_string($xpath->query('cid/text()', $publication)->item(0)) . '
  16. `cena` = ' . $xpath->query('cena/text()', $publication)->item(0);
  17. $sql->query($query);
  18. }
  19. ?>


lecz wywala mi taki błąd:
Catchable fatal error: Object of class DOMText could not be converted to string in /home/test/domains/adres.pl/public_html/t/xml.php on line 7

Jak to naprawić lub jak to zrobic smile.gif

prosze o pomoc jestem noobkiem nie leniuchem smile.gif


Pozdrawiam
skowron-line
Cytat(Goldi @ 4.12.2009, 14:29:36 ) *
Witam,
mam taki oto fragment pliku xml:[XML] pobierz, plaintext
  1. <publikacja>
  2. <produkty><id>6254</id><cena>20.90</cena><tytul>tyltul1</tytul><autor>Arnold Kom</autor><opis>Dowiedz się, jak ..</opis><img>http://test.pl/obraz.png</img><imgmini>http://test.pl/obrazek1.png</imgmini><link>http://adres.pl/testy.html</link><isbn>972-85-7452-820-3</isbn<cid>2121</cid></produkty>
  3. dalsza struktura podobna
  4. </publikacja>
[XML] pobierz, plaintext


  1. <li class="li2">$publications = $xpath->query('publication');

publication tego chyba nie ma w xml u.

Cytat
prosze o pomoc jestem noobkiem nie leniuchem smile.gif

wszyscy tak mówia a zazwyczaj jest odwrotnie.
zegarek84
to co @Skowron-line +...

dlaczego jeśli czegoś się uczysz dopiero to nie wyalertujes sobie wpierw fragment kodu do testów?? - akurat w php to echo b bądź przy tablicach print_r - zapamiętaj te jakże podstawowe funkcje

a teraz uwagi do kodu - skoro bawisz się DOM'em to czy tak ciężko zerknąć do przykłądów użycia funkcji i do komentarzy pod funkcjią - pomogę okrężną drogą - może coś zapamiętasz ;p

poszukaj gdzie u Ciebie brakuje metody nodeValue lub jeśli wolisz textContent
DOMXPath::query - ta metoda zwraca klasę DOMNodeList - napiszę, że jak pobieżnie patrzę na kod to dobrze się odwołujesz do jej elementów
no to teraz po nitce do kłębka pasowało by luknąć na klasę w manualu DOMNode...

możesz luknąć w manualu czego Ci brakuje w metodzie DOMNodelist:: item questionmark.gif - narazie tutaj widzę podstawowy błąd - daruj sobie google a przeglądaj manuala....
Goldi
  1. <publications>
  2. <publication><id>6582</id><cena>21.70</cena><tytul>To takie proste!</tytul><autor>Anna Opala</autor><opis>Pewność siebie, poczucie własnej wartości, samoakceptacja to główne tematy publikacji o tym, jak kierować swoim rozwojem osobistym.</opis><img>http://im.xo.pl/ks/To-takie-proste.png</img><imgmini>http://im.xo.pl/ks/mini/To-takie-proste.png</imgmini><link>http://www.zlotemysli.pl/mp3,1/publication/show/6582/To-takie-proste.html</link><isbn>978-83-7582-826-9</isbn><uri>To-takie-proste</uri><cid>2123</cid><oldid>0</oldid></publication>
  3. </publications>


Wkleiłem nie ten fragment xml.. ten jest poprawny

Mówię prawdę, że jestem noobkiem choć i tak każdy pomyśli, że jestem "leniem" i nie chce mi sie...

Trudno kto chce i zrozumie ten pomoże smile.gif

Z góry dziekuje.

Pozdrawiam
zegarek84
używasz w pętli metody ->item(0)... czytałeś w ogóle to co napisałem powyżej czy czekasz tylko na gotowca?questionmark.gif
Goldi
Nie przeczytałem bo pisałem wiadomości biggrin.gif i jeszcze nie było tej wiadomości jak pisałem smile.gif (odszedłem chwile od komputera i zaraz po tym odp)
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.