Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt pliku txt i zapis do bazy[MySQL][PHP]
Forum PHP.pl > Forum > Przedszkole
stefan1988
witam,
wyeksportowałem sobie plik .txt z symfoni handel i chciałbym go teraz wrzucić do mysql-a . Problem polega na tym że niedość że amatorsko coś tam pisałem w php to jeszcze na dodatek dawno.

Plik txt wygląda następująco (przykładowe dane wyeksportowane z symfoni):

  1. INFO{
  2. Nazwa programu ='Sage Symfonia Handel 2014' Symfonia Handel 2014
  3. Wersja_programu =200
  4. Wersja szablonu =3.1
  5. Kontrahent{
  6. id =-1199895893
  7. kod =DEMO_HM
  8. nazwa =Firma Demonstracyjna
  9. miejscowosc =Zamość
  10. ulica =Bazyliańska
  11. dom =19
  12. lokal =5
  13. kodpocz =22-400
  14. rejon =zamojskie
  15. nip =000-000-00-00
  16. tel1 =3321075
  17. tel2 =1844748
  18. fax =3321076
  19. email =demo@demo.com.pl
  20. www =
  21. }
  22. }
  23. Kontrahent{
  24. Notatka_Dl{
  25. opis =
  26. }
  27. id =65541
  28. guid =
  29. flag =0
  30. subtyp =0
  31. znacznik =65
  32. info =N
  33. osoba =
  34. kod =AGD Adam
  35. nazwa =AGD Adam
  36. miejscowosc =Zamość
  37. ulica =Wąska
  38. dom =90
  39. lokal =
  40. kodpocz =22-400
  41. rejon =lubelskie
  42. nip =879-23-23-465
  43. statusUE =0
  44. regon =
  45. pesel =
  46. osfiz =0
  47. tel1 =
  48. tel2 =
  49. fax =
  50. email =
  51. www =
  52. naglowek =
  53. nazwisko =Wieczorek
  54. imie =Adam
  55. bnazwa =PBK O/Zamość
  56. bkonto =14200310-634654627-270001-1
  57. negoc =N
  58. grupacen =255
  59. typks =Krajowy
  60. typ_naliczania =
  61. typ_ceny =
  62. upust =0.00
  63. limit =0
  64. limitkwota =0.00
  65. limitwaluta =
  66. stanpl =0.00
  67. stannl =0.00
  68. khfk =2
  69. zapas =
  70. krajKod =PL
  71. krajNazwa =Polska
  72. aktywny =1
  73. NazwaRodzaju =Kategoria B
  74. NazwaKatalogu =\@Kontrahenci\@Odbiorcy\@Miejscy
  75. poledod1 =Abacki Adam
  76. poledod2 =
  77. poledod3 =
  78. poledod4 =
  79. poledod5 =
  80. poledod6 =
  81. poledod7 =
  82. poledod8 =
  83. }
  84. Kontrahent{
  85. Notatka_Dl{
  86. opis =
  87. }
  88. id =65575
  89. guid =
  90. flag =0
  91. subtyp =0
  92. znacznik =0
  93. info =N
  94. osoba =
  95. kod =Agora
  96. nazwa =Agora Gazeta
  97. miejscowosc =Warszawa
  98. ulica =Nowy Swiat
  99. dom =55
  100. lokal =
  101. kodpocz =99-999
  102. rejon =mazowieckie
  103. nip =789-789-78-89
  104. statusUE =0
  105. regon =
  106. pesel =
  107. osfiz =0
  108. tel1 =
  109. tel2 =
  110. fax =
  111. email =
  112. www =
  113. naglowek =
  114. nazwisko =
  115. imie =
  116. bnazwa =
  117. bkonto =
  118. negoc =T
  119. grupacen =255
  120. typks =Krajowy
  121. typ_naliczania =
  122. typ_ceny =
  123. upust =0.00
  124. limit =0
  125. limitkwota =0.00
  126. limitwaluta =
  127. stanpl =0.00
  128. stannl =0.00
  129. khfk =15
  130. zapas =
  131. krajKod =PL
  132. krajNazwa =Polska
  133. aktywny =1
  134. NazwaRodzaju =Kontrahenci 
  135. NazwaKatalogu =\@Kontrahenci
  136. poledod1 =Dejmek Dariusz
  137. poledod2 =
  138. poledod3 =
  139. poledod4 =
  140. poledod5 =
  141. poledod6 =
  142. poledod7 =
  143. poledod8 =
  144. }
  145.  
  146.  



