Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML] i [php] Eksport z wielu plików XML do tabeli MySQL.
ZooMaS
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.08.2006

Ostrzeżenie: (0%)
-----


Witam, mam następujący problem, otórz jestem kompletnie zielony w XML i troszke mniej zielony w php oraz mysql i muszę wykonać konwersje bazy danych z xml do mysql. Wygląda to tak, że mam około 2000 plików xmp, każdy z nich zawiera dane o jednym kliencie (Data rejestracji, Imię i Nazwisko, Firma, 4 linie adresu, kod pocztowy, email, telefon, 2 linie czy chce dostawać subskrypcje czyli yes/no, oraz info gdzie o nas usłyszał) i potrzebuję to przerzucić do bazy danych mysql, a nie uśmiecha mi się ręcznie linia po linie tego robić używając Navicata na przykład. Czy mógłybm po prosić, któregoś z bardziej doświadczonych kolegów o napisanie dla mnie skryptu czytającego te dane?

  1. <?php
  2.  
  3. $sql = mysql_connect(localhost, root, admin);
  4.  
  5. $a=1000;
  6. while($a<2171)
  7. {
  8.  
  9. $doc = DOMDocument::load('xml/subscriber','$a','.xml');
  10. $xpath = new DOMXPath($doc);
  11. $subscribers = $xpath->query('SubscriberRecord');
  12. foreach($subscribers as $SubscriberRecord) {
  13. $query = 'INSERT INTO subscribers SET
  14. `id` = ' . $xpath->query('id/text()', $subscriber)->item(0) . '
  15. `date` = ' . mysql_real_escape_string($xpath->query('date/text()', $subscriber)->item(0)) . '
  16. `name` = ' . mysql_real_escape_string($xpath->query('name/text()', $subscriber)->item(0)) . '
  17. `company` = ' . mysql_real_escape_string($xpath->query('company/text()', $subscriber)->item(0)) . '
  18. `AddresLine1` = ' . mysql_real_escape_string($xpath->query('AddresLine1/text()', $subscriber)->item(0)) . '
  19. `AddresLine2` = ' . mysql_real_escape_string($xpath->query('AddresLine2/text()', $subscriber)->item(0)) . '
  20. `AddresLine3` = ' . mysql_real_escape_string($xpath->query('AddresLine3/text()', $subscriber)->item(0)) . '
  21. `AddresLine4` = ' . mysql_real_escape_string($xpath->query('AddresLine4/text()', $subscriber)->item(0)) . '
  22. `PostCode` = ' . mysql_real_escape_string($xpath->query('PostCode/text()', $subscriber)->item(0)) . '
  23. `email` = ' . mysql_real_escape_string($xpath->query('email/text()', $subscriber)->item(0)) . '
  24. `DayTimeTel` = ' . mysql_real_escape_string($xpath->query('DayTimeTel/text()', $subscriber)->item(0)) . '
  25. `SubscribeComputerDR` = ' . mysql_real_escape_string($xpath->query('SubscribeComputerDR/text()', $subscriber)->item(0)) . '
  26. `SubscribeCBC` = ' . mysql_real_escape_string($xpath->query('SubscribeCBC/text()', $subscriber)->item(0)) . '
  27. `HearAboutUs` = ' . mysql_real_escape_string($xpath->query('name/text()', $subscriber)->item(0)) . '
  28. $sql->query($query);
  29. }
  30.  
  31. $a++;
  32. }
  33.  
  34. mysql_close{$sql};
  35.  
  36. ?>


zmontowałem coś takiego ale niestety pojawia się błąd:
Parse error: parse error, unexpected $end in C:\Program Files\xampp\htdocs\xml to mysql.php on line 37.


Poniżej wklejam plik pierwszy plik XML z którego chciałbym importować dane (nazwa subscriber1000.xml, ostatni plik ma numer 2171):
  1. <?xml version="1.0"?>
  2. <SubscriberRecord>
  3. <SubscriptionDate>
  4. <Date>06/19/03</Date>
  5. </SubscriptionDate>
  6. <Contact index="1">
  7. <Name>John Wesley</Name>
  8. <Company>Unlimited LTD</Company>
  9. <AddressLine1>1 Abbots Close</AddressLine1>
  10. <AddressLine2>Avenue</AddressLine2>
  11. <AddressLine3>Leicester</AddressLine3>
  12. <AddressLine4>UK</AddressLine4>
  13. <Postcode>LE5 1EH</Postcode>
  14. <EmailAddress>ja_wesley@yahoo.co.uk</EmailAddress>
  15. <DayTimeTel>0116 2745609</DayTimeTel>
  16. </Contact>
  17. <Options>
  18. <SubscribeComputerDR>Yes</SubscribeComputerDR>
  19. <SubscribeCBC>Yes</SubscribeCBC>
  20. </Options>
  21. <Feedback>
  22. <HearAboutUs>radio</HearAboutUs>
  23. </Feedback>
  24. </SubscriberRecord>


