Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: simpleXML takie same tagi i ich wartości
Forum PHP.pl > Forum > XML, AJAX > XML
Regss
Witam. Posiadam taki plik xml:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2. <videodb>
  3. <movie>
  4. <title>8 Mila</title>
  5. <year>2002</year>
  6. <country>Niemcy</country>
  7. <country>USA</country>
  8. </movie>
  9. <movie>
  10. <title>9</title>
  11. <year>2009</year>
  12. <country>USA</country>
  13. </movie>
  14. <movie>
  15. <title>Aleksander</title>
  16. <year>2004</year>
  17. <country>Francja</country>
  18. <country>Holandia</country>
  19. <country>Niemcy</country>
  20. <country>USA</country>
  21. <country>Wielka Brytania</country>
  22. <country>Włochy</country>
  23. </movie>
  24. </videodb>


i taki kod php:

  1. <?php
  2. mysql_connect("localhost","root","vertrigo");
  3. mysql_select_db("xbmc6");
  4. $xml = simplexml_load_file('videodb.xml');
  5. $count = 1;
  6. foreach ($xml->movie as $val)
  7. {
  8. mysql_query ('INSERT INTO movie (`id`, `title`, `year`, `country`) VALUES ("'.$count.'", "'.$val->title.'", "'.$val->year.'", "'.$val->country.'");');
  9. $count++;
  10. }
  11. ?>


Chciałbym aby do pola country w bazie danych dodane zostały wszystkie kraje odzielone np. "/". Do tej pory dodaje mi tylko pierwszy tag a wszystkie powtórzone są omijane.

Tak wygląda cala tablica:
  1. SimpleXMLElement Object
  2. (
  3. [movie] => Array
  4. (
  5. [0] => SimpleXMLElement Object
  6. (
  7. [title] => 8 Mila
  8. [year] => 2002
  9. [country] => Array
  10. (
  11. [0] => Niemcy
  12. [1] => USA
  13. )
  14.  
  15. )
  16.  
  17. [1] => SimpleXMLElement Object
  18. (
  19. [title] => 9
  20. [year] => 2009
  21. [country] => USA
  22. )
  23.  
  24. [2] => SimpleXMLElement Object
  25. (
  26. [title] => Aleksander
  27. [year] => 2004
  28. [country] => Array
  29. (
  30. [0] => Francja
  31. [1] => Holandia
  32. [2] => Niemcy
  33. [3] => USA
  34. [4] => Wielka Brytania
  35. [5] => Włochy
  36. )
  37.  
  38. )
  39.  
  40. )
  41.  
  42. )
gargamel
z obiektu
  1. $val->country
robisz tablicę a następnie puszczasz ją przez implode
Regss
Właśnie nie wiem jak stworzyć tablice, tzn. czasem sam simpleXML tworzy tablice jeśli występuje więcej niż jeden kraj. a jak występuje tylko jeden to zapisuje go jako pojedynczą wartość i nie wiem jak to usystematyzować. Dodając do pętli implode i tak nie chce mi wyświetlić wszystkich wartości tylko pierwsze.
gargamel
  1. <?php
  2. mysql_connect("localhost","root","vertrigo");
  3. mysql_select_db("xbmc6");
  4. $xml = simplexml_load_file('videodb.xml');
  5. $count = 1;
  6. foreach ($xml->movie as $val)
  7. {
  8. $countryTab = array();
  9.  
  10. foreach( $val->country as $c ){
  11. $countryTab[] = (string)$c;
  12. }
  13.  
  14. mysql_query ('INSERT INTO movie (`id`, `title`, `year`, `country`) VALUES ("'.$count.'", "'.$val->title.'", "'.$val->year.'", "'. implode( '/', $countryTab ) .'");');
  15. $count++;
  16. }
  17. ?>
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-2024 Invision Power Services, Inc.