W zasadzie cała reszta się powtarza od momentu "Kontrahent{" tylko że z innymi wartościami oczywiście.

Jak dokładnie ułożyć odczyt tego pliku tak aby do danego kontrahenta przyporządkować i wyciągnąć z pliku takie dane jak:
- nazwa
- miejscowosc
- tel1

Jak połączyć się z bazą i otworzyć plik oraz jak wrzucić do bazy tez chyba wiem/pamiętam, ale mam problem z tym wyżej. Możecie mi coś mądrego podrzucić?
pozdrawiam
nospor
A nie mozesz go wyeksportowac w jakims normalnym formacie?
stefan1988
W normalnym tzn. jakim?nie mam jeszcze opanowanej tej symfonii na tyle żeby dużo wykombinować.

Udało mi się jeszcze wyeksportować jako XML ale mimo to zapisało go do pliku z rozszerzeniem .txt - niżej to co wyszło.

P.S. więc co z tym można zrobić i jak? pozdrawiam i z góry thx.

  1.  
  2. <?xml version="1.0" encoding="windows-1250"?>
  3. <FormatXML
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:noNamespaceSchemaLocation="eFaktura.xsd">
  6. <INFO>
  7. <Nazwa_programu>&apos;Sage Symfonia Handel 2014&apos; Symfonia Handel 2014</Nazwa_programu>
  8. <Wersja_programu>200</Wersja_programu>
  9. <Wersja_szablonu>3.1</Wersja_szablonu>
  10. <Kontrahent>
  11. <id>-1199895893</id>
  12. <kod>DEMO_HM</kod>
  13. <nazwa>Firma Demonstracyjna</nazwa>
  14. <miejscowosc>Zamość</miejscowosc>
  15. <ulica>Bazyliańska</ulica>
  16. <dom>19</dom>
  17. <lokal>5</lokal>
  18. <kodpocz>22-400</kodpocz>
  19. <rejon>zamojskie</rejon>
  20. <nip>000-000-00-00</nip>
  21. <tel1>3321075</tel1>
  22. <tel2>1844748</tel2>
  23. <fax>3321076</fax>
  24. <email>demo@demo.com.pl</email>
  25. <www></www>
  26. </Kontrahent>
  27. </INFO>
  28. <Kontrahent>
  29. <Notatka_Dl>
  30. <opis></opis>
  31. </Notatka_Dl>
  32. <id>65541</id>
  33. <guid></guid>
  34. <flag>0</flag>
  35. <subtyp>0</subtyp>
  36. <znacznik>65</znacznik>
  37. <info>N</info>
  38. <osoba></osoba>
  39. <kod>AGD Adam</kod>
  40. <nazwa>AGD Adam</nazwa>
  41. <miejscowosc>Zamość</miejscowosc>
  42. <ulica>Wąska</ulica>
  43. <dom>90</dom>
  44. <lokal></lokal>
  45. <kodpocz>22-400</kodpocz>
  46. <rejon>lubelskie</rejon>
  47. <nip>879-23-23-465</nip>
  48. <statusUE>0</statusUE>
  49. <regon></regon>
  50. <pesel></pesel>
  51. <osfiz>0</osfiz>
  52. <tel1></tel1>
  53. <tel2></tel2>
  54. <fax></fax>
  55. <email></email>
  56. <www></www>
  57. <naglowek></naglowek>
  58. <nazwisko>Wieczorek</nazwisko>
  59. <imie>Adam</imie>
  60. <bnazwa>PBK O/Zamość</bnazwa>
  61. <bkonto>14200310-634654627-270001-1</bkonto>
  62. <negoc>N</negoc>
  63. <grupacen>255</grupacen>
  64. <typks>Krajowy</typks>
  65. <typ_naliczania></typ_naliczania>
  66. <typ_ceny></typ_ceny>
  67. <upust>0.00</upust>
  68. <limit>0</limit>
  69. <limitkwota>0.00</limitkwota>
  70. <limitwaluta></limitwaluta>
  71. <stanpl>0.00</stanpl>
  72. <stannl>0.00</stannl>
  73. <khfk>2</khfk>
  74. <zapas></zapas>
  75. <krajKod>PL</krajKod>
  76. <krajNazwa>Polska</krajNazwa>
  77. <aktywny>1</aktywny>
  78. <NazwaRodzaju>Kategoria B</NazwaRodzaju>
  79. <NazwaKatalogu>\@Kontrahenci\@Odbiorcy\@Miejscy</NazwaKatalogu>
  80. <poledod1>Abacki Adam</poledod1>
  81. <poledod2></poledod2>
  82. <poledod3></poledod3>
  83. <poledod4></poledod4>
  84. <poledod5></poledod5>
  85. <poledod6></poledod6>
  86. <poledod7></poledod7>
  87. <poledod8></poledod8>
  88. </Kontrahent>
  89. <Kontrahent>
  90. <Notatka_Dl>
  91. <opis></opis>
  92. </Notatka_Dl>
  93. <id>65575</id>
  94. <guid></guid>
  95. <flag>0</flag>
  96. <subtyp>0</subtyp>
  97. <znacznik>0</znacznik>
  98. <info>N</info>
  99. <osoba></osoba>
  100. <kod>Agora</kod>
  101. <nazwa>Agora Gazeta</nazwa>
  102. <miejscowosc>Warszawa</miejscowosc>
  103. <ulica>Nowy Swiat</ulica>
  104. <dom>55</dom>
  105. <lokal></lokal>
  106. <kodpocz>99-999</kodpocz>
  107. <rejon>mazowieckie</rejon>
  108. <nip>789-789-78-89</nip>
  109. <statusUE>0</statusUE>
  110. <regon></regon>
  111. <pesel></pesel>
  112. <osfiz>0</osfiz>
  113. <tel1></tel1>
  114. <tel2></tel2>
  115. <fax></fax>
  116. <email></email>
  117. <www></www>
  118. <naglowek></naglowek>
  119. <nazwisko></nazwisko>
  120. <imie></imie>
  121. <bnazwa></bnazwa>
  122. <bkonto></bkonto>
  123. <negoc>T</negoc>
  124. <grupacen>255</grupacen>
  125. <typks>Krajowy</typks>
  126. <typ_naliczania></typ_naliczania>
  127. <typ_ceny></typ_ceny>
  128. <upust>0.00</upust>
  129. <limit>0</limit>
  130. <limitkwota>0.00</limitkwota>
  131. <limitwaluta></limitwaluta>
  132. <stanpl>0.00</stanpl>
  133. <stannl>0.00</stannl>
  134. <khfk>15</khfk>
  135. <zapas></zapas>
  136. <krajKod>PL</krajKod>
  137. <krajNazwa>Polska</krajNazwa>
  138. <aktywny>1</aktywny>
  139. <NazwaRodzaju>Kontrahenci </NazwaRodzaju>
  140. <NazwaKatalogu>\@Kontrahenci</NazwaKatalogu>
  141. <poledod1>Dejmek Dariusz</poledod1>
  142. <poledod2></poledod2>
  143. <poledod3></poledod3>
  144. <poledod4></poledod4>
  145. <poledod5></poledod5>
  146. <poledod6></poledod6>
  147. <poledod7></poledod7>
  148. <poledod8></poledod8>
  149. </Kontrahent>
  150.  