Czy ktoś byłby w stanie mi pomóc? Z góry dziękuje.

Ten post edytował ZooMaS 22.08.2006, 11:56:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Robiles ciagle copy - paste i ostatnia linie zamiast zakonczyc tak:
;
to konczysz tak:
. '

No nawet kolorowanie pokazuje ze jest blad....

Do reszty sie nie odnosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ZooMaS
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.08.2006

Ostrzeżenie: (0%)
-----


Rzeczywiście smile.gif no cóż.. praca po nocach i jej rezultaty..
  1. <?php
  2.  
  3. $sql = mysql_connect(localhost, root, admin);
  4.  
  5. $a=1000;
  6. while($a<1015)
  7. {
  8.  
  9. $doc = DOMDocument::load('xml/subscriber','$a','.xml');
  10. $xpath = new DOMXPath($doc);
  11. $subscribers = $xpath->query('SubscriberRecord');
  12. foreach($subscribers as $SubscriberRecord) {
  13. $query = 'INSERT INTO subscribers SET
  14. `id` = ' . $xpath->query('id/text()', $subscriber)->item(0) . '
  15. `date` = ' . mysql_real_escape_string($xpath->query('date/text()', $subscriber)->item(0)) . '
  16. `name` = ' . mysql_real_escape_string($xpath->query('name/text()', $subscriber)->item(0)) . '
  17. `company` = ' . mysql_real_escape_string($xpath->query('company/text()', $subscriber)->item(0)) . '
  18. `AddresLine1` = ' . mysql_real_escape_string($xpath->query('AddresLine1/text()', $subscriber)->item(0)) . '
  19. `AddresLine2` = ' . mysql_real_escape_string($xpath->query('AddresLine2/text()', $subscriber)->item(0)) . '
  20. `AddresLine3` = ' . mysql_real_escape_string($xpath->query('AddresLine3/text()', $subscriber)->item(0)) . '
  21. `AddresLine4` = ' . mysql_real_escape_string($xpath->query('AddresLine4/text()', $subscriber)->item(0)) . '
  22. `PostCode` = ' . mysql_real_escape_string($xpath->query('PostCode/text()', $subscriber)->item(0)) . '
  23. `email` = ' . mysql_real_escape_string($xpath->query('email/text()', $subscriber)->item(0)) . '
  24. `DayTimeTel` = ' . mysql_real_escape_string($xpath->query('DayTimeTel/text()', $subscriber)->item(0)) . '
  25. `SubscribeComputerDR` = ' . mysql_real_escape_string($xpath->query('SubscribeComputerDR/text()', $subscriber)->item(0)) . '
  26. `SubscribeCBC` = ' . mysql_real_escape_string($xpath->query('SubscribeCBC/text()', $subscriber)->item(0)) . '
  27. `HearAboutUs` = ' . mysql_real_escape_string($xpath->query('name/text()', $subscriber)->item(0));
  28. $sql->query($query);
  29. }
  30.  
  31. $a++;
  32. }
  33.  
  34.  
  35. ?>


ale po zamienieniu . ' na ; pojawia się błąd:

Parse error: parse error, unexpected '{' in C:\Program Files\xampp\htdocs\xml to mysql.php on line 35

Co tym razem?

