Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xml do sql
Forum PHP.pl > Forum > XML, AJAX > XML
Dex1987
Wiam jest jakis program który parsuje pliki xml do mysql? Chodzi mi ze wpisuje znaczniki np <nazwa> i dodaje to do odpowiedniego pola w mysql mozeto byc program exe (na windows).

Zgóry dzieki za odp, pozdrawiam dex.
Sh4dow
Ke questionmark.gif blink.gif

Po pierwsze musial bys miec jakis standart dokumentu, cos co okresla nazwe tabeli, nazwe kolumny, jak podawac wartosci.
Bez tego raczej nie czaje jak mozna by to zrobic. A tak wogole to jaki problem zrobic sobie prosty paraserek i przerzucac to do mysql'a tak jak chcesz ? Jesli nie znasz XML'a to zapraszam do manuala.
Dex1987
Wiem jak zrobic parser, ale to nie dla mnie tylko dla kumpla, a plik xml jest dosc rozbudowany i nie chce mi sie pisac, znalazlem taki program - "Navicat". Bardzo rozbudowany mozliwosc importu do bazy xms, txt, cvs i jeszcze kilka innych (sam znajduje znaczniki i pyta jaki i w jakie pole w bazie go dodac). Ponadto ma mozliwosc zarzadzania baza danych. Polecam.
Przemo`
Swoją drogą ciekawe, że tutaj na forum nie ma nic na ten temat. Również poszukuję skryptu który przerzuci bazę xml do sql, lecz jako skrypt php gdyż musi pracować na bieżąco (codzienna aktualizacja bazy) I o ile przy prostych bazach jest to banalne to przy rozbudowanych bazach z różną strukturą już nie, gdyż nie wystarczy sam parser ale jeszcze coś co stworzy strukturę tabeli. Czy naprawdę nikt tutaj nei miał do czynienia z czymś takim?
Na phpclasses.org znalazlem dwie klasy, jednak moga one wrzucac jedynie wpisy do tabeli.
Dex1987
masz racje, ciekawy temat i coraz czesciej slyszy sie o xml. mysle ze powinnismy sie tym bardziej zainteresowac.
aleksander
Skrypt którego szukacie był tematem artykułu w którymś numerze PHPSolutions ale nie pamietam w którym
Przemo`
A nie pamiętasz przypadkiem np nazwy tego skryptu albo czegoś unikalnego? smile.gif Na ich stronie nie widze artykułów a forum dyskusyjne dopiero się rozwija.
aleksander
http://www.phpsolmag.org/pl/modules/news2/...e.php?storyid=6


Przekazywanie danych między MySQL a XML, CSV i HTM
Tajny
Witam, najpierw wyciągnij z bazy dane mniej wiecej w taki sposób, oczywiście bardziej fachowy ( musisz miec DOM XML'a załadowanego jako moduł w php )

  1. <?
  2. $dbconnect = mysql_connect('localhost', 'root', '');
  3. mysql_select_db('serwisdb');
  4. $table_id = 'spedytorzy';
  5. $query = &#092;"SELECT * from $table_id\";
  6. $dbresult = mysql_query($query, $dbconnect);
  7. $doc = domxml_new_doc('1.0');
  8. $root = $doc->create_element('root');
  9. $root = $doc->append_child($root);
  10. while($row = mysql_fetch_assoc($dbresult)) {
  11. $occ = $doc->create_element($table_id);
  12. $occ = $root->append_child($occ);
  13. foreach ($row as $fieldname => $fieldvalue) {
  14. $child = $doc->create_element($fieldname);
  15. $child = $occ->append_child($child);
  16. /* $fieldvalue = mb_convert_encoding($fieldvalue,'UTF-8','ISO-8859-2'); 
  17. gdy nie chcesz zamieniac w wyniku kodowania nie uzywaj powyzszego, pozatym musis
  18.  miec multibyte string jako modul take w php aby powyzsze zadzialalo 
  19. */
  20. $value = $doc->create_text_node($fieldvalue);
  21. $value = $child->append_child($value);
  22.  } 
  23. } 
  24. @$xml_string = $doc->dump_mem(true);
  25. print($xml_string);
  26. ?>



schemat bazy tak wyglada
  1. Type 'help;' OR '\h' FOR help. Type '\c' TO clear the buffer.
  2.  
  3. mysql> USE serwisdb;
  4. DATABASE changed
  5. mysql> DESCRIBE spedytorzy;
  6. +-------------+--------------+------+-----+---------+----------------+
  7. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  8. +-------------+--------------+------+-----+---------+----------------+
  9. | IDSP | int(10) | | PRI | NULL | AUTO_INCREMENT |
  10. | SP_IDK_DANE | varchar(100) | YES | | NULL | |
  11. | SP_IDK_F | varchar(100) | YES | | NULL | |
  12. | SP_IDK_A | blob | YES | | NULL | |
  13. | SP_IDK_E | varchar(100) | YES | | NULL | |
  14. | SP_IDK_T | varchar(30) | YES | | NULL | |
  15. | SP_IDK_AW | blob | YES | | NULL | |
  16. | SP_IDK_M | varchar(30) | YES | | NULL | |
  17. +-------------+--------------+------+-----+---------+----------------+
  18. 8 rows IN SET (0.03 sec)
  19.  
  20. mysql>



a powyzszy skrypt pokaze cos takiego

  1. <?xml version="1.0" ?>
  2. - <root>
  3. - <spedytorzy>
  4.  <IDSP>3</IDSP>
  5.  <SP_IDK_DANE>Schenker</SP_IDK_DANE>
  6.  <SP_IDK_F>Schenker Logistics</SP_IDK_F>
  7.  <SP_IDK_A>adres</SP_IDK_A>
  8.  <SP_IDK_E>email</SP_IDK_E>
  9.  <SP_IDK_T>telefon</SP_IDK_T>
  10.  <SP_IDK_AW>blob</SP_IDK_AW>
  11.  <SP_IDK_M>miasto</SP_IDK_M>
  12.  </spedytorzy>
  13. - <spedytorzy>
  14.  <IDSP>4</IDSP>
  15.  <SP_IDK_DANE>Stolica</SP_IDK_DANE>
  16.  <SP_IDK_F>Stolica</SP_IDK_F>
  17.  <SP_IDK_A>Spółdzielcza 2</SP_IDK_A>
  18.  <SP_IDK_E>brak</SP_IDK_E>
  19.  <SP_IDK_T></SP_IDK_T>
  20.  <SP_IDK_AW>inne</SP_IDK_AW>
  21.  <SP_IDK_M>pryk</SP_IDK_M>
  22.  </spedytorzy>
  23. - <spedytorzy>
  24.  <IDSP>0</IDSP>
  25.  <SP_IDK_DANE>lokalny</SP_IDK_DANE>
  26.  <SP_IDK_F>lokalny</SP_IDK_F>
  27.  <SP_IDK_A />
  28.  <SP_IDK_E />
  29.  <SP_IDK_T />
  30.  <SP_IDK_AW />
  31.  <SP_IDK_M />
  32.  </spedytorzy>
  33.  </root>


teraz chyba parsing bedzie latwiejszy do wykonania. Widac przeciez znaczniki XML, czego chciec wiecej. Nic tylko obrabiac smile.gif

Pozdrawiam
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.