nospor
No i super. XML jest jak najbardziej ok.

Majac teraz ten XML odczytuj z niego co chcesz. Masz wiele klas do wyboru, np. DOM czy SimpleXML. Wszystko dobrze opisane w dokumentacji manuala
stefan1988
aha - no ok. Tylko tak jak mówiłem eksportowało go do XML ale i tak zapisuje to w pliku pod TXT.

Ale...
"Jak dokładnie ułożyć odczyt tego pliku tak aby do danego kontrahenta przyporządkować i wyciągnąć z pliku takie dane jak:"
- nazwa
- miejscowosc
- tel1

Kontrahentów jest dużo a w zasadzie zmienna "kontrahent" jest jedna, zmienia się jedynie id.

jak już pisałem coś tam robiłem ale dawno i amatorsko. Proszę o pokazanie czegoś "paluchem".pozdrawiam
nospor
Cytat
Tylko tak jak mówiłem eksportowało go do XML ale i tak zapisuje to w pliku pod TXT.
Nie liczy sie rozszerzenie, a zawartosc.

Cytat
jak już pisałem coś tam robiłem ale dawno i amatorsko
Ja tez jak juz pisalem, zajrzyj do dokumetnacji php. Masz tam bardzo fajnie opisane i podane na przykladach
http://pl1.php.net/manual/en/book.simplexml.php