Ten post edytował ZooMaS 22.08.2006, 12:05:52
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no ale: mysql_close{$sql};
od kiedy to { sluza do metod?
mysql_close($sql);

Jak dostaniesz po tej poprawce blad, to spojrz na linie i szukaj bledu w jej otoczeniu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ZooMaS
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.08.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $doc = DOMDocument::load('xml/subscriber'$a'.xml');
  3. ?>


Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\xampp\htdocs\xml to mysql.php on line 10

Jak wstawić tą zmienną jako numer pliku? Próbowałem pare kombinacji ale cały czas błąd w lini 10, któa jest powyżej..

problem polega na tym, że uczyłem się tylko turobo pascala, a php troszke inaczej działa i nieraz nie widze po prostu błędów, tak jak wyżej z tym nawiasem.. no cóż, to dopiero moje początki, także dzięki za wyrozumiałość smile.gif

Ten post edytował ZooMaS 22.08.2006, 12:15:57
Go to the top of the page
+Quote Post
bim2
post
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Może zacznij od poradnika php
  1. <?php
  2. $doc = DOMDocument::load('xml/subscriber'.$a.'.xml');
  3. ?>


--------------------
Go to the top of the page
+Quote Post
ZooMaS
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.08.2006

Ostrzeżenie: (0%)
-----


no właśnie przebrnąłem przez pare, ale nie widziałem nigdzie tej delkaracji plików ze zmienną, w sumie to myślałem że przecinkiem się oddziela, a nie kropką i stąd były problemy smile.gif byłbyś w stanie może mi polecić jakiś dobry kurs? ładnie opisany i z przykładowymi plikami opisanymi w kursie, byłbym bardzo wdzięczny.

no właśnie przebrnąłem przez pare, ale nie widziałem nigdzie tej delkaracji plików ze zmienną, w sumie to myślałem że przecinkiem się oddziela, a nie kropką i stąd były problemy smile.gif byłbyś w stanie może mi polecić jakiś dobry kurs? ładnie opisany i z przykładowymi plikami opisanymi w kursie, byłbym bardzo wdzięczny.

PS działa, tzn nie wywaliło błędu smile.gif Teraz jedyny problem polega na tym... że w bazie danych nie pojawiły się wpisy :/

Przejrzałem chyba wszystko co było dla mnie zrozumiałe, przetestowałem kod na tyle na ile się dało.. ale cały czas nie działa, czy jest ktoś z was w stanie powiedzieć mi dlaczego ten skrypt może nie działać? Sprawdzałem działanie poszczególnych koment w dokumentacji, ale niestety nie wszystko do końca rozumiem więc nie jestem w stanie wykryć ewentualnego błędu. Z tego co wytestowałem to wynika, że problem leży w samym otwarciu i przeczytaniu pliku - coś nie działa tak jak bym chciał, żeby działało.

  1. <?php
  2.  
  3. $sql = mysql_connect(localhost, root, admin);
  4.  
  5. $a=1000;
  6. while($a<1015)
  7. {
  8.  
  9. $doc = DOMDocument::load('xml/subscriber'.$a.'.xml');
  10. $xpath = new DOMXPath($doc);
  11. $subscribers = $xpath->query('SubscriberRecord');
  12. foreach($subscribers as $SubscriberRecord) {
  13. $query = 'INSERT INTO subscribers SET
  14. `date` = ' . mysql_real_escape_string($xpath->query('Date/text()', $subscriber)->item(0)) . '
  15. `name` = ' . mysql_real_escape_string($xpath->query('Name/text()', $subscriber)->item(0)) . '
  16. `company` = ' . mysql_real_escape_string($xpath->query('Company/text()', $subscriber)->item(0)) . '
  17. `AddresLine1` = ' . mysql_real_escape_string($xpath->query('AddresLine1/text()', $subscriber)->item(0)) . '
  18. `AddresLine2` = ' . mysql_real_escape_string($xpath->query('AddresLine2/text()', $subscriber)->item(0)) . '
  19. `AddresLine3` = ' . mysql_real_escape_string($xpath->query('AddresLine3/text()', $subscriber)->item(0)) . '
  20. `AddresLine4` = ' . mysql_real_escape_string($xpath->query('AddresLine4/text()', $subscriber)->item(0)) . '
  21. `PostCode` = ' . mysql_real_escape_string($xpath->query('PostCode/text()', $subscriber)->item(0)) . '
  22. `email` = ' . mysql_real_escape_string($xpath->query('EmailAddress/text()', $subscriber)->item(0)) . '
  23. `DayTimeTel` = ' . mysql_real_escape_string($xpath->query('DayTimeTel/text()', $subscriber)->item(0)) . '
  24. `SubscribeComputerDR` = ' . mysql_real_escape_string($xpath->query('SubscribeComputerDR/text()', $subscriber)->item(0)) . '
  25. `SubscribeCBC` = ' . mysql_real_escape_string($xpath->query('SubscribeCBC/text()', $subscriber)->item(0)) . '
  26. `HearAboutUs` = ' . mysql_real_escape_string($xpath->query('name/text()', $subscriber)->item(0));
  27. $sql->query($query);
  28.  
  29. }
  30.  
  31. $a++;
  32.  
  33. }
  34.  
  35. ?>


Ten post edytował ZooMaS 22.08.2006, 15:47:55
Go to the top of the page
+Quote Post
Martin24
post
Post #8





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 2.08.2005
Skąd: pomorskie

Ostrzeżenie: (30%)
XX---


Może ja się nie znam, ale gdzie jest zdefiniowana zmienna $subscriber? Ja mam podobny problem i też szukam rozwiązania.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:53