O calej masie artow w google juz nie wpsominajac
https://www.google.pl/search?client=opera&a...channel=suggest
stefan1988
ok. dzięki za info. zobaczymy co mi z tego wyjdzie. W razie W. będę pisał. pozdrawiam i dzięki.

no jest to pomocne bo sugeruję się tym manual php - Simple XML

z tym że:
1: muszę zmieniać rozszerzenie pliku z palca na PHP
2: dodawać do treści XML'a
  1. $xmlstr = <<<XML
  2. <?xml version='1.0' standalone='yes'?>


3:muszę dodać tak jakby jedną klamrę nad kontrahentami tzn.:

  1. <klamra>
  2. <Kontrahent>
  3. </Kontrahent>
  4.  
  5. <Kontrahent>
  6. </Kontrahent>
  7.  
  8. <klamra>


Wtedy wyświetli mi to co chcę z pliku poprzez pętlę:

  1. include 'tekst.php';
  2.  
  3. $movies = new SimpleXMLElement($xmlstr);
  4.  
  5. //echo $movies->Kontrahent[0]->tel1;
  6.  
  7.  
  8. /* For each <character> node, we echo a separate <name>. */
  9. foreach ($movies->Kontrahent as $character) {
  10. echo $character->tel1, ' played by ', $character->actor, PHP_EOL;
  11. }


Ale najlepiej chyba by to było jakos do tablicy czy coś walnąć?-bo pewnie chodzi o to żeby każdy kontrahent był pod innym id prawda?
Jak to zrobić?
pozdrawiam

nospor
Jak cchesz to mozesz do tablicy. Nikt bogatemu nie broni wink.gif

  1. $tab = array();
  2. foreach ($movies->Kontrahent as $character) {
  3. $tab[] = array(
  4. 'id'=> $character->id,
  5. 'tel1'=> $character->tel1,
  6. //reszta pol
  7. );
  8.  
  9. }
  10. print_r($tab);
stefan1988
witam,
do bazy ładuję to bez problemu ale jak zrobić np update w połączeniu z insertem czy lepiej jakiś replace bo to co mam nie działa tzn nie podmienia mi wpisów i dodaje ciągle nowe do bazy zamiast je podmieniać bo są takie same.

  1.  
  2. foreach($movies->Kontrahent as $character)
  3. {
  4. $tab[] = array('nazw.'=> $character->nazwisko,'tel'=> $character->tel1);
  5.  
  6.  
  7. //echo $character->nazwisko[$i] . ' ' . $character->tel1[$i] ;
  8. //echo '<br />';
  9. echo("INSERT INTO kontrahent(imie, telefon) VALUES('$character->nazwisko', '$character->tel1')");
  10. echo $f++;
  11. $ins = mysql_query("INSERT INTO kontrahent(imie, telefon) VALUES('$character->nazwisko', '$character->tel1')");
  12. if($ins) echo "Rekord został dodany poprawnie";
  13. else echo "Błąd nie udało się dodać nowego rekordu";
  14. echo '<br />';
  15.  
  16.  
  17.  
  18.  
  19.  
  20. echo ("UPDATE kontrahent SET imie = '$character->nazwisko' WHERE imie='$character->nazwisko' ");
  21.  
  22. $ins = mysql_query ("UPDATE kontrahent SET imie = '$character->nazwisko' WHERE imie='$character->nazwisko' ");
  23. if($ins) echo "ZAKTUALIZOWANO";
  24. else echo "Błąd AKTUALIZACJI";
  25. echo '<br />';
  26.  
  27.  
  28.  


nospor
Jesli pole IMIE to unikatowa nazwa, po ktorej identyfikujesz caly rekord, to zaloz na to klucz unikalny.
Nastepnie robisz INSERT INTO.... ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.6/en/ins...-duplicate.html
stefan1988
Witam,
wszystko co potrzebowałem do tej pory jakoś poszło tzn.:
1:skrypt czyta wygenerowanego xml-a (fakt faktem narazie na sztywno jest on na serwerze bo podane są ścierzki a ten xml trzeba ładować bo się zmienia-temat na później)
2:rozróżnia telefony tzn komórkę od stacjonarnego
3:ładuje do bazy w odpowiednie miejsca wskazane dane
4: wysyła sms-y na pobrane z bazy tel. kom.

Chciałbym teraz zrobić coś takiego:

zależne selecty jQuery

Dokumentacja i w zasadzie gotowiec tego

z tym, że :
OBRAZOWO





TŁUMACZENIE wink.gif :
5:
Na 1 img 2 checkbox-y - możliwe zaznaczenie tylko jednego - jeśli "WYŚLIJ DO WSZYSTKICH" czyli ten po lewo to wysyła sms-y na wszystkie nr-y z bazy (pkt.4 wyżej), natomiast jeśli zaznaczymy checkbox-a 2 "WYBIERZ Z LISTY" pojawiają sie pod spodem okna z selectami "ZALEŻNYMI SELECTAMI"

6:
a)LISTA MIEJSCOWOŚCI:
- wysyła do wybranych miejscowości(do wszystkich osób z wybranych miejscowości) poprzez zaznaczenie checkbox-ów z boku i poprzez przycisk "WYŚLIJ"-dopiero wtedy wysyła
- wybieramy w 1-wszym selekcie miejscowość(tylko jedną) -> pokazuje się następne okno z osobami (numerami tel. z wybranej miejscowości)- i ta sama, sytuacja wyślij do wybranych poprzez zaznaczenie checkbox-ów poprzez przycisk "WYŚLIJ" lub też checkbox "wyślij do wszystkich z miejscowości np. A"

Chciałbym połączyć Auto-populate multiple select boxes - z linku wyżej - z tymi checkbox-ami z tym że narazie moja wiedza się skończyła i nie wiem jak ruszyć. proszę o pchnięcie mnie w dobrym kierunku ale takie bardzo obrazowe bo tu już będzie wyższa półka bynajmniej dla mnie. pozdrawiam







Znalazłem coś co mogłoby wyglądać w ten deseń jak moja myśl tylko tu ulepszyc/przerobić pod siebie. Może ma ktoś namiar na jakiś "gotowiec" - coś podobnego?

Zapomniałem dodać linku heh...

Dynamic Forms

Ogarnięte...co chciałem to uzyskałem/zakodowane.

Polecam - sms-API - rejestracja
Wszystko jasne i czytelne - miła obsługa i szybkie podłączenie API do swojej aplikacji.